Skip to content

Commit 6931db5

Browse files
committed
add RouteOptions#notifications
1 parent 6b11620 commit 6931db5

File tree

8 files changed

+86
-7
lines changed

8 files changed

+86
-7
lines changed

services-directions-models/src/main/java/com/mapbox/api/directions/v5/DirectionsCriteria.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import androidx.annotation.StringDef;
55
import com.mapbox.api.directions.v5.models.Amenity;
66
import com.mapbox.api.directions.v5.models.Notification;
7+
import com.mapbox.api.directions.v5.models.RouteLeg;
78
import com.mapbox.api.directions.v5.models.RouteOptions;
89

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

517+
/**
518+
* Include all notifications in the route response (see {@link RouteLeg#notifications()}).
519+
*/
520+
public static final String NOTIFICATION_FLOW_ALL = "all";
521+
522+
/**
523+
* Include none of the notifications in the route response (see {@link RouteLeg#notifications()}).
524+
*/
525+
public static final String NOTIFICATION_FLOW_NONE = "none";
526+
516527
private DirectionsCriteria() {
517528
//not called
518529
}
@@ -754,4 +765,15 @@ private DirectionsCriteria() {
754765
})
755766
public @interface NotificationsSubtypeCriteria {
756767
}
768+
769+
/**
770+
* Supported {@link RouteOptions#notifications()} parameter values.
771+
*/
772+
@Retention(RetentionPolicy.CLASS)
773+
@StringDef({
774+
NOTIFICATION_FLOW_ALL,
775+
NOTIFICATION_FLOW_NONE,
776+
})
777+
public @interface NotificationsFlowCriteria {
778+
}
757779
}

services-directions-models/src/main/java/com/mapbox/api/directions/v5/models/RouteOptions.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,17 @@ public List<String> paymentMethodsList() {
946946
@Nullable
947947
public abstract Boolean suppressVoiceInstructionLocalNames();
948948

949+
/**
950+
* Which notifications the response should contain (see {@link RouteLeg#notifications()}).
951+
* For possible values see {@link com.mapbox.api.directions.v5.DirectionsCriteria.NotificationsFlowCriteria}.
952+
* If null is passed, {@link DirectionsCriteria#NOTIFICATION_FLOW_ALL} value wil be used.
953+
*
954+
* @return string representing `notifications` value.
955+
*/
956+
@Nullable
957+
@DirectionsCriteria.NotificationsFlowCriteria
958+
public abstract String notifications();
959+
949960
/**
950961
* Gson type adapter for parsing Gson to this class.
951962
*
@@ -1083,6 +1094,7 @@ public URL toUrl(@NonNull String accessToken) {
10831094
appendQueryParameter(sb, "waypoints_per_route", waypointsPerRoute());
10841095
appendQueryParameter(sb, "metadata", metadata());
10851096
appendQueryParameter(sb, "payment_methods", paymentMethods());
1097+
appendQueryParameter(sb, "notifications", notifications());
10861098
appendQueryParameter(
10871099
sb,
10881100
"suppress_voice_instruction_local_names",
@@ -2127,6 +2139,17 @@ public abstract Builder suppressVoiceInstructionLocalNames(
21272139
@Nullable Boolean suppressVoiceInstructionLocalNames
21282140
);
21292141

2142+
/**
2143+
* Which notifications the response should contain (see {@link RouteLeg#notifications()}).
2144+
* For possible values see {@link com.mapbox.api.directions.v5.DirectionsCriteria.NotificationsFlowCriteria}.
2145+
* If null is passed, {@link DirectionsCriteria#NOTIFICATION_FLOW_ALL} value wil be used.
2146+
*
2147+
* @param notifications string representing `notifications` value.
2148+
* @return this builder
2149+
*/
2150+
@NonNull
2151+
public abstract Builder notifications(@Nullable @DirectionsCriteria.NotificationsFlowCriteria String notifications);
2152+
21302153
/**
21312154
* Use this method to add request parameters,
21322155
* which are not present in the model yet but are supported on the Directions API,

services-directions-models/src/test/java/com/mapbox/api/directions/v5/models/RouteOptionsTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class RouteOptionsTest extends TestUtils {
3838
*/
3939
private static final String ROUTE_OPTIONS_JSON = "route_options_v5.json";
4040
private static final String ROUTE_OPTIONS_URL =
41-
"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";
41+
"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";
4242
private static final String ACCESS_TOKEN = "pk.token";
4343

4444
private final String optionsJson = loadJsonFixture(ROUTE_OPTIONS_JSON);
@@ -357,6 +357,13 @@ public void suppressVoiceInstructionLocalNamesIsValid_fromJson() {
357357
assertEquals(true, options.suppressVoiceInstructionLocalNames());
358358
}
359359

360+
@Test
361+
public void notificationsIsValid_fromJson() {
362+
RouteOptions options = RouteOptions.fromJson(optionsJson);
363+
364+
assertEquals(DirectionsCriteria.NOTIFICATION_FLOW_NONE, options.notifications());
365+
}
366+
360367
@Test
361368
public void waypointsPerRouteAreValid_fromJson() {
362369
RouteOptions routeOptions = RouteOptions.fromJson(optionsJson);
@@ -378,6 +385,13 @@ public void defaultSuppressVoiceInstructionLocalNames() {
378385
assertNull(options.suppressVoiceInstructionLocalNames());
379386
}
380387

388+
@Test
389+
public void defaultNotifications() {
390+
RouteOptions options = defaultRouteOptions();
391+
392+
assertNull(options.notifications());
393+
}
394+
381395
@Test
382396
public void defaultWaypointsPerRoute() {
383397
RouteOptions options = defaultRouteOptions();
@@ -1117,6 +1131,7 @@ private RouteOptions routeOptions() {
11171131
.waypointsPerRoute(true)
11181132
.paymentMethods(DirectionsCriteria.PAYMENT_METHOD_GENERAL)
11191133
.suppressVoiceInstructionLocalNames(true)
1134+
.notifications(DirectionsCriteria.NOTIFICATION_FLOW_NONE)
11201135
.build();
11211136
}
11221137

@@ -1226,6 +1241,7 @@ private RouteOptions routeOptionsList() {
12261241
.waypointsPerRoute(true)
12271242
.suppressVoiceInstructionLocalNames(true)
12281243
.paymentMethodsList(Arrays.asList(DirectionsCriteria.PAYMENT_METHOD_GENERAL))
1244+
.notifications(DirectionsCriteria.NOTIFICATION_FLOW_NONE)
12291245
.build();
12301246
}
12311247
}

services-directions-models/src/test/resources/route_options_v5.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,6 @@
3939
"waypoints_per_route": true,
4040
"compute_toll_cost": true,
4141
"payment_methods": "general",
42-
"suppress_voice_instruction_local_names": true
42+
"suppress_voice_instruction_local_names": true,
43+
"notifications": "none"
4344
}

services-directions/src/main/java/com/mapbox/api/directions/v5/DirectionsService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ interface DirectionsService {
5959
* @param computeTollCost {@link RouteOptions#computeTollCost()}
6060
* @param waypointsPerRoute {@link RouteOptions#waypointsPerRoute()}
6161
* @param metadata {@link RouteOptions#metadata()}
62+
* @param notifications {@link RouteOptions#notifications()} ()}
6263
* @return the {@link DirectionsResponse} in a Call wrapper
6364
*/
6465
@GET("directions/v5/{user}/{profile}/{coordinates}")
@@ -104,7 +105,8 @@ Call<DirectionsResponse> getCall(
104105
@Query("waypoints_per_route") Boolean waypointsPerRoute,
105106
@Query("metadata") Boolean metadata,
106107
@Query("payment_methods") String paymentMethods,
107-
@Query("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames
108+
@Query("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames,
109+
@Query("notifications") String notifications
108110
);
109111

110112
/**
@@ -149,6 +151,7 @@ Call<DirectionsResponse> getCall(
149151
* @param computeTollCost {@link RouteOptions#computeTollCost()}
150152
* @param waypointsPerRoute {@link RouteOptions#waypointsPerRoute()}
151153
* @param metadata {@link RouteOptions#metadata()}
154+
* @param notifications {@link RouteOptions#notifications()}
152155
* @return the {@link DirectionsResponse} in a Call wrapper
153156
*/
154157
@FormUrlEncoded
@@ -195,6 +198,7 @@ Call<DirectionsResponse> postCall(
195198
@Field("waypoints_per_route") Boolean waypointsPerRoute,
196199
@Field("metadata") Boolean metadata,
197200
@Field("payment_methods") String paymentMethods,
198-
@Field("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames
201+
@Field("suppress_voice_instruction_local_names") Boolean suppressVoiceInstructionLocalNames,
202+
@Field("notifications") String notifications
199203
);
200204
}

services-directions/src/main/java/com/mapbox/api/directions/v5/MapboxDirections.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ private Call<DirectionsResponse> get() {
113113
routeOptions().waypointsPerRoute(),
114114
routeOptions().metadata(),
115115
routeOptions().paymentMethods(),
116-
routeOptions().suppressVoiceInstructionLocalNames()
116+
routeOptions().suppressVoiceInstructionLocalNames(),
117+
routeOptions().notifications()
117118
);
118119
}
119120

@@ -160,7 +161,8 @@ private Call<DirectionsResponse> post() {
160161
routeOptions().waypointsPerRoute(),
161162
routeOptions().metadata(),
162163
routeOptions().paymentMethods(),
163-
routeOptions().suppressVoiceInstructionLocalNames()
164+
routeOptions().suppressVoiceInstructionLocalNames(),
165+
routeOptions().notifications()
164166
);
165167
}
166168

services-directions/src/test/java/com/mapbox/api/directions/v5/MapboxDirectionsTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,16 @@ public void include_doesGetFormattedInUrlCorrectly() throws Exception {
360360
assertTrue(directions.cloneCall().request().url().toString().contains("include=hot"));
361361
}
362362

363+
@Test
364+
public void notifications_doesGetFormattedInUrlCorrectly() throws Exception {
365+
MapboxDirections directions = MapboxDirections.builder()
366+
.accessToken("token")
367+
.routeOptions(routeOptions)
368+
.build();
369+
370+
assertTrue(directions.cloneCall().request().url().toString().contains("notifications=none"));
371+
}
372+
363373
@Test
364374
public void callFactoryNonNull() throws IOException {
365375
MapboxDirections client = MapboxDirections.builder()

services-directions/src/test/resources/route_options_v5.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,6 @@
3939
"waypoints_per_route": true,
4040
"metadata": true,
4141
"payment_methods": "general,etcx",
42-
"suppress_voice_instruction_local_names": true
42+
"suppress_voice_instruction_local_names": true,
43+
"notifications": "none"
4344
}

0 commit comments

Comments
 (0)