From 745c643c2f900c8efeb0ac0a8ea3a519b3a790ac Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Fri, 26 Feb 2016 01:40:47 +0100 Subject: initial commit --- .gitignore | 3 +++ LICENSE | 21 +++++++++++++++++++++ Makefile | 38 ++++++++++++++++++++++++++++++++++++++ README | 40 ++++++++++++++++++++++++++++++++++++++++ dbfp.c | 31 +++++++++++++++++++++++++++++++ dbfp.h | 19 +++++++++++++++++++ dbfp_check.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 195 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README create mode 100644 dbfp.c create mode 100644 dbfp.h create mode 100644 dbfp_check.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0aa9426 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.swp +*.o +*.so diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0ec9e00 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Robin Krahl + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7b67ed2 --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ +CFLAGS = -std=c99 -pedantic -Wall -fPIC +CPPFLAGS = -D_XOPEN_SOURCE=700 + +ifneq ($(DEBUG), 1) + CFLAGS += -O2 + CPPFLAGS += -DNDEBUG +else + CFLAGS += -g + CPPFLAGS += -DDEBUG +endif + +CHECK_CFLAGS = $(shell pkg-config check --cflags) +CHECK_LDLIBS = $(shell pkg-config check --libs) + +.PHONY: all check clean + +all: libdbfp.so + +check: libdbfp.so dbfp_check + LD_LIBRARY_PATH=. ./dbfp_check + +clean: + $(RM) libdbfp.so + $(RM) dbfp_check + $(RM) dbfp.o dbfp_check.o + +libdbfp.so: LDFLAGS = -shared +libdbfp.so: dbfp.o + $(CC) $(LDFLAGS) -o $@ $^ + +dbfp_check: LDLIBS += $(CHECK_LDLIBS) +dbfp_check: LDLIBS += -ldbfp -L. +dbfp_check: dbfp_check.o + +dbfp.o: dbfp.c dbfp.h + +dbfp_check.o: CFLAGS += $(CHECK_CFLAGS) +dbfp_check.o: dbfp_check.c dbfp.h dbfp.c diff --git a/README b/README new file mode 100644 index 0000000..ef0ee05 --- /dev/null +++ b/README @@ -0,0 +1,40 @@ +dbfp -- DB timetable API +======================== + +This C library provides an interface to the timetable API of the Deutsche Bahn +(*Fahrplan-API*). This API exposes information on stations, departures, +arrivals and routes. + +Compiling and installation +-------------------------- + +Build dbfp with `make`. You can run the test suite with `make check`. + +Usage +----- + +*missing* + +Data +---- + +The DB timetable API was released on February 25th, 2016. At the moment, you +need an API key to access the data. For more information on the API, have a +look at the [API description][api] and at the [technical documentation][doc]. + +Bugs and hacking +---------------- + +If you encouter a bug or if you want to contribute to dbfp, please send an +email to . + +License +------- + +The library is published under the terms of the MIT/X11 license (see LICENSE). +The timetable data is published under the terms of the [Creative Commons +Attribution 4.0 International license][cc-by-sa-4.0]. + +[api]: http://data.deutschebahn.com/apis/fahrplan/ +[doc]: http://data.deutschebahn.com/apis/fahrplan/Fpl-API-Doku-Open-Data-BETA-0_81.pdf +[cc-by-sa-4.0]: https://creativecommons.org/licenses/by/4.0/ diff --git a/dbfp.c b/dbfp.c new file mode 100644 index 0000000..0bba365 --- /dev/null +++ b/dbfp.c @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2016 Robin Krahl + * + * dbfp.c + */ + +#include "dbfp.h" + +#include +#include +#include + +int dbfp_init(struct dbfp *dbfp, char *key) +{ + if (!dbfp || !key) + return EINVAL; + + dbfp->key = strdup(key); + if (!dbfp->key) + return ENOMEM; + + return 0; +} + +void dbfp_close(struct dbfp *dbfp) +{ + if (!dbfp) + return; + + free(dbfp->key); +} diff --git a/dbfp.h b/dbfp.h new file mode 100644 index 0000000..2efd5e1 --- /dev/null +++ b/dbfp.h @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2016 Robin Krahl + * + * dbfp.h + */ + +#ifndef DBFP_H_ +#define DBFP_H_ + +#define DBFP_BASE_URL "http://open-api.bahn.de/bin/rest.exe" + +struct dbfp { + char *key; +}; + +int dbfp_init(struct dbfp *dbfp, char *key); +void dbfp_close(struct dbfp *dbfp); + +#endif /* DBFP_H_ */ diff --git a/dbfp_check.c b/dbfp_check.c new file mode 100644 index 0000000..35daaef --- /dev/null +++ b/dbfp_check.c @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2016 Robin Krahl + * + * dbfp_check.c + */ + +#include +#include + +#include "dbfp.h" + +START_TEST(test_dbfp_create) +{ + struct dbfp dbfp; + int err; + + err = dbfp_init(&dbfp, "test-key"); + ck_assert_int_eq(err, 0); + ck_assert_str_eq(dbfp.key, "test-key"); + dbfp_close(&dbfp); +} +END_TEST + +int main(int argc, char **argv) +{ + int num_failed = 0; + Suite *s; + SRunner *sr; + TCase *tc_basic; + + s = suite_create("dbfp"); + sr = srunner_create(s); + + tc_basic = tcase_create("basic"); + tcase_add_test(tc_basic, test_dbfp_create); + suite_add_tcase(s, tc_basic); + + srunner_run_all(sr, CK_ENV); + num_failed = srunner_ntests_failed(sr); + srunner_free(sr); + + return (num_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} -- cgit v1.2.1