rifki_cs29

MainViewModel

Jun 8th, 2020
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.85 KB | None | 0 0
  1. package com.rifki.kotlin.mygithubapi.viewModel
  2.  
  3. import android.util.Log
  4. import androidx.lifecycle.LiveData
  5. import androidx.lifecycle.MutableLiveData
  6. import androidx.lifecycle.ViewModel
  7. import com.loopj.android.http.AsyncHttpClient
  8. import com.loopj.android.http.AsyncHttpResponseHandler
  9. import com.rifki.kotlin.mygithubapi.model.GithubUser
  10. import cz.msebera.android.httpclient.Header
  11. import org.json.JSONObject
  12.  
  13. class MainViewModel : ViewModel() {
  14.     private val listGithubUsers = MutableLiveData<ArrayList<GithubUser>>()
  15.  
  16.     fun setSearchGithubUsers(username: String) {
  17.         val listUsers = ArrayList<GithubUser>()
  18.         val client = AsyncHttpClient()
  19.         client.addHeader("Authorization", "token c0fe115e4b418444bb740ce46c68022304e9d465")
  20.         client.addHeader("User-Agent", "request")
  21.         val url = "https://api.github.com/search/users?q=$username"
  22.         client.get(url, object : AsyncHttpResponseHandler() {
  23.             override fun onSuccess(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray) {
  24.                 //Log.d(TAG, result)
  25.                 val result = String(responseBody)
  26.                 try {
  27.                     val responseObject = JSONObject(result)
  28.                     val jsonArray = responseObject.getJSONArray("items")
  29.                     for (i in 0 until jsonArray.length()) {
  30.                         val user = jsonArray.getJSONObject(i)
  31.                         val githubUser = GithubUser()
  32.                         githubUser.username = user.getString("login")
  33.                         githubUser.avatar = user.getString("avatar_url")
  34.                         listUsers.add(githubUser)
  35.                         //setGithubUserDetail(username)
  36.                     }
  37.                     listGithubUsers.postValue(listUsers)
  38.                 } catch (e: Exception) {
  39.                     //Toast.makeText(this@MainViewModel, e.message, Toast.LENGTH_SHORT).show()
  40.                     e.printStackTrace()
  41.                 }
  42.             }
  43.  
  44.             override fun onFailure(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray?, error: Throwable) {
  45.                 Log.d("onFailure", error.message.toString())
  46.  
  47.                     val errorMessage = when (statusCode) {
  48.                         401 -> "$statusCode : Bad Request"
  49.                         403 -> "$statusCode : Forbidden"
  50.                         404 -> "$statusCode : Not Found"
  51.                         else -> "$statusCode : ${error.message + " GIT"}"
  52.                     }
  53.             }
  54.         })
  55.     }
  56.  
  57.     fun getSearchGithubUsers(): LiveData<ArrayList<GithubUser>> {
  58.         return listGithubUsers
  59.     }
  60.  
  61.     fun getGithubUsersDetail(username: String) {
  62.         val listUsers = ArrayList<GithubUser>()
  63.         val client = AsyncHttpClient()
  64.         client.addHeader("Authorization", "token c0fe115e4b418444bb740ce46c68022304e9d465")
  65.         client.addHeader("User-Agent", "request")
  66.         val url = "https://api.github.com/users/$username"
  67.         client.get(url, object : AsyncHttpResponseHandler() {
  68.             override fun onSuccess(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray) {
  69.                 val result = String(responseBody)
  70.                 //Log.d(TAG, result)
  71.                 try {
  72.  
  73.                     val jsonObject = JSONObject(result)
  74.                     val githubUser = GithubUser()
  75.                     githubUser.username = jsonObject.getString("login").toString()
  76.                     githubUser.name = jsonObject.getString("name").toString()
  77.                     githubUser.avatar = jsonObject.getString("avatar_url").toString()
  78.                     githubUser.company = jsonObject.getString("company").toString()
  79.                     githubUser.location = jsonObject.getString("location").toString()
  80.                     githubUser.repository = jsonObject.getInt("public_repos")
  81.                     githubUser. followers = jsonObject.getInt("followers")
  82.                     githubUser.following = jsonObject.getInt("following")
  83.  
  84.                     listUsers.add(githubUser)
  85.                     listGithubUsers.postValue(listUsers)
  86.                 } catch (e: Exception) {
  87.                     //Toast.makeText(this@MainViewModel, e.message, Toast.LENGTH_SHORT).show()
  88.                     e.printStackTrace()
  89.                 }
  90.             }
  91.  
  92.             override fun onFailure(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray?, error: Throwable) {
  93.                 Log.d("onFailur", error.message.toString())
  94.                     val errorMessage = when (statusCode) {
  95.                         401 -> "$statusCode : Bad Request"
  96.                         403 -> "$statusCode : Forbidden"
  97.                         404 -> "$statusCode : Not Found"
  98.                         else -> "$statusCode : ${error.message + " GIT"}"
  99.                     }
  100.             }
  101.         })
  102.     }
  103.  
  104. }
Add Comment
Please, Sign In to add comment