diff --git a/web/app/themes/haiku-atelier-2024/src/scripts-effect/api-service.ts b/web/app/themes/haiku-atelier-2024/src/scripts-effect/api-service.ts deleted file mode 100644 index 7a79f36c..00000000 --- a/web/app/themes/haiku-atelier-2024/src/scripts-effect/api-service.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Context, Effect, Layer, Schema } from "effect"; -import { ENTETE_WC_NONCE, ROUTE_API_AJOUTE_ARTICLE_PANIER } from "../scripts/constantes/api.ts"; -import { CartProduct } from "./schemas/api.ts"; - -/** Délai par défaut pour la réalisation d'une Requête. */ -const REQUEST_TIMEOUT = 5_000; - -/** Représente un soucis lors de l'exécution d'une Requête auprès de l'API WooCommerce. */ -class APIError extends Schema.TaggedErrorClass()("APIError", { - cause: Schema.Defect, -}) {} - -class WooCommerceAPI extends Context.Service< - WooCommerceAPI, - { - AddProductToCart: (nonce: string, requestBody: CartProduct) => Effect.Effect; - } ->()("haikuatelier.fr/WooCommerceAPI") { - static readonly layer = Layer.effect( - WooCommerceAPI, - // oxlint-disable-next-line require-yield - Effect.gen(function*() { - const AddProductToCart = Effect.fn("AddProductToCart")(function*(nonce: string, product: CartProduct) { - const response = yield* Effect.tryPromise({ - catch: error => new APIError({ cause: error }), - try: async () => - fetch(ROUTE_API_AJOUTE_ARTICLE_PANIER, { - // Convertis en chaîne de caractères (équivalent à JSON.stringify). - body: Schema.encodeSync(Schema.fromJsonString(CartProduct))(product), - credentials: "same-origin", - headers: { - Accept: "application/json", - "Content-Type": "application/json", - [ENTETE_WC_NONCE]: nonce, - }, - method: "POST", - mode: "same-origin", - signal: AbortSignal.timeout(REQUEST_TIMEOUT), - }), - }); - - return response; - }); - - return WooCommerceAPI.of({ - AddProductToCart, - }); - }), - ); -} - -export { WooCommerceAPI };