/** * Traccar * Traccar GPS tracking server API documentation. To use the API you need to have a server instance. For testing purposes you can use one of free [demo servers](https://www.traccar.org/demo-server/). For production use you can install your own server or get a [subscription service](https://www.traccar.org/product/tracking-server/). * * OpenAPI spec version: 4.14 * Contact: support@traccar.org * * NOTE: This class is auto generated by the swagger code generator program. * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. */ package mx.trackermap.TrackerMap.client.apis import com.russhwolf.settings.Settings import mx.trackermap.TrackerMap.client.models.User import mx.trackermap.TrackerMap.client.infrastructure.* const val SERVER_URL_KEY = "server_url" const val ACCESS_TOKEN_KEY = "access_token" class SessionApi(defaultBaseUrl: String) : ApiClient(defaultBaseUrl) { /** * Close the Session * * @return void */ suspend fun sessionDelete() { val localVariableConfig = RequestConfig( RequestMethod.DELETE, "/session" ) val response = request( localVariableConfig ) return when (response.responseType) { ResponseType.Success -> { val settings = Settings() settings.remove(ACCESS_TOKEN_KEY) } ResponseType.Informational -> TODO() ResponseType.Redirection -> TODO() ResponseType.ClientError -> throw ClientException( (response as ClientError<*>).body as? String ?: "Client error" ) ResponseType.ServerError -> throw ServerException( (response as ServerError<*>).message ?: "Server error" ) } } /** * Fetch Session information * * @param token (optional) * @return User */ @Suppress("UNCHECKED_CAST") suspend fun sessionGet(token: String? = null): User { val query: MutableMap> = mutableMapOf() token?.let { query["userId"] = listOf(it) } val localVariableConfig = RequestConfig( RequestMethod.GET, "/session", query = query ) val response = request( localVariableConfig ) return when (response.responseType) { ResponseType.Success -> (response as Success<*>).data as User ResponseType.Informational -> TODO() ResponseType.Redirection -> TODO() ResponseType.ClientError -> throw ClientException( (response as ClientError<*>).body as? String ?: "Client error" ) ResponseType.ServerError -> throw ServerException( (response as ServerError<*>).message ?: "Server error" ) } } /** * Create a new Session * * @param email * @param password * @return User */ @Suppress("UNCHECKED_CAST") suspend fun sessionPost(email: String, password: String): User { val localVariableBody = mapOf("email" to email, "password" to password) val localVariableHeaders = mapOf("Content-Type" to "application/x-www-form-urlencoded") val localVariableConfig = RequestConfig( RequestMethod.POST, "/session", headers = localVariableHeaders ) val response = request( localVariableConfig, localVariableBody ) return when (response.responseType) { ResponseType.Success -> { val cookie = response.headers .values .flatten() .find { it.contains("JSESSIONID") }!! .replace("; Path=/", "") this.token = cookie val settings = Settings() settings.putString(ACCESS_TOKEN_KEY, cookie) (response as Success<*>).data as User } ResponseType.Informational -> TODO() ResponseType.Redirection -> TODO() ResponseType.ClientError -> throw ClientException( (response as ClientError<*>).body as? String ?: "Client error" ) ResponseType.ServerError -> throw ServerException( (response as ServerError<*>).message ?: "Server error" ) } } }