Scala sttp4 jsoniter wip #1
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To nie jest niestety skończone, ale myśle że udało się rozwiązać na pewno kilka problemów a też nie wszystko ten codegen musi implementować.
Co zostało zrobione:
Co zostało do zrobienia:
Blockery
formatIdentifier tak formatuję że często pojawiają się takie same case'y w enumach- tutaj jest to rozwiązane, formatIdentifier nadal psuję w niektórych przypadkach nazwy pól w modelachserializacja enumów w query oraz forms ( trzeba zobaczyć jak to gra z ewentualnymi codecami jsonitera)na enumach jest wykorzystywany codec jsnoniteraReszta:
Myśle że można z niewielkim wysiłkiem dodać wsparcie dla cookiesDoneMogę dość prosto dodać możliwość serializacji parametrów za pomocą FromSerializable za pomocą typeclassy - jeśli taka typeclassa będzie w scope to nadpisze domyślną próbe serializacji - to by pozwoliło ogarnąć te wszystkie dziwne przypadki ze stripeDodałem typeclassy dla serializacji tych parametrów. Wystarczy że będzie w scopie danego endpointaOgólnie wydaję mi się że stripe wymaga na pewno spojrzenia co tam jest dokładnie. Np. są tam chyba rekursywne typy, przez co jsoniter nigdy nie jest w stanie stworzyć codeców - kręci się aż skończy się pamięć.
Stan na 05706ee kompiluję bez problemu:
W kubeapi jest dziwny problem gdzie jeden parametr trafia jako form param do danych szablony zamiast pathParam - tu chyba nic nie da się zrobić, jakiś błąd w codegen.
Github nie kompiluję się ze względu na dwa brakujące enumy oraz błąd w nazwach pól w modelu (dokładnie są takie pola jak "+1" oraz "-1").
W Stripe wydaję się że głównie błąd w codecach - rekursywne typy w jsoniter oraz brak serializacji przypadków niezgodnych ze standardem.