1import * as transfer from "@distilled.cloud/aws/transfer";
2import * as Layer from "effect/Layer";
3import * as Output from "../../Output.ts";
4import { makeTransferServerHttpBinding } from "./BindingHttp.ts";
5import { TestIdentityProvider } from "./TestIdentityProvider.ts";
6
7export const TestIdentityProviderHttp = Layer.effect(
8 TestIdentityProvider,
9 makeTransferServerHttpBinding({
10 tag: "AWS.Transfer.TestIdentityProvider",
11 operation: transfer.testIdentityProvider,
12 actions: ["transfer:TestIdentityProvider"],
13 // AWS authorizes this operation against the addressed user, despite the
14 // binding being server-scoped so it can inject ServerId. UserName arrives
15 // at runtime, so grant the operation on every user of the bound server.
16 resource: (server) =>
17 Output.map(server.arn, (arn) => `${arn.replace(":server/", ":user/")}/*`),
18 }),
19);