aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2014-03-22 22:27:40 +0100
committerGuido Günther <agx@sigxcpu.org>2014-03-22 22:27:40 +0100
commitb22e059f3100ac5f827a16bb9cd2c581772d6a6b (patch)
tree3ff3f13cbce9faedf86bb55ba18ce6502654c684
parent06f5e18958d64a4db67382d03958f10127c4d9e6 (diff)
Allow to query trips by arrival instead of departure
-rw-r--r--libplanfahr/lpf-provider.c4
-rw-r--r--libplanfahr/lpf-provider.h19
-rw-r--r--libplanfahr/providers/hafas-bin6.c8
3 files changed, 22 insertions, 9 deletions
diff --git a/libplanfahr/lpf-provider.c b/libplanfahr/lpf-provider.c
index 2697a88..fc2acc4 100644
--- a/libplanfahr/lpf-provider.c
+++ b/libplanfahr/lpf-provider.c
@@ -132,7 +132,7 @@ lpf_provider_free_locs(LpfProvider *self, GSList *locs)
* @start: start of trip location
* @end: end of trip location
* @date: Date and time the trip starts as #GDateTime
- * @flags: flags
+ * @flags: #LpfProviderGetTripsFlags for trip lookups
* @callback: (scope async): #LpfProviderGotTripsNotify to invoke
* once trips are available
* @user_data: (allow-none): User data for the callback
@@ -147,7 +147,7 @@ lpf_provider_free_locs(LpfProvider *self, GSList *locs)
*/
gint
-lpf_provider_get_trips (LpfProvider *self, LpfLoc *start, LpfLoc *end, GDateTime *date, guint64 flags, LpfProviderGotLocsNotify callback, gpointer user_data)
+lpf_provider_get_trips (LpfProvider *self, LpfLoc *start, LpfLoc *end, GDateTime *date, LpfProviderGetTripsFlags flags, LpfProviderGotLocsNotify callback, gpointer user_data)
{
g_return_val_if_fail (LPF_IS_PROVIDER (self), -1);
g_return_val_if_fail (start, -1);
diff --git a/libplanfahr/lpf-provider.h b/libplanfahr/lpf-provider.h
index 8e706a4..fb05a70 100644
--- a/libplanfahr/lpf-provider.h
+++ b/libplanfahr/lpf-provider.h
@@ -64,6 +64,21 @@ typedef enum
} LpfProviderGetLocsFlags;
+/**
+ * LpfProviderGetTripsFlags:
+ * @LPF_PROVIDER_GET_TRIPS_NONE: No flags
+ * @LPF_PROVIDER_GET_TRIPS_ARRIVAL: Look for arrivals instead of departures
+ * at that date and time
+ *
+ * Flags passed to #lpf_provider_get_tips.
+ */
+typedef enum
+{
+ LPF_PROVIDER_GET_TRIPS_NONE = 0,
+ LPF_PROVIDER_GET_TRIPS_ARRIVAL = 1 << 1,
+} LpfProviderGetTripsFlags;
+
+
#define LPF_TYPE_PROVIDER (lpf_provider_get_type())
#define LPF_PROVIDER(obj) \
@@ -91,7 +106,7 @@ typedef struct {
const gchar* (*get_name) (LpfProvider *self);
gint (*get_locs) (LpfProvider *self, const gchar *match, LpfProviderGetLocsFlags flags, LpfProviderGotLocsNotify callback, gpointer user_data);
- gint (*get_trips) (LpfProvider *self, LpfLoc *start, LpfLoc *end, GDateTime *date, guint64 flags, LpfProviderGotLocsNotify callback, gpointer user_data);
+ gint (*get_trips) (LpfProvider *self, LpfLoc *start, LpfLoc *end, GDateTime *date, LpfProviderGetTripsFlags flags, LpfProviderGotLocsNotify callback, gpointer user_data);
} LpfProviderInterface;
GType lpf_provider_get_type (void);
@@ -107,7 +122,7 @@ GQuark lpf_provider_error_quark (void);
gint lpf_provider_get_locs (LpfProvider *self, const gchar* match, LpfProviderGetLocsFlags flags, LpfProviderGotLocsNotify callback, gpointer user_data);
void lpf_provider_free_locs (LpfProvider *self, GSList *locs);
-gint lpf_provider_get_trips (LpfProvider *self, LpfLoc *start, LpfLoc *end, GDateTime *date, guint64 flags, LpfProviderGotLocsNotify callback, gpointer user_data);
+gint lpf_provider_get_trips (LpfProvider *self, LpfLoc *start, LpfLoc *end, GDateTime *date, LpfProviderGetTripsFlags flags, LpfProviderGotLocsNotify callback, gpointer user_data);
void lpf_provider_free_trips (LpfProvider *self, GSList *trips);
diff --git a/libplanfahr/providers/hafas-bin6.c b/libplanfahr/providers/hafas-bin6.c
index 595c9c7..3389983 100644
--- a/libplanfahr/providers/hafas-bin6.c
+++ b/libplanfahr/providers/hafas-bin6.c
@@ -643,7 +643,7 @@ lpf_provider_hafas_bin6_get_trips (LpfProvider *self,
LpfLoc *start,
LpfLoc *end,
GDateTime *date,
- guint64 flags,
+ LpfProviderGetTripsFlags flags,
LpfProviderGotTripsNotify callback,
gpointer user_data)
{
@@ -656,7 +656,7 @@ lpf_provider_hafas_bin6_get_trips (LpfProvider *self,
/* allowed vehicle types */
const gchar *train_restriction = "11111111111111";
/* whether time is arrival or departure time */
- const gchar *by_departure = "1";
+ const gchar *by_departure;
char *start_id = NULL, *end_id = NULL;
g_return_val_if_fail (start, -1);
@@ -665,8 +665,6 @@ lpf_provider_hafas_bin6_get_trips (LpfProvider *self,
g_return_val_if_fail (priv->session, -1);
g_return_val_if_fail (date, -1);
- g_return_val_if_fail (!flags, 0);
-
g_object_ref (start);
g_object_ref (end);
g_date_time_ref (date);
@@ -684,9 +682,9 @@ lpf_provider_hafas_bin6_get_trips (LpfProvider *self,
g_warning ("Details missing.");
goto out;
}
+ by_departure = (flags & LPF_PROVIDER_GET_TRIPS_ARRIVAL) ? "0" : "1";
uri = soup_uri_new (lpf_provider_hafas_bin6_trips_url(LPF_PROVIDER_HAFAS_BIN6(self)));
-
soup_uri_set_query_from_fields (uri,
"start", "Suchen",
"REQ0JourneyStopsS0ID", start_id,