Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.rifki.kotlin.mygithubapi.viewModel
- import android.util.Log
- import androidx.lifecycle.LiveData
- import androidx.lifecycle.MutableLiveData
- import androidx.lifecycle.ViewModel
- import com.loopj.android.http.AsyncHttpClient
- import com.loopj.android.http.AsyncHttpResponseHandler
- import com.rifki.kotlin.mygithubapi.model.GithubUser
- import cz.msebera.android.httpclient.Header
- import org.json.JSONObject
- class MainViewModel : ViewModel() {
- private val listGithubUsers = MutableLiveData<ArrayList<GithubUser>>()
- fun setSearchGithubUsers(username: String) {
- val listUsers = ArrayList<GithubUser>()
- val client = AsyncHttpClient()
- client.addHeader("Authorization", "token c0fe115e4b418444bb740ce46c68022304e9d465")
- client.addHeader("User-Agent", "request")
- val url = "https://api.github.com/search/users?q=$username"
- client.get(url, object : AsyncHttpResponseHandler() {
- override fun onSuccess(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray) {
- //Log.d(TAG, result)
- val result = String(responseBody)
- try {
- val responseObject = JSONObject(result)
- val jsonArray = responseObject.getJSONArray("items")
- for (i in 0 until jsonArray.length()) {
- val user = jsonArray.getJSONObject(i)
- val githubUser = GithubUser()
- githubUser.username = user.getString("login")
- githubUser.avatar = user.getString("avatar_url")
- listUsers.add(githubUser)
- //setGithubUserDetail(username)
- }
- listGithubUsers.postValue(listUsers)
- } catch (e: Exception) {
- //Toast.makeText(this@MainViewModel, e.message, Toast.LENGTH_SHORT).show()
- e.printStackTrace()
- }
- }
- override fun onFailure(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray?, error: Throwable) {
- Log.d("onFailure", error.message.toString())
- val errorMessage = when (statusCode) {
- 401 -> "$statusCode : Bad Request"
- 403 -> "$statusCode : Forbidden"
- 404 -> "$statusCode : Not Found"
- else -> "$statusCode : ${error.message + " GIT"}"
- }
- }
- })
- }
- fun getSearchGithubUsers(): LiveData<ArrayList<GithubUser>> {
- return listGithubUsers
- }
- fun getGithubUsersDetail(username: String) {
- val listUsers = ArrayList<GithubUser>()
- val client = AsyncHttpClient()
- client.addHeader("Authorization", "token c0fe115e4b418444bb740ce46c68022304e9d465")
- client.addHeader("User-Agent", "request")
- val url = "https://api.github.com/users/$username"
- client.get(url, object : AsyncHttpResponseHandler() {
- override fun onSuccess(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray) {
- val result = String(responseBody)
- //Log.d(TAG, result)
- try {
- val jsonObject = JSONObject(result)
- val githubUser = GithubUser()
- githubUser.username = jsonObject.getString("login").toString()
- githubUser.name = jsonObject.getString("name").toString()
- githubUser.avatar = jsonObject.getString("avatar_url").toString()
- githubUser.company = jsonObject.getString("company").toString()
- githubUser.location = jsonObject.getString("location").toString()
- githubUser.repository = jsonObject.getInt("public_repos")
- githubUser. followers = jsonObject.getInt("followers")
- githubUser.following = jsonObject.getInt("following")
- listUsers.add(githubUser)
- listGithubUsers.postValue(listUsers)
- } catch (e: Exception) {
- //Toast.makeText(this@MainViewModel, e.message, Toast.LENGTH_SHORT).show()
- e.printStackTrace()
- }
- }
- override fun onFailure(statusCode: Int, headers: Array<Header>?, responseBody: ByteArray?, error: Throwable) {
- Log.d("onFailur", error.message.toString())
- val errorMessage = when (statusCode) {
- 401 -> "$statusCode : Bad Request"
- 403 -> "$statusCode : Forbidden"
- 404 -> "$statusCode : Not Found"
- else -> "$statusCode : ${error.message + " GIT"}"
- }
- }
- })
- }
- }
Add Comment
Please, Sign In to add comment