| 1 | import * as transfer from "@distilled.cloud/aws/transfer"; |
| 2 | import * as Layer from "effect/Layer"; |
| 3 | import * as Output from "../../Output.ts"; |
| 4 | import { makeTransferServerHttpBinding } from "./BindingHttp.ts"; |
| 5 | import { TestIdentityProvider } from "./TestIdentityProvider.ts"; |
| 6 | |
| 7 | export 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 | ); |