ref(effect) supprime une ancienne version de service API
This commit is contained in:
parent
4b5cadbc6e
commit
c66cf7faba
1 changed files with 0 additions and 52 deletions
|
|
@ -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>()("APIError", {
|
||||
cause: Schema.Defect,
|
||||
}) {}
|
||||
|
||||
class WooCommerceAPI extends Context.Service<
|
||||
WooCommerceAPI,
|
||||
{
|
||||
AddProductToCart: (nonce: string, requestBody: CartProduct) => Effect.Effect<Response, APIError>;
|
||||
}
|
||||
>()("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 };
|
||||
Loading…
Add table
Add a link
Reference in a new issue