Class HttpRestFactory
java.lang.Object
fr.univ_eiffel.legotools.factory.impl.HttpRestFactory
- All Implemented Interfaces:
LegoFactory
Implémentation concrète de l'interface
LegoFactory communiquant via une API REST.
Cette classe gère toute le réseau :
- Authentification (Headers X-Email, X-Secret-Key).
- Sérialisation/Désérialisation JSON.
- Gestion des codes d'erreur HTTP (402 Payment Required, 404 Not Found...).
- Vérification cryptographique des signatures (Ed25519).
-
Nested Class Summary
Nested classes/interfaces inherited from interface fr.univ_eiffel.legotools.factory.api.LegoFactory
LegoFactory.Quote -
Constructor Summary
ConstructorsConstructorDescriptionHttpRestFactory(String serverUrl, String email, String apiKey) Initialise la factory REST. -
Method Summary
Modifier and TypeMethodDescriptionvoidacceptQuote(String quoteId) Accepte un devis, avec une logique de "Retry" intelligente.longRécupère le solde actuel du portefeuille client auprès de l'usine.voidrechargeAccount(long minAmount) Lance le processus de rechargement du compte (Proof-of-Work).requestQuote(Map<String, Integer> items) Demande de chiffrage.retrieveOrder(String quoteId) Réception.voidsetPaymentStrategy(PaymentStrategy strategy) Permet de changer l'algorithme de paiement à la volée (Pattern Strategy).booleanverifyBrick(FactoryBrick brick) Vérifie l'authenticité d'une brique.booleanverifyBrickOffline(FactoryBrick brick) Vérification cryptographique locale (Ed25519).
-
Constructor Details
-
HttpRestFactory
Initialise la factory REST.- Parameters:
serverUrl- URL de base.email- Email client.apiKey- Clé API.
-
-
Method Details
-
setPaymentStrategy
Permet de changer l'algorithme de paiement à la volée (Pattern Strategy).- Parameters:
strategy- La nouvelle stratégie (ex: Carte Bancaire, Paypal, etc.).
-
getBalance
Description copied from interface:LegoFactoryRécupère le solde actuel du portefeuille client auprès de l'usine.- Specified by:
getBalancein interfaceLegoFactory- Returns:
- Le nombre de crédits disponibles.
- Throws:
IOException- En cas d'erreur de communication avec le serveur.
-
rechargeAccount
Description copied from interface:LegoFactoryLance le processus de rechargement du compte (Proof-of-Work). Cette méthode peut prendre du temps pour résoudre les défis cryptographiques nécessaires à l'obtention de crédits.- Specified by:
rechargeAccountin interfaceLegoFactory- Parameters:
minAmount- Le montant approximatif souhaité.- Throws:
IOException- Si le serveur refuse le rechargement ou est inaccessible.
-
requestQuote
Description copied from interface:LegoFactoryDemande de chiffrage. L'usine calcule le prix total en fonction des stocks et de la rareté, et bloque ce prix temporairement.- Specified by:
requestQuotein interfaceLegoFactory- Parameters:
items- Une map associant la référence de la brique (ex: "2-2/c9cae2") à la quantité désirée.- Returns:
- Un objet contenant l'ID du devis et le prix total.
- Throws:
IOException- Si une référence est invalide ou le stock insuffisant.
-
acceptQuote
Accepte un devis, avec une logique de "Retry" intelligente. Si le serveur répond HTTP 402 (Paiement requis), on tente un rechargement automatique puis on relance la commande.- Specified by:
acceptQuotein interfaceLegoFactory- Parameters:
quoteId- L'identifiant du devis reçu viaLegoFactory.requestQuote(Map).- Throws:
IOException- Si le solde est insuffisant ou si le devis a expiré.
-
retrieveOrder
Description copied from interface:LegoFactoryRéception. Récupère les actifs numériques associés à une commande payée.- Specified by:
retrieveOrderin interfaceLegoFactory- Parameters:
quoteId- L'identifiant de la commande validée.- Returns:
- La liste des briques avec leurs métadonnées (numéro de série, certificat...).
- Throws:
IOException- Si la commande n'est pas encore prête ou n'existe pas.
-
verifyBrick
Vérifie l'authenticité d'une brique. Tente d'abord une vérification en ligne, et bascule sur une vérification hors-ligne en cas d'échec réseau.- Specified by:
verifyBrickin interfaceLegoFactory- Parameters:
brick- La brique à analyser.- Returns:
truesi la signature correspond aux données et à la clé publique de l'usine.
-
verifyBrickOffline
Vérification cryptographique locale (Ed25519).- Parameters:
brick- La brique à vérifier.- Returns:
- true si la signature est valide.
-