ivallpl | 2020-05-18 15:40:42 UTC | #1
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 | 2020-05-18 15:57:27 UTC | #2
Przydałoby się także dla nie-sandboxa
ivallpl | 2020-05-18 16:01:10 UTC | #3
Poprawione, dziękuję.
Nieznajomy11 | 2020-05-18 21:23:20 UTC | #4
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 | 2020-05-18 22:20:21 UTC | #5
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 | 2020-05-18 23:47:32 UTC | #6
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 | 2020-05-19 08:40:44 UTC | #7
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 | 2020-05-19 10:11:22 UTC | #8
Zazwyczaj po prostu zwraca się zdeserializowane obiekty, a nie dict z wartościami.
ivallpl | 2020-05-19 10:17:12 UTC | #9
Dzięki wielkie za code-review, zapamiętam rady =)
ivallpl | 2020-08-19 13:25:27 UTC | #10
Było kilka bug fixów oraz poprawka urla dla sandboxu, dzięki @riko.dev :)
ivallpl | 2020-09-04 14:04:11 UTC | #11
odświeżam
anon95087592 | 2020-09-05 10:14:01 UTC | #12
[quote=”Nieznajomy11, post:6, topic:14847, full:true”]
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.
[/quote]
Zostanie to zatwierdzone do biblioteki?
system | 2021-03-04 10:14:02 UTC | #13
Ten temat został automatycznie zamknięty 180 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.