package com.afrosoft.apibuilder.api.v0.models import com.fasterxml.jackson.core.type.TypeReference 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 kotlin.Any import kotlin.Boolean import kotlin.Long import kotlin.String import kotlin.Throwable import kotlin.Unit import kotlin.collections.List import retrofit2.Response import retrofit2.http.Body import retrofit2.http.DELETE import retrofit2.http.GET import retrofit2.http.POST import retrofit2.http.PUT import retrofit2.http.Path import retrofit2.http.Query /** * This code was generated by [models.generator.kotlin.KotlinGenerator] */ interface VersionsClient { /** * Search all versions of this application. Results are always paginated. */ @GET(value="{orgKey}/{applicationKey}") fun getOrgKeyApplicationKey( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Query(value="limit") limit: Long, @Query(value="offset") offset: Long ): Single>> /** * Retrieve a specific version of an application. */ @GET(value="{orgKey}/{applicationKey}/{version}") fun getOrgKeyApplicationKeyVersion( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Path(value="version") version: String ): Single> /** * Create a new version for an application */ @POST(value="{orgKey}/{version}") fun postOrgKeyVersion( @Path(value="orgKey") orgKey: String, @Path(value="version") version: String, @Body versionForm: VersionForm ): Single> /** * Upsert a version of an application */ @PUT(value="{orgKey}/{applicationKey}/{version}") fun putOrgKeyApplicationKeyVersion( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Path(value="version") version: String, @Body versionForm: VersionForm ): Single> /** * Deletes a specific version. */ @DELETE(value="{orgKey}/{applicationKey}/{version}") fun deleteOrgKeyApplicationKeyVersion( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Path(value="version") version: String ): Single> /** * Generates an example JSON document of the type with the specified name. */ @GET(value="{orgKey}/{applicationKey}/{version}/example/{type_name}") fun getOrgKeyApplicationKeyVersionExampleTypeName( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Path(value="version") version: String, @Path(value="type_name") typeName: String, @Query(value="sub_type_name") subTypeName: String?, @Query(value="optional_fields") optionalFields: Boolean? ): Single> object GetOrgKeyApplicationKeyVersionCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 404 -> CallError (ErrorResponses.Error404) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: VersionsClient, orgKey: String, applicationKey: String, version: String ) = ApiNetworkCallResponse( client.getOrgKeyApplicationKeyVersion(orgKey,applicationKey,version) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) /** * Error Responses for getOrgKeyApplicationKeyVersion - Retrieve a specific version of an * application. */ sealed class ErrorResponses { object Error404 : ErrorResponses() } } object PostOrgKeyVersionCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 409 -> body?.let { CallError(ErrorResponses.Error409(com.afrosoft.apibuilder.api.v0.models.JacksonObjectMapperFactory.create().readValue(body, ErrorListTypeReference ))) } ?: CommonNetworkError(UnknownNetworkError(409, "No Body")) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: VersionsClient, orgKey: String, version: String, versionForm: VersionForm ) = ApiNetworkCallResponse( client.postOrgKeyVersion(orgKey,version,versionForm) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) object ErrorListTypeReference : TypeReference>() /** * Error Responses for postOrgKeyVersion - Create a new version for an application */ sealed class ErrorResponses { data class Error409( val data: List ) : ErrorResponses() } } object PutOrgKeyApplicationKeyVersionCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 409 -> body?.let { CallError(ErrorResponses.Error409(com.afrosoft.apibuilder.api.v0.models.JacksonObjectMapperFactory.create().readValue(body, ErrorListTypeReference ))) } ?: CommonNetworkError(UnknownNetworkError(409, "No Body")) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: VersionsClient, orgKey: String, applicationKey: String, version: String, versionForm: VersionForm ) = ApiNetworkCallResponse( client.putOrgKeyApplicationKeyVersion(orgKey,applicationKey,version,versionForm) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) object ErrorListTypeReference : TypeReference>() /** * Error Responses for putOrgKeyApplicationKeyVersion - Upsert a version of an application */ sealed class ErrorResponses { data class Error409( val data: List ) : ErrorResponses() } } object DeleteOrgKeyApplicationKeyVersionCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 401 -> CallError (ErrorResponses.Error401) 404 -> CallError (ErrorResponses.Error404) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: VersionsClient, orgKey: String, applicationKey: String, version: String ) = ApiNetworkCallResponse( client.deleteOrgKeyApplicationKeyVersion(orgKey,applicationKey,version) .map{ response -> if(response.isSuccessful) Pair(Unit, response.code()) else throw HttpException(response)} .map{it} , toError) /** * Error Responses for deleteOrgKeyApplicationKeyVersion - Deletes a specific version. */ sealed class ErrorResponses { object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } object GetOrgKeyApplicationKeyVersionExampleTypeNameCall { val toError: (Throwable) -> EitherCallOrCommonNetworkError = { t -> when (t) { is HttpException -> { val body: String? = t.response().errorBody()?.string() when (t.code()) { 404 -> CallError (ErrorResponses.Error404) else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } else -> CommonNetworkError(CommonNetworkErrors.processCommonNetworkError(t)) } } fun getCallAndErrorLambda( client: VersionsClient, orgKey: String, applicationKey: String, version: String, typeName: String, subTypeName: String?, optionalFields: Boolean? ) = ApiNetworkCallResponse( client.getOrgKeyApplicationKeyVersionExampleTypeName(orgKey,applicationKey,version,typeName,subTypeName,optionalFields) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) /** * Error Responses for getOrgKeyApplicationKeyVersionExampleTypeName - Generates an example JSON * document of the type with the specified name. */ sealed class ErrorResponses { object Error404 : ErrorResponses() } } }