Skip to content

Commit 7652cd3

Browse files
danielfbrightcopybara-github
authored andcommitted
feat: add sample lmfs client requests
Odrd samples were moved from the main SampleApp class to its own. Committer: @danielfbright PiperOrigin-RevId: 435183274
1 parent 3ec689b commit 7652cd3

3 files changed

Lines changed: 443 additions & 251 deletions

File tree

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
package com.google.fleetengine.auth.sample;
2+
3+
import com.google.fleetengine.auth.AuthTokenMinter;
4+
import com.google.fleetengine.auth.client.FleetEngineClientSettingsModifier;
5+
import com.google.fleetengine.auth.client.FleetEngineTokenProvider;
6+
import com.google.fleetengine.auth.token.factory.FleetEngineTokenFactory;
7+
import com.google.fleetengine.auth.token.factory.FleetEngineTokenFactorySettings;
8+
import com.google.fleetengine.auth.token.factory.signer.ImpersonatedSigner;
9+
import com.google.fleetengine.auth.token.factory.signer.SignerInitializationException;
10+
import com.google.protobuf.Duration;
11+
import com.google.type.LatLng;
12+
import google.maps.fleetengine.delivery.v1.CreateDeliveryVehicleRequest;
13+
import google.maps.fleetengine.delivery.v1.CreateTaskRequest;
14+
import google.maps.fleetengine.delivery.v1.DeliveryServiceClient;
15+
import google.maps.fleetengine.delivery.v1.DeliveryServiceClient.ListDeliveryVehiclesPagedResponse;
16+
import google.maps.fleetengine.delivery.v1.DeliveryServiceSettings;
17+
import google.maps.fleetengine.delivery.v1.DeliveryVehicle;
18+
import google.maps.fleetengine.delivery.v1.DeliveryVehicleLocation;
19+
import google.maps.fleetengine.delivery.v1.DeliveryVehicleNavigationStatus;
20+
import google.maps.fleetengine.delivery.v1.ListDeliveryVehiclesRequest;
21+
import google.maps.fleetengine.delivery.v1.LocationInfo;
22+
import google.maps.fleetengine.delivery.v1.Task;
23+
import google.maps.fleetengine.delivery.v1.Task.State;
24+
import java.io.IOException;
25+
import java.util.UUID;
26+
27+
final class LmfsSampleCommands {
28+
private static final LatLng EXAMPLE_LAT_LNG =
29+
LatLng.newBuilder().setLatitude(37.4194945).setLongitude(-122.0761644).build();
30+
31+
private LmfsSampleCommands() {}
32+
33+
static void createDeliveryVehicle() throws SignerInitializationException, IOException {
34+
String randomDeliveryVehicleId = String.format("delivery-vehicle-%s", UUID.randomUUID());
35+
36+
// Construct the delivery vehicle object
37+
DeliveryVehicle deliveryVehicle =
38+
DeliveryVehicle.newBuilder()
39+
40+
// Set the delivery vehicle name to the specified format
41+
.setName(
42+
String.format(
43+
"providers/%s/deliveryVehicles/%s",
44+
LmfsConfiguration.PROVIDER_ID, randomDeliveryVehicleId))
45+
46+
// Set the last vehicle location to a hardcoded value
47+
.setLastLocation(
48+
DeliveryVehicleLocation.newBuilder().setLocation(EXAMPLE_LAT_LNG).build())
49+
50+
// Set the navigation status to unknown
51+
.setNavigationStatus(DeliveryVehicleNavigationStatus.UNKNOWN_NAVIGATION_STATUS)
52+
.build();
53+
54+
CreateDeliveryVehicleRequest createDeliveryVehicleRequest =
55+
CreateDeliveryVehicleRequest.newBuilder()
56+
57+
// Set the randomly generated delivery vehicle id
58+
.setDeliveryVehicleId(randomDeliveryVehicleId)
59+
60+
// Set the delivery vehicle to the one constructed above
61+
.setDeliveryVehicle(deliveryVehicle)
62+
63+
// Set the parent to the specified format
64+
.setParent(String.format("providers/%s", LmfsConfiguration.PROVIDER_ID))
65+
.build();
66+
67+
DeliveryServiceSettings settings =
68+
new FleetEngineClientSettingsModifier<
69+
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(createMinter())
70+
.updateBuilder(DeliveryServiceSettings.newBuilder())
71+
.setEndpoint(LmfsConfiguration.FLEET_ENGINE_ADDRESS)
72+
.build();
73+
74+
DeliveryServiceClient client = DeliveryServiceClient.create(settings);
75+
client.createDeliveryVehicle(createDeliveryVehicleRequest);
76+
System.out.printf("Delivery Vehicle with id '%s' created\n", randomDeliveryVehicleId);
77+
}
78+
79+
static void createTask() throws SignerInitializationException, IOException {
80+
String randomTaskId = String.format("task-%s", UUID.randomUUID());
81+
String randomTrackingId = String.format("tracking-id-%s", UUID.randomUUID());
82+
83+
// Construct the task object
84+
Task task =
85+
Task.newBuilder()
86+
87+
// Set the task name to the specified format
88+
.setName(
89+
String.format("providers/%s/tasks/%s", LmfsConfiguration.PROVIDER_ID, randomTaskId))
90+
91+
// Set tracking id
92+
.setTrackingId(randomTrackingId)
93+
94+
// Set the planned task location
95+
.setPlannedLocation(LocationInfo.newBuilder().setPoint(EXAMPLE_LAT_LNG).build())
96+
97+
// Set the task duration to 1 hour
98+
.setTaskDuration(Duration.newBuilder().setSeconds(3600).build())
99+
100+
// Set the state as an open task
101+
.setState(State.OPEN)
102+
103+
// Set the type as a delivery task
104+
.setType(Task.Type.DELIVERY)
105+
.build();
106+
107+
CreateTaskRequest createTaskRequest =
108+
CreateTaskRequest.newBuilder()
109+
110+
// Set the randomly generated task id
111+
.setTaskId(randomTaskId)
112+
113+
// Set the task to the one constructed above
114+
.setTask(task)
115+
116+
// Set the parent to the specified format
117+
.setParent(String.format("providers/%s", LmfsConfiguration.PROVIDER_ID))
118+
.build();
119+
120+
DeliveryServiceSettings settings =
121+
new FleetEngineClientSettingsModifier<
122+
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(createMinter())
123+
.updateBuilder(DeliveryServiceSettings.newBuilder())
124+
.setEndpoint(LmfsConfiguration.FLEET_ENGINE_ADDRESS)
125+
.build();
126+
127+
DeliveryServiceClient client = DeliveryServiceClient.create(settings);
128+
client.createTask(createTaskRequest);
129+
System.out.printf("Task with id '%s' created\n", randomTaskId);
130+
}
131+
132+
static void listDeliveryVehicles() throws SignerInitializationException, IOException {
133+
ListDeliveryVehiclesRequest request =
134+
ListDeliveryVehiclesRequest.newBuilder()
135+
// Set the parent to the format providers/{providerId}
136+
.setParent(String.format("providers/%s", OdrdConfiguration.PROVIDER_ID))
137+
.build();
138+
139+
DeliveryServiceSettings settings =
140+
new FleetEngineClientSettingsModifier<
141+
DeliveryServiceSettings, DeliveryServiceSettings.Builder>(createMinter())
142+
.updateBuilder(DeliveryServiceSettings.newBuilder())
143+
.setEndpoint(OdrdConfiguration.FLEET_ENGINE_ADDRESS)
144+
.build();
145+
146+
DeliveryServiceClient client = DeliveryServiceClient.create(settings);
147+
ListDeliveryVehiclesPagedResponse response = client.listDeliveryVehicles(request);
148+
149+
for (DeliveryVehicle vehicle : response.getPage().getValues()) {
150+
System.out.printf("Delivery Vehicle Name: %s\n", vehicle.getName());
151+
System.out.printf("Remaining seconds: %s\n", vehicle.getRemainingDuration().getSeconds());
152+
System.out.println();
153+
}
154+
}
155+
156+
private static FleetEngineTokenProvider createMinter() throws SignerInitializationException {
157+
// Create minter with delivery builder in order to produce lmfs server tokens by default
158+
return AuthTokenMinter.deliveryBuilder()
159+
// Only the account for the server signer is needed in this example
160+
.setDeliveryServerSigner(
161+
ImpersonatedSigner.create(LmfsConfiguration.DELIVERY_SERVER_TOKEN_ACCOUNT))
162+
163+
// When the audience is not set, it defaults to https://fleetengine.googleapis.com/.
164+
// This is fine in the vast majority of cases.
165+
.setTokenFactory(
166+
new FleetEngineTokenFactory(
167+
FleetEngineTokenFactorySettings.builder()
168+
.setAudience(LmfsConfiguration.FLEET_ENGINE_AUDIENCE)
169+
.build()))
170+
171+
// Build the minter
172+
.build();
173+
}
174+
}

0 commit comments

Comments
 (0)