ref(effect) supprime une ancienne version de service API
This commit is contained in:
parent
65dc3bfa6c
commit
7cba297223
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