package com.afrosoft.apibuilder.api.v0.models import com.afrosoft.apibuilder.api.v0.enums.AppSortBy import com.afrosoft.apibuilder.api.v0.enums.SortOrder 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 java.util.UUID 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 ApplicationsClient { /** * Returns the versions assocoated with the specified application. The latest version is the first * result returned. */ @GET(value="{orgKey}/metadata/{applicationKey}/versions") fun getOrgKeyMetadataApplicationKeyVersions( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Query(value="limit") limit: Long, @Query(value="offset") offset: Long ): Single>> /** * Returns the latest version number as a string */ @GET(value="{orgKey}/metadata/{applicationKey}/versions/latest.txt") fun getOrgKeyMetadataApplicationKeyVersionsLatestTxt(@Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String): Single> /** * Search all applications. Results are always paginated. */ @GET(value="{orgKey}") fun getOrgKey( @Path(value="orgKey") orgKey: String, @Query(value="name") name: String?, @Query(value="guid") guid: UUID?, @Query(value="key") key: String?, @Query(value="has_version") hasVersion: Boolean?, @Query(value="limit") limit: Long, @Query(value="offset") offset: Long, @Query(value="sort_by") sortBy: AppSortBy?, @Query(value="order") order: SortOrder? ): Single>> /** * Create an application. */ @POST(value="{orgKey}") fun postOrgKey(@Path(value="orgKey") orgKey: String, @Body applicationForm: ApplicationForm): Single> /** * Updates an application. */ @PUT(value="{orgKey}/{applicationKey}") fun putOrgKeyApplicationKey( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Body applicationForm: ApplicationForm ): Single> /** * Deletes a specific application and its associated versions. */ @DELETE(value="{orgKey}/{applicationKey}") fun deleteOrgKeyApplicationKey(@Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String): Single> /** * Moves application to a new organization. */ @POST(value="{orgKey}/{applicationKey}/move") fun postOrgKeyApplicationKeyMove( @Path(value="orgKey") orgKey: String, @Path(value="applicationKey") applicationKey: String, @Body moveForm: MoveForm ): Single> object GetOrgKeyMetadataApplicationKeyVersionsCall { 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: ApplicationsClient, orgKey: String, applicationKey: String, limit: Long, offset: Long ) = ApiNetworkCallResponse( client.getOrgKeyMetadataApplicationKeyVersions(orgKey,applicationKey,limit,offset) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) /** * Error Responses for getOrgKeyMetadataApplicationKeyVersions - Returns the versions assocoated * with the specified application. The latest version is the first result returned. */ sealed class ErrorResponses { object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } object GetOrgKeyMetadataApplicationKeyVersionsLatestTxtCall { 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: ApplicationsClient, orgKey: String, applicationKey: String ) = ApiNetworkCallResponse( client.getOrgKeyMetadataApplicationKeyVersionsLatestTxt(orgKey,applicationKey) .map{ response -> if(response.isSuccessful) response.body()?.let { body -> Pair(body, response.code())} else throw HttpException(response)} .map{it} , toError) /** * Error Responses for getOrgKeyMetadataApplicationKeyVersionsLatestTxt - Returns the latest * version number as a string */ sealed class ErrorResponses { object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } object PostOrgKeyCall { 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: ApplicationsClient, orgKey: String, applicationForm: ApplicationForm ) = ApiNetworkCallResponse( client.postOrgKey(orgKey,applicationForm) .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 postOrgKey - Create an application. */ sealed class ErrorResponses { data class Error409( val data: List ) : ErrorResponses() } } object PutOrgKeyApplicationKeyCall { 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: ApplicationsClient, orgKey: String, applicationKey: String, applicationForm: ApplicationForm ) = ApiNetworkCallResponse( client.putOrgKeyApplicationKey(orgKey,applicationKey,applicationForm) .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 putOrgKeyApplicationKey - Updates an application. */ sealed class ErrorResponses { data class Error409( val data: List ) : ErrorResponses() } } object DeleteOrgKeyApplicationKeyCall { 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: ApplicationsClient, orgKey: String, applicationKey: String ) = ApiNetworkCallResponse( client.deleteOrgKeyApplicationKey(orgKey,applicationKey) .map{ response -> if(response.isSuccessful) Pair(Unit, response.code()) else throw HttpException(response)} .map{it} , toError) /** * Error Responses for deleteOrgKeyApplicationKey - Deletes a specific application and its * associated versions. */ sealed class ErrorResponses { object Error401 : ErrorResponses() object Error404 : ErrorResponses() } } object PostOrgKeyApplicationKeyMoveCall { 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: ApplicationsClient, orgKey: String, applicationKey: String, moveForm: MoveForm ) = ApiNetworkCallResponse( client.postOrgKeyApplicationKeyMove(orgKey,applicationKey,moveForm) .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 postOrgKeyApplicationKeyMove - Moves application to a new organization. */ sealed class ErrorResponses { data class Error409( val data: List ) : ErrorResponses() } } }