package org.libre.agosto.p2play.ajax import android.support.design.widget.Snackbar import android.util.JsonReader import android.util.Log import org.libre.agosto.p2play.ManagerSingleton import org.libre.agosto.p2play.models.TokenModel import org.libre.agosto.p2play.models.UserModel import java.io.InputStreamReader class Auth: Client() { val stockParams = "grant_type=password" fun login(username: String, password: String, client_id: String, client_secret: String): TokenModel{ var con = this._newCon("users/token","POST") val params:String= "$stockParams&username=$username&password=$password&client_id=$client_id&client_secret=$client_secret" con.outputStream.write(params.toByteArray()) var token = TokenModel() try { if(con.responseCode==200){ var response = InputStreamReader(con.inputStream) var data = JsonReader(response) data.beginObject() while(data.hasNext()){ val k = data.nextName() when(k.toString()){ "access_token" -> token.token = "Bearer " + data.nextString() else -> data.skipValue() } } data.endObject() token.status = 1 } else{ Log.d("Status", con.responseMessage) } } catch (err: Exception){ err.printStackTrace() token.status = 0 } return token } fun me(token: String): UserModel{ var con = this._newCon("users/me","GET", token) var user = UserModel() try { if(con.responseCode==200){ var response = InputStreamReader(con.inputStream) var data = JsonReader(response) data.beginObject() while(data.hasNext()){ val k = data.nextName() when(k.toString()){ "id" -> user.uuid = data.nextInt() "username" -> user.username = data.nextString() "email" -> user.email = data.nextString() "displayNSFW" -> user.nsfw = data.nextBoolean() "account" -> { data.beginObject() while (data.hasNext()){ val l = data.nextName() when(l.toString()){ "followersCount" -> user.followers = data.nextInt() "avatar" -> { data.beginObject() while (data.hasNext()){ val m = data.nextName() when (m.toString()){ "path" -> user.avatar = data.nextString() else -> data.skipValue() } } data.endObject() } else -> data.skipValue() } } data.endObject() } else -> data.skipValue() } } data.endObject() user.status = 1 } else{ Log.d("Status", con.responseMessage) } } catch (err: Exception){ err.printStackTrace() user.status = 0 } return user } }