Skip to content

Commit

Permalink
add RouteOptions#notifications
Browse files Browse the repository at this point in the history
  • Loading branch information
dzinad committed Apr 29, 2023
1 parent 6b11620 commit 1b31190
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import androidx.annotation.StringDef;
import com.mapbox.api.directions.v5.models.Amenity;
import com.mapbox.api.directions.v5.models.Notification;
import com.mapbox.api.directions.v5.models.RouteLeg;
import com.mapbox.api.directions.v5.models.RouteOptions;

import java.lang.annotation.Retention;
Expand Down Expand Up @@ -513,6 +514,16 @@ public final class DirectionsCriteria {
*/
public static final String NOTIFICATION_SUBTYPE_POINT_EXCLUSION = "pointExclusion";

/**
* Include all notifications in the route response (see {@link RouteLeg#notifications()}).
*/
public static final String NOTIFICATION_FLOW_ALL = "all";

/**
* Include none of the notifications in the route response (see {@link RouteLeg#notifications()}).
*/
public static final String NOTIFICATION_FLOW_NONE = "none";

private DirectionsCriteria() {
//not called
}
Expand Down Expand Up @@ -754,4 +765,15 @@ private DirectionsCriteria() {
})
public @interface NotificationsSubtypeCriteria {
}

/**
* Supported {@link RouteOptions#notifications()} parameter values.
*/
@Retention(RetentionPolicy.CLASS)
@StringDef({
NOTIFICATION_FLOW_ALL,
NOTIFICATION_FLOW_NONE,
})
public @interface NotificationsFlowCriteria {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -946,6 +946,18 @@ public List<String> paymentMethodsList() {
@Nullable
public abstract Boolean suppressVoiceInstructionLocalNames();

/**
* Which notifications the response should contain (see {@link RouteLeg#notifications()}).
* For possible values see
* {@link com.mapbox.api.directions.v5.DirectionsCriteria.NotificationsFlowCriteria}.
* If null is passed, {@link DirectionsCriteria#NOTIFICATION_FLOW_ALL} value wil be used.
*
* @return string representing `notifications` value.
*/
@Nullable
@DirectionsCriteria.NotificationsFlowCriteria
public abstract String notifications();

/**
* Gson type adapter for parsing Gson to this class.
*
Expand Down Expand Up @@ -1083,6 +1095,7 @@ public URL toUrl(@NonNull String accessToken) {
appendQueryParameter(sb, "waypoints_per_route", waypointsPerRoute());
appendQueryParameter(sb, "metadata", metadata());
appendQueryParameter(sb, "payment_methods", paymentMethods());
appendQueryParameter(sb, "notifications", notifications());
appendQueryParameter(
sb,
"suppress_voice_instruction_local_names",
Expand Down Expand Up @@ -2127,6 +2140,20 @@ public abstract Builder suppressVoiceInstructionLocalNames(
@Nullable Boolean suppressVoiceInstructionLocalNames
);

/**
* Which notifications the response should contain (see {@link RouteLeg#notifications()}).
* For possible values see
* {@link com.mapbox.api.directions.v5.DirectionsCriteria.NotificationsFlowCriteria}.
* If null is passed, {@link DirectionsCriteria#NOTIFICATION_FLOW_ALL} value wil be used.
*
* @param notifications string representing `notifications` value.
* @return this builder
*/
@NonNull
public abstract Builder notifications(
@Nullable @DirectionsCriteria.NotificationsFlowCriteria String notifications
);

/**
* Use this method to add request parameters,
* which are not present in the model yet but are supported on the Directions API,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class RouteOptionsTest extends TestUtils {
*/
private static final String ROUTE_OPTIONS_JSON = "route_options_v5.json";
private static final String ROUTE_OPTIONS_URL =
"https://api.mapbox.com/directions/v5/mapbox/driving/-122.4003312,37.7736941;-122.4187529,37.7689715;-122.4255172,37.7775835?access_token=pk.token&geometries=polyline6&alternatives=false&overview=full&radiuses=%3Bunlimited%3B5.1&steps=true&avoid_maneuver_radius=200.0&bearings=0%2C90%3B90%2C0%3B&layers=-42%3B%3B0&continue_straight=false&annotations=congestion%2Cdistance%2Cduration&language=ru&roundabout_exits=false&voice_instructions=true&banner_instructions=true&voice_units=metric&exclude=toll%2Cferry%2Cpoint%2811.0+-22.0%29&include=hot%2Chov2&approaches=%3Bcurb%3B&waypoints=0%3B1%3B2&waypoint_names=%3BSerangoon+Garden+Market+%26+Food+Centre%3BFunky+%26nAmE*&waypoint_targets=%3B12.2%2C21.2%3B&enable_refresh=true&walking_speed=5.11&walkway_bias=-0.2&alley_bias=0.75&snapping_include_closures=%3Bfalse%3Btrue&snapping_include_static_closures=true%3B%3Bfalse&arrive_by=2021-01-01%27T%2701%3A01&depart_at=2021-02-02%27T%2702%3A02&max_height=1.5&max_width=1.4&max_weight=2.9&compute_toll_cost=true&waypoints_per_route=true&metadata=true&payment_methods=general&suppress_voice_instruction_local_names=true";
"https://api.mapbox.com/directions/v5/mapbox/driving/-122.4003312,37.7736941;-122.4187529,37.7689715;-122.4255172,37.7775835?access_token=pk.token&geometries=polyline6&alternatives=false&overview=full&radiuses=%3Bunlimited%3B5.1&steps=true&avoid_maneuver_radius=200.0&bearings=0%2C90%3B90%2C0%3B&layers=-42%3B%3B0&continue_straight=false&annotations=congestion%2Cdistance%2Cduration&language=ru&roundabout_exits=false&voice_instructions=true&banner_instructions=true&voice_units=metric&exclude=toll%2Cferry%2Cpoint%2811.0+-22.0%29&include=hot%2Chov2&approaches=%3Bcurb%3B&waypoints=0%3B1%3B2&waypoint_names=%3BSerangoon+Garden+Market+%26+Food+Centre%3BFunky+%26nAmE*&waypoint_targets=%3B12.2%2C21.2%3B&enable_refresh=true&walking_speed=5.11&walkway_bias=-0.2&alley_bias=0.75&snapping_include_closures=%3Bfalse%3Btrue&snapping_include_static_closures=true%3B%3Bfalse&arrive_by=2021-01-01%27T%2701%3A01&depart_at=2021-02-02%27T%2702%3A02&max_height=1.5&max_width=1.4&max_weight=2.9&compute_toll_cost=true&waypoints_per_route=true&metadata=true&payment_methods=general&notifications=none&suppress_voice_instruction_local_names=true";
private static final String ACCESS_TOKEN = "pk.token";

private final String optionsJson = loadJsonFixture(ROUTE_OPTIONS_JSON);
Expand Down Expand Up @@ -357,6 +357,13 @@ public void suppressVoiceInstructionLocalNamesIsValid_fromJson() {
assertEquals(true, options.suppressVoiceInstructionLocalNames());
}

@Test
public void notificationsIsValid_fromJson() {
RouteOptions options = RouteOptions.fromJson(optionsJson);

assertEquals(DirectionsCriteria.NOTIFICATION_FLOW_NONE, options.notifications());
}

@Test
public void waypointsPerRouteAreValid_fromJson() {
RouteOptions routeOptions = RouteOptions.fromJson(optionsJson);
Expand All @@ -378,6 +385,13 @@ public void defaultSuppressVoiceInstructionLocalNames() {
assertNull(options.suppressVoiceInstructionLocalNames());
}

@Test
public void defaultNotifications() {
RouteOptions options = defaultRouteOptions();

assertNull(options.notifications());
}

@Test
public void defaultWaypointsPerRoute() {
RouteOptions options = defaultRouteOptions();
Expand Down Expand Up @@ -1117,6 +1131,7 @@ private RouteOptions routeOptions() {
.waypointsPerRoute(true)
.paymentMethods(DirectionsCriteria.PAYMENT_METHOD_GENERAL)
.suppressVoiceInstructionLocalNames(true)
.notifications(DirectionsCriteria.NOTIFICATION_FLOW_NONE)
.build();
}

Expand Down Expand Up @@ -1226,6 +1241,7 @@ private RouteOptions routeOptionsList() {
.waypointsPerRoute(true)
.suppressVoiceInstructionLocalNames(true)
.paymentMethodsList(Arrays.asList(DirectionsCriteria.PAYMENT_METHOD_GENERAL))
.notifications(DirectionsCriteria.NOTIFICATION_FLOW_NONE)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,6 @@
"waypoints_per_route": true,
"compute_toll_cost": true,
"payment_methods": "general",
"suppress_voice_instruction_local_names": true
"suppress_voice_instruction_local_names": true,
"notifications": "none"
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ interface DirectionsService {
* @param computeTollCost {@link RouteOptions#computeTollCost()}
* @param waypointsPerRoute {@link RouteOptions#waypointsPerRoute()}
* @param metadata {@link RouteOptions#metadata()}
* @param notifications {@link RouteOptions#notifications()} ()}
* @return the {@link DirectionsResponse} in a Call wrapper
*/
@GET("directions/v5/{user}/{profile}/{coordinates}")
Expand Down Expand Up @@ -104,7 +105,8 @@ Call<DirectionsResponse> getCall(
@Query("waypoints_per_route") Boolean waypointsPerRoute,
@Query("metadata") Boolean metadata,
@Query("payment_methods") String paymentMethods,
@Query("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames
@Query("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames,
@Query("notifications") String notifications
);

/**
Expand Down Expand Up @@ -149,6 +151,7 @@ Call<DirectionsResponse> getCall(
* @param computeTollCost {@link RouteOptions#computeTollCost()}
* @param waypointsPerRoute {@link RouteOptions#waypointsPerRoute()}
* @param metadata {@link RouteOptions#metadata()}
* @param notifications {@link RouteOptions#notifications()}
* @return the {@link DirectionsResponse} in a Call wrapper
*/
@FormUrlEncoded
Expand Down Expand Up @@ -195,6 +198,7 @@ Call<DirectionsResponse> postCall(
@Field("waypoints_per_route") Boolean waypointsPerRoute,
@Field("metadata") Boolean metadata,
@Field("payment_methods") String paymentMethods,
@Field("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames
@Field("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames,
@Field("notifications") String notifications
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ private Call<DirectionsResponse> get() {
routeOptions().waypointsPerRoute(),
routeOptions().metadata(),
routeOptions().paymentMethods(),
routeOptions().suppressVoiceInstructionLocalNames()
routeOptions().suppressVoiceInstructionLocalNames(),
routeOptions().notifications()
);
}

Expand Down Expand Up @@ -160,7 +161,8 @@ private Call<DirectionsResponse> post() {
routeOptions().waypointsPerRoute(),
routeOptions().metadata(),
routeOptions().paymentMethods(),
routeOptions().suppressVoiceInstructionLocalNames()
routeOptions().suppressVoiceInstructionLocalNames(),
routeOptions().notifications()
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,16 @@ public void include_doesGetFormattedInUrlCorrectly() throws Exception {
assertTrue(directions.cloneCall().request().url().toString().contains("include=hot"));
}

@Test
public void notifications_doesGetFormattedInUrlCorrectly() throws Exception {
MapboxDirections directions = MapboxDirections.builder()
.accessToken("token")
.routeOptions(routeOptions)
.build();

assertTrue(directions.cloneCall().request().url().toString().contains("notifications=none"));
}

@Test
public void callFactoryNonNull() throws IOException {
MapboxDirections client = MapboxDirections.builder()
Expand Down
3 changes: 2 additions & 1 deletion services-directions/src/test/resources/route_options_v5.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,6 @@
"waypoints_per_route": true,
"metadata": true,
"payment_methods": "general,etcx",
"suppress_voice_instruction_local_names": true
"suppress_voice_instruction_local_names": true,
"notifications": "none"
}

0 comments on commit 1b31190

Please sign in to comment.