Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API Web pour accéder à certaines fonctionnalités #4

Open
cogk opened this issue Dec 2, 2024 · 2 comments
Open

API Web pour accéder à certaines fonctionnalités #4

cogk opened this issue Dec 2, 2024 · 2 comments
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@cogk
Copy link

cogk commented Dec 2, 2024

Dans le cadre du Crédit Inter-Lieu et de l'intégration avec des logiciels de gestion de réservations de ressources (e.g. Dokos), il serait intéressant de pouvoir exposer différentes fonctionnalités sous la forme d'une API Web

Les objectifs :

  • Savoir de combien de Crédits Inter-Lieu un utilisateur dispose actuellement (valeur d'un Token ?)
  • Créer des transactions entre deux wallets
  • Créer un lien de paiement pour un

Ébauche d'API, avec très peu de réflexion :

# Lecture du solde
GET /api/solde-du-token ?wallet=WALLET_UUID &asset=ASSET_UUID
{"value": 42}

# Création d'une transaction
POST /api/créer-transaction ?from_wallet=W1 &to_wallet=W2
201 Created

# Créer un lien pour diriger l'utilisateur (authentifié sur Tibillet ?) vers le prestataire de paiement pour créditer le compte
POST /api/lien-de-paiement &to_wallet=W1 &asset=A &currency=EUR
{"url": "https://stripe.com/lorem/ipsum"}
sinon avec redirect + JSON web token ?

Alternatives envisagées

Si j'ai tout bien compris, on pourrait aussi implémenter cette API sous la forme d'un nœud Fedow directement inclus dans le logiciel "client" ?


https://fractale.co/o/badge-tiers-lieu
https://lescommuns.tiers-lieux.org/#detail-un-commun.communId.6733792b6aea6178e041720b

@cogk cogk changed the title API Web pour accéder aux fonctionnalités API Web pour accéder à certaines fonctionnalités Dec 2, 2024
@Nasjoe Nasjoe added enhancement New feature or request good first issue Good for newcomers labels Dec 3, 2024
@cogk
Copy link
Author

cogk commented Dec 3, 2024

J'ai trouvé les éléments qui me semblent pertinents dans le code :

Fedow/fedow_core/views.py

Lines 337 to 338 in e525ba8

@action(detail=False, methods=['POST'])
def get_federated_token_refill_checkout(self, request):

Fedow/fedow_core/views.py

Lines 121 to 125 in e525ba8

def retrieve(self, request, pk=None):
asset = get_object_or_404(Asset, pk=pk)
# self.action = retrieve -> on ajoute les totaux des token dans la réponse
serializer = AssetSerializer(asset, context={'request': request, "action": self.action})
return Response(serializer.data)

Fedow/fedow_core/views.py

Lines 1059 to 1067 in e525ba8

def create(self, request):
transaction_validator = TransactionW2W(data=request.data, context={'request': request})
if transaction_validator.is_valid():
transaction: Transaction = transaction_validator.transaction
transaction_serialized = TransactionSerializer(transaction, context={'request': request})
return Response(transaction_serialized.data, status=status.HTTP_201_CREATED)
logger.error(f"{timezone.localtime()} ERROR - Transaction create error : {transaction_validator.errors}")
return Response(transaction_validator.errors, status=status.HTTP_400_BAD_REQUEST)

@Nasjoe
Copy link
Contributor

Nasjoe commented Dec 3, 2024

Hello !
Wow, terrible, t'es allé fouiller dans le contrôleur, trop bien !
Oui, tu as ici l'API CRUD du Fedow.

Il existe aussi une app python qu'on pourrait packager qui est sur les deux autres moteurs, Lespass et Laboutik.

La partie sur la récupération du wallet devrait t’intéresser.
https://github.com/TiBillet/LaBoutik/blob/main/fedow_connect/fedow_api.py#L574

Et celle pour récupérer un lien de recharge stripe :
https://github.com/TiBillet/Lespass/blob/PreProd/fedow_connect/fedow_api.py#L384

Je peux carrément prendre du temps pour rajouter dans ce script ce qu'il te manque, en faire un package python et bien sur documenter tout ça.
J'en rêve depuis longtemps, ce projet est une très bonne occasion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

2 participants