Biblioteka dla api v4 w pythonie

Projekty użytkowników
ivallpl
ivallpl

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. https://github.com/ivall/lvlup-sdk-python

bvcz
bvcz

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

ivallpl
ivallpl

Poprawione, dziękuję.

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

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):

https://github.com/OkaeriPoland/ai-censor-python-client/

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.

ivallpl
ivallpl

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.

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

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.

ivallpl
ivallpl

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?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

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

ivallpl
ivallpl

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

ivallpl
ivallpl

Było kilka bug fixów oraz poprawka urla dla sandboxu, dzięki @riko.dev :)

ivallpl
ivallpl

odświeżam

anon95087592
anon95087592

Nieznajomy11:

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.

Zostanie to zatwierdzone do biblioteki?

system
system

Ten temat został automatycznie zamknięty 180 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.