1import * as iotfleetwise from "@distilled.cloud/aws/iotfleetwise";
2import * as Layer from "effect/Layer";
3import { makeFleetWiseResourceHttpBinding } from "./BindingHttp.ts";
4import { GetVehicleStatus } from "./GetVehicleStatus.ts";
5import type { Vehicle } from "./Vehicle.ts";
6
7export const GetVehicleStatusHttp = Layer.effect(
8 GetVehicleStatus,
9 makeFleetWiseResourceHttpBinding({
10 tag: "AWS.IoTFleetWise.GetVehicleStatus",
11 operation: iotfleetwise.getVehicleStatus,
12 actions: ["iotfleetwise:GetVehicleStatus"],
13 requestKey: "vehicleName",
14 identifier: (vehicle: Vehicle) => vehicle.vehicleName,
15 // GetVehicleStatus authorizes on both the vehicle and its associated
16 // campaigns — the campaign ARNs are unknowable at deploy time.
17 resources: (vehicle: Vehicle) => [
18 vehicle.vehicleArn,
19 "arn:aws:iotfleetwise:*:*:campaign/*",
20 ],
21 }),
22);