p2play-app-android/app/src/main/java/org/libre/agosto/p2play/ajax/Auth.kt

112 lines
3.8 KiB
Kotlin

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
}
}