Biblioteka dla api v4 w pythonie

Cześć, zrobiłem bibliotekę (aktualnie tylko rzeczy powiązane z płatnościami) dla api v4 w pythonie. Ogólnie robiłem takie coś po raz pierwszy, więc nie mam pewności, czy wszystko jest dobrze, zapraszam do oceny.

1lajk

image
Przydałoby się także dla nie-sandboxa

1lajk

Poprawione, dziękuję.

Niestety, to nawet ciężko biblioteką nazwać. To tylko jakiś drobny wrapper na moduł requests. Pomijam już, że połowa kodu tam jest niepotrzebna (a po jego wyrzuceniu nie zostaje już prawie nic poza requests, którego użycie samodzielnie wyglądałoby lepiej).

data = '{ "amount": "%s", "redirectUrl": "%s", "webhookUrl": "%s"}' % (
            amount,
            redirectUrl,
            webhookUrl,
        )

A za to, to ci głowę powinno się odciąć. :slight_smile:

https://packaging.python.org/tutorials/packaging-projects/

No i dodatkowo, to nawet nie jest paczką, tylko projektem w postaci jednej klasy wrzuconej do repo na githubie, niezbyt do używania jako biblioteka w innych projektach. Poniżej przykład prostej biblioteki opartej o requests, hostowanej tylko przez GitHub (bez publikacji do pypi):

Nie jest to idealny przykład, jeśli chodzi o wykonywanie requestów, bo jest tutaj tylko jedna metoda, ale znajdziesz w tym repo przynajmniej strukturę budowy takiej paczki.

1lajk

Dziękuję bardzo za opinię! Wywaliłem trochę zbędnego kodu i przerobiłem całość na paczkę. Zdaję sobie sprawę, że całość jest bardzo mała i trudno to nazwać biblioteką, ale po prostu chciałem się nauczyć robić własne biblioteki (poprawnie) i otrzymać właśnie taki code-review.

Nadal robisz w unsafe sposób generowanie jsona (dodatkowo jedną z gorszych wydajnościowo metod na osadzanie zmiennych w tekście). Zamiast pisać:

data='{ "amount": "%s", "redirectUrl": "%s", "webhookUrl": "%s"}' % (amount,redirect_url,webhook_url,)

W requests można użyć:

json={'amount': amount, 'redirectUrl': redirect_url, 'webhookUrl': webhook_url}

A jakby tak:

if info["payed"]:
  return True
return False

Zamienić na:

return info["payed"]

No generalnie to nadal jest to taki wrapper bez realnej użyteczności, bo zwraca tylko wynik #json() z requests.

3lajki

Dzięki, poprawię, co musiałbym zrobić, aby to nie było wrapperem bez realnej użyteczności? Dodać więcej funkcji, zwracać całość jako request?

Zazwyczaj po prostu zwraca się zdeserializowane obiekty, a nie dict z wartościami.

1lajk

Dzięki wielkie za code-review, zapamiętam rady =)