package org.bml.bml.gen.test.application.v0.models import com.jakewharton.retrofit2.adapter.rxjava2.HttpException import io.apibuilder.app.ApiNetworkCallResponse import io.apibuilder.app.CommonNetworkErrors import io.apibuilder.app.CommonNetworkErrors.UnknownNetworkError import io.apibuilder.app.EitherCallOrCommonNetworkError import io.apibuilder.app.EitherCallOrCommonNetworkError.CallError import io.apibuilder.app.EitherCallOrCommonNetworkError.CommonNetworkError import io.reactivex.Single import java.util.UUID import kotlin.Boolean import kotlin.Int import kotlin.String import kotlin.Throwable import kotlin.collections.List import retrofit2.Response import retrofit2.http.Body import retrofit2.http.DELETE import retrofit2.http.GET import retrofit2.http.Header import retrofit2.http.POST import retrofit2.http.Path import retrofit2.http.Query /** * This code was generated by [models.generator.kotlin.KotlinGenerator] */ interface AccountsClient { @POST(value="accounts") fun postAccounts( @Header(value="Authorization") authorization: String, @Query(value="test") test: Boolean?, @Query(value="testDefault") testDefault: Boolean, @Body accountForm: AccountForm ): Single> @GET(value="accounts/{id}") fun getAccountsId(@Path(value="id") id: UUID, @Header(value="Authorization") authorization: String): Single> /** * A mock to test returning a raw array. This is not a practical method to implement in a * production environment. In production you would return a page object but here we want to test to * ensure generators are handling raw array return value. */ @GET(value="accounts/{id}/foo") fun getAccountsIdFoo( @Path(value="id") id: UUID, @Header(value="Authorization") authorization: String, @Query(value="name") name: String?, @Query(value="page") page: Int, @Query(value="count") count: Int ): Single>> /** * A mock to test returning a raw array. This is not a practical method to implement in a * production environment. In production you would return a page object but here we want to test to * ensure generators are handling raw array return value. */ @GET(value="accounts") fun getAccounts( @Header(value="Authorization") authorization: String, @Query(value="name") name: String?, @Query(value="page") page: Int, @Query(value="count") count: Int ): Single>> /** * Delete an Account resource by id. */ @DELETE(value="accounts/{id}") fun deleteAccountsId(@Path(value="id") id: UUID, @Header(value="Authorization") authorization: String): Single> object PostAccountsCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 409 -> CallError (ErrorResponses.Error409) 400 -> body?.let { CallError(ErrorResponses.Error400(org.bml.validation.v0.models.FieldValidationResponse.parseJson(body))) } ?: CommonNetworkError(UnknownNetworkError(400, "No Body")) 401 -> CallError (ErrorResponses.Error401) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: AccountsClient, authorization: String, test: Boolean?, testDefault: Boolean, accountForm: AccountForm ) = ApiNetworkCallResponse( client.postAccounts(authorization,test,testDefault,accountForm) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) sealed class ErrorResponses { object Error409 : ErrorResponses() data class Error400( val data: org.bml.validation.v0.models.FieldValidationResponse ) : ErrorResponses() object Error401 : ErrorResponses() } } object GetAccountsIdCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 400 -> body?.let { CallError(ErrorResponses.Error400(org.bml.validation.v0.models.FieldValidationResponse.parseJson(body))) } ?: CommonNetworkError(UnknownNetworkError(400, "No Body")) 401 -> CallError (ErrorResponses.Error401) 404 -> CallError (ErrorResponses.Error404) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: AccountsClient, id: UUID, authorization: String ) = ApiNetworkCallResponse( client.getAccountsId(id,authorization) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) sealed class ErrorResponses { data class Error400( val data: org.bml.validation.v0.models.FieldValidationResponse ) : ErrorResponses() object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } object GetAccountsIdFooCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 400 -> body?.let { CallError(ErrorResponses.Error400(org.bml.validation.v0.models.FieldValidationResponse.parseJson(body))) } ?: CommonNetworkError(UnknownNetworkError(400, "No Body")) 401 -> CallError (ErrorResponses.Error401) 404 -> CallError (ErrorResponses.Error404) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: AccountsClient, id: UUID, authorization: String, name: String?, page: Int, count: Int ) = ApiNetworkCallResponse( client.getAccountsIdFoo(id,authorization,name,page,count) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) /** * Error Responses for getAccountsIdFoo - A mock to test returning a raw array. This is not a * practical method to implement in a production environment. In production you would return a page * object but here we want to test to ensure generators are handling raw array return value. */ sealed class ErrorResponses { data class Error400( val data: org.bml.validation.v0.models.FieldValidationResponse ) : ErrorResponses() object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } object GetAccountsCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 400 -> body?.let { CallError(ErrorResponses.Error400(org.bml.validation.v0.models.FieldValidationResponse.parseJson(body))) } ?: CommonNetworkError(UnknownNetworkError(400, "No Body")) 401 -> CallError (ErrorResponses.Error401) 404 -> CallError (ErrorResponses.Error404) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: AccountsClient, authorization: String, name: String?, page: Int, count: Int ) = ApiNetworkCallResponse( client.getAccounts(authorization,name,page,count) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) /** * Error Responses for getAccounts - A mock to test returning a raw array. This is not a * practical method to implement in a production environment. In production you would return a page * object but here we want to test to ensure generators are handling raw array return value. */ sealed class ErrorResponses { data class Error400( val data: org.bml.validation.v0.models.FieldValidationResponse ) : ErrorResponses() object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } object DeleteAccountsIdCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 400 -> body?.let { CallError(ErrorResponses.Error400(org.bml.validation.v0.models.FieldValidationResponse.parseJson(body))) } ?: CommonNetworkError(UnknownNetworkError(400, "No Body")) 401 -> CallError (ErrorResponses.Error401) 404 -> CallError (ErrorResponses.Error404) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: AccountsClient, id: UUID, authorization: String ) = ApiNetworkCallResponse( client.deleteAccountsId(id,authorization) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) /** * Error Responses for deleteAccountsId - Delete an Account resource by id. */ sealed class ErrorResponses { data class Error400( val data: org.bml.validation.v0.models.FieldValidationResponse ) : ErrorResponses() object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } }