Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
1,162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 24.88 KB | None | 0 0
  1. package com.example.nepravprofilechooser
  2.  
  3. import android.app.Activity
  4. import android.content.Context
  5. import android.content.ContextWrapper
  6. import android.content.Intent
  7. import android.graphics.Bitmap
  8. import android.graphics.BitmapFactory
  9. import android.net.Uri
  10. import android.os.Environment
  11. import android.os.Looper
  12. import android.os.Parcel
  13. import android.os.Parcelable
  14. import android.util.Log
  15. import android.widget.ProgressBar
  16. import android.widget.Toast
  17. import com.google.gson.Gson
  18. import com.google.gson.reflect.TypeToken
  19. import kotlinx.android.synthetic.main.activity_picture.*
  20. import okhttp3.*
  21. import okhttp3.MediaType.Companion.toMediaTypeOrNull
  22. import okhttp3.RequestBody.Companion.toRequestBody
  23. import okhttp3.logging.HttpLoggingInterceptor
  24. import okio.ByteString
  25. import java.io.*
  26.  
  27.  
  28. class ServerConnection():Parcelable {
  29.  
  30.     private var APP_TOKEN:String? = ""
  31.     private var APP_USER_ID:Int = 0
  32.     private var SOCIAL_TOKEN:String? = ""
  33.     private var SOCIAL_ID:Int = 0
  34.     private var EMAIL:String? = ""
  35.     private var EXPIRY_TIME:Int = 0
  36.     private var AUTH_TYPE:String? = ""
  37.     private val MAIN_URL = "http://neprav.fun:8080/api/v0/"
  38.     private val NORMAL_CLOSURE_STATUS = 1000
  39.     private var webSocket:WebSocket? = null
  40.  
  41.     private var logging = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
  42.         override fun log(message: String) {
  43.             Log.d("LOGGER", message)
  44.         }
  45.     }).setLevel(HttpLoggingInterceptor.Level.HEADERS)
  46.  
  47.  
  48.     val gson = Gson()
  49.  
  50.     private val client = OkHttpClient.Builder()
  51.         .addInterceptor(logging)
  52.         .retryOnConnectionFailure(retryOnConnectionFailure = true)
  53.         .build()
  54.  
  55.     constructor(parcel: Parcel) : this() {
  56.         APP_TOKEN = parcel.readString()
  57.         APP_USER_ID = parcel.readInt()
  58.         SOCIAL_TOKEN = parcel.readString()
  59.         SOCIAL_ID = parcel.readInt()
  60.         EMAIL = parcel.readString()
  61.         EXPIRY_TIME = parcel.readInt()
  62.         AUTH_TYPE = parcel.readString()
  63.  
  64.     }
  65.  
  66.     private fun loadAppTokenFromMemory(activity: Activity) {
  67.         // Подгрузка апптокена и юзер айди из памяти
  68.         val sharedPreferences = activity.getPreferences(Context.MODE_PRIVATE)
  69.         APP_TOKEN = sharedPreferences.getString("app_token", APP_TOKEN)
  70.         APP_USER_ID = sharedPreferences.getInt("app_user_id", APP_USER_ID)
  71.         Log.d("LoadingTag", "App token: $APP_TOKEN  and App_user id: $APP_USER_ID")
  72.     }
  73.  
  74.     private fun loadSocialFromMemory(activity:Activity) {
  75.         // Подгрузка инфы о социальной сети из памяти
  76.         val sharedPreferences = activity.getPreferences(Context.MODE_PRIVATE)
  77.         SOCIAL_ID = sharedPreferences.getInt("social_id", SOCIAL_ID)
  78.         SOCIAL_TOKEN = sharedPreferences.getString("social_token", SOCIAL_TOKEN)
  79.         EMAIL = sharedPreferences.getString("email", EMAIL)
  80.         EXPIRY_TIME = sharedPreferences.getInt("expiry_time", EXPIRY_TIME)
  81.         AUTH_TYPE = sharedPreferences.getString("auth_type", AUTH_TYPE)
  82.         Log.d("LoadingTag", "SOCIAL_ID: $SOCIAL_ID  \n  SOCIAL_TOKEN: $SOCIAL_TOKEN \n EMAIN: $EMAIL")
  83.     }
  84.  
  85.     private fun saveLoginData(activity: Activity, appToken: String, appUserId: Int) {
  86.         val pref = activity.getPreferences(Context.MODE_PRIVATE)
  87.         with(pref.edit()) {
  88.             putString("app_token", appToken)
  89.             putInt("app_user_id", appUserId)
  90.             commit()
  91.         }
  92.  
  93.     }
  94.  
  95.     // https://stackoverflow.com/questions/649154/save-bitmap-to-location
  96.     private fun saveBitmap(bitmap: Bitmap, activity: Activity) {
  97.         val cw = ContextWrapper(activity.application)
  98.         val directory: File = cw.getDir("profile", Context.MODE_PRIVATE)
  99.         if (!directory.exists()) {
  100.             directory.mkdir()
  101.         }
  102.         val mypath = File(directory, "profilePicture.png")
  103.         Log.d("SavePicture", mypath.absolutePath)
  104.         var fos: FileOutputStream? = null
  105.         try {
  106.             fos = FileOutputStream(mypath)
  107.             bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)
  108.             fos!!.close()
  109.         } catch (e: Exception) {
  110.             Log.d("SavePicture", e.message, e)
  111.         }
  112.     }
  113.     fun loadBitmap(activity: Activity):Bitmap? {
  114.         var bitmap:Bitmap? = null
  115.         val cw = ContextWrapper(activity.application)
  116.         val directory: File = cw.getDir("profile", Context.MODE_PRIVATE)
  117.         val mypath = File(directory, "profilePicture.png")
  118.         if (!mypath.exists()) {
  119.             // пикча отсутствует
  120.             return null
  121.         }
  122.         var fil: FileInputStream? = null
  123.         try {
  124.             fil = FileInputStream(mypath)
  125.             bitmap = BitmapFactory.decodeFile(mypath.absolutePath)
  126.             fil.close()
  127.         } catch (e:java.lang.Exception) {
  128.             Log.e("LoadPicture", e.message, e)
  129.             return null
  130.         }
  131.         return bitmap
  132.     }
  133.  
  134.  
  135.     fun socialNetworkAuthorize(activity:LoginActivity, authType:String, authToken:String, email:String, socialUserId:Int, expiresIn: Int) {
  136.         // Наполнение запроса информацией
  137.         val mapItems: MutableMap<String, Any> = HashMap()
  138.         mapItems["auth_type"] = authType
  139.         mapItems["auth_token"] = authToken
  140.         mapItems["email"] = email
  141.         mapItems["social_user_id"] = socialUserId
  142.         mapItems["expires_in"] = expiresIn
  143.         val json = gson.toJson(mapItems)
  144.         val url = MAIN_URL + "signup"
  145.         Log.d("serverConnection", "the auth json is: " + json)
  146.  
  147.         val formBody = json.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
  148.  
  149.         val request = Request.Builder()
  150.             .url(url)
  151.             .post(formBody)
  152.             .build()
  153.  
  154.         client.newCall(request).enqueue(object: Callback {
  155.             override fun onFailure(call: Call, e: IOException) {
  156. //                val pref = activity.getPreferences(Context.MODE_PRIVATE)
  157. //                with (pref.edit()) {
  158. //                    putString("app_token", "kek")
  159. //                    putString("user_id", "kek")
  160. //                    commit()
  161. //                }
  162.                 val errors = StringWriter()
  163.                 e.printStackTrace(PrintWriter(errors))
  164.                 Log.d("serverConnection", errors.toString())
  165.             }
  166.  
  167.             override fun onResponse(call: Call, response: Response) {
  168.                 Log.d("serverConnection", "Response code is: " + response.code)
  169. //               Если код 200 и все класс на авторизации через соцсеть
  170.                 if (response.code == 200) {
  171.                     val body = response.body!!.string()
  172.                     response.body!!.close()
  173.                     Log.d("testConnection", "response body is $body")
  174.                     val data = gson.fromJson(body, Map::class.java)
  175.                     Log.d("testConnection", data.toString())
  176.                     APP_TOKEN = data["app_token"] as String
  177.                     APP_USER_ID = (data["app_user_id"] as Double).toInt()
  178.                     Log.d("testConnection", APP_TOKEN + " " + APP_USER_ID)
  179.                     saveLoginData(activity, APP_TOKEN!!, APP_USER_ID)
  180.                     // отправить на проверку авы
  181.                     getProfilePicture(activity)
  182. //
  183.                 } else if (response.code == 409) {
  184.                     Log.d("serverConnection", "SOCIAL NETWORK TOKEN IS INVALID")
  185.                 }
  186.             }
  187.         })
  188.  
  189.     }
  190.  
  191.     //  МЕТОД LOGIN, вызывается при старте, если есть юзер айди и токен
  192.     fun login(activity:LoginActivity) {
  193.         loadAppTokenFromMemory(activity)
  194.         // выход, если нет юзер айди
  195.         if (APP_USER_ID == 0) return
  196.         val mapItems: MutableMap<String, Any?> = HashMap()
  197.         mapItems["app_token"] = APP_TOKEN
  198.         mapItems["app_user_id"] = APP_USER_ID
  199.         val json = gson.toJson(mapItems)
  200.         val url = MAIN_URL + "login"
  201.         Log.d("serverConnection", "Login sending: " + json)
  202.  
  203.         val formBody = json.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
  204.  
  205.         val request = Request.Builder()
  206.             .url(url)
  207.             .post(formBody)
  208.             .build()
  209.  
  210.         client.newCall(request).enqueue(object: Callback {
  211.             override fun onFailure(call: Call, e: IOException) {
  212.                 val errors = StringWriter()
  213.                 e.printStackTrace(PrintWriter(errors))
  214.                 Log.d("serverConnection", errors.toString())
  215.             }
  216.  
  217.             override fun onResponse(call: Call, response: Response) {
  218.                 Log.d("serverConnection", "Response code is: " + response.code)
  219.                 // если все данные верны - пропускаем
  220.                 if (response.code == 200) {
  221.                     getProfilePicture(activity)
  222.                     // ЕСЛИ С АПП ТОКЕНОМ ВООБЩЕ ЧТО ЛИБО НЕ ТАК
  223.                 } else if (response.code == 401) {
  224.                     Log.d("serverConnection", "App token is invalid, trying with saved social info...")
  225.                     activity.run {
  226.                         runOnUiThread {
  227.                             Toast.makeText(
  228.                                 applicationContext,
  229.                                 "Response code is " + response.code + "\n App token is invalid, trying with saved social info...",
  230.                                 Toast.LENGTH_SHORT
  231.                             ).show()
  232.                         }
  233.                     }
  234.                     // Достаем креды сети из памяти
  235.                     loadSocialFromMemory(activity)
  236.                     // Авторизуемся с локальными кредами социалки:
  237.                     socialNetworkAuthorize(activity, AUTH_TYPE!!, SOCIAL_TOKEN!!, EMAIL!!, SOCIAL_ID, EXPIRY_TIME)
  238.  
  239.                 }
  240.  
  241.  
  242.             }
  243.  
  244.         })
  245.     }
  246.  
  247.     // Получить аватарку пользователя
  248.     fun getProfilePicture(activity: LoginActivity) {
  249.         val url = Uri.parse(MAIN_URL + "get_profile_picture")
  250.             .buildUpon()
  251.             .appendQueryParameter("app_token", APP_TOKEN)
  252.             .appendQueryParameter("app_user_id", APP_USER_ID.toString())
  253.             .build().toString()
  254.         Log.d("serverConnection", url)
  255.         val request = Request.Builder()
  256.             .url(url)
  257.             .build()
  258.  
  259.         client.newCall(request).enqueue(object: Callback {
  260.             override fun onFailure(call: Call, e: IOException) {
  261.                 Log.d("serverConnection", e.message)
  262.             }
  263.  
  264.             override fun onResponse(call: Call, response: Response) {
  265.                 if (response.code == 200) {
  266.                     // Если ава на сервере есть - пытаемся достать из памяти
  267.                     var profilePicture = loadBitmap(activity)
  268.                     if (profilePicture != null) {
  269.                         activity.run {
  270.                             runOnUiThread {
  271.                                 val intent = Intent(
  272.                                     activity.applicationContext,
  273.                                     CarouselActivity::class.java
  274.                                 )
  275.                                 intent.putExtra("server_connection", this.serverConnection)
  276.                                 intent.putExtra("profile_picture", ProfilePicture.encodeBitmap(profilePicture as Bitmap))
  277.                                 startActivity(intent)
  278.                             }
  279.                         }
  280.                         return
  281.                     }
  282.                     val body = response.body!!.string()
  283.                     response.body!!.close()
  284.                     Log.d("serverConnection", "getProfilePicture: $body")
  285.                     var tempMap: Map<String, Any> = gson.fromJson(body, object : TypeToken<Map<String, Any>>() {}.type)
  286.                     val pictures = gson.fromJson(tempMap.getValue("data").toString(), Array<ProfilePicture>::class.java)
  287.                     Log.d("serverConnection", pictures.joinToString())
  288.                     var humanPicture: ProfilePicture = pictures[1]
  289.                     var animalPicture: ProfilePicture = pictures[0]
  290.                     Log.d("SavePicture", humanPicture.type + animalPicture.type)
  291.                     for (picture in pictures) {
  292.                         downloadImage(picture, activity)
  293.                         if (picture.type.equals("people")) humanPicture = picture
  294.                         else animalPicture = picture
  295.                         Log.d("SavePicture",picture.name + " " + picture.type + " " + picture.nose + " " + picture.id)
  296.                     }
  297.                     Log.d("SavePicture", "saving...")
  298.                     profilePicture = ProfilePicture.moveImage(humanPicture, animalPicture)
  299.                     saveBitmap(profilePicture, activity)
  300.                     if (activity is LoginActivity) {
  301.                         activity.run {
  302.                             runOnUiThread {
  303.                                 val intent = Intent(
  304.                                     activity.applicationContext,
  305.                                     CarouselActivity::class.java
  306.                                 )
  307.                                 intent.putExtra("server_connection", this.serverConnection)
  308.                                 intent.putExtra("profile_picture", ProfilePicture.encodeBitmap(profilePicture))
  309.                                 startActivity(intent)
  310.                             }
  311.                         }
  312.                     }
  313.                 } else if (response.code == 409) {
  314.                     activity.run {
  315.                         runOnUiThread {
  316.                             val intent = Intent(activity.applicationContext, PictureActivity::class.java)
  317.                             intent.putExtra("server_connection", this.serverConnection)
  318.                             startActivity(intent)
  319.                         }
  320.                     }
  321.                 }
  322.             }
  323.  
  324.         })
  325.     }
  326.  
  327.     internal fun downloadImage(picture : ProfilePicture, activity: Activity){
  328.         Log.d("looper_tag", (Looper.myLooper() == Looper.getMainLooper()).toString())
  329.         // Creating the URL
  330.         val url = Uri.parse(MAIN_URL + "get_image")
  331.             .buildUpon()
  332.             .appendQueryParameter("app_token", APP_TOKEN)
  333.             .appendQueryParameter("app_user_id", APP_USER_ID.toString())
  334.             .appendQueryParameter("image_id", picture.id.toString())
  335.             .build().toString()
  336.  
  337.         Log.d("serverConnection", url)
  338.         val request = Request.Builder()
  339.             .url(url)
  340.             .build()
  341.         val response = client.newCall(request).execute()
  342.         if (response.code == 200) {
  343.  
  344.             Log.d("serverConnection", response.message)
  345.             val responseBody = response.body!!
  346.             val bitmap = BitmapFactory.decodeStream(responseBody.byteStream())
  347.             response.body!!.close()
  348.             Log.d("serverConnection", bitmap.toString())
  349.             picture.bitmap = bitmap
  350.             // если вызвано из PictureActivity, то функция выставляет все фото4ки в списки
  351.             if (activity is PictureActivity) {
  352.                 activity.run {
  353.                     runOnUiThread {
  354.                         Log.d("looper_tag", "inRunOnUI"+(Looper.myLooper() == Looper.getMainLooper()).toString())
  355.                         if (picture.type == "animals") {
  356.                             animals.add(picture)
  357.                         } else {
  358.                             humans.add(picture)
  359.                         }
  360.                         Log.d("MainPictures", "" + animals.size + "  " + humans.size)
  361.  
  362.  
  363.                         if (imageView.drawable == null && humans.size != 0 && animals.size != 0) {
  364.                             imageView.setImageBitmap(
  365.                                 ProfilePicture.moveImage(
  366.                                     humans[0],
  367.                                     animals[0]
  368.                                 )
  369.                             )
  370.                             progressBar.visibility = ProgressBar.GONE
  371.                         }
  372.                     }
  373.                 }
  374.             }
  375.         } else {
  376.             Log.d("serverConnection", response.code.toString())
  377.             val responseBody = response.body!!
  378.             Log.d("serverConnection", responseBody.string())
  379.         }
  380.  
  381.     }
  382.  
  383.  
  384.     fun downloadImagesInfo(activity: Activity){
  385.  
  386.         val url = Uri.parse(MAIN_URL + "get_images")
  387.             .buildUpon()
  388.             .appendQueryParameter("app_token", APP_TOKEN)
  389.             .appendQueryParameter("app_user_id", APP_USER_ID.toString())
  390.             .build().toString()
  391.  
  392.         val request = Request.Builder()
  393.             .url(url)
  394.             .build()
  395.  
  396.  
  397.         client.newCall(request).enqueue(object : Callback {
  398.  
  399.             override fun onFailure(call: Call, e: IOException) {
  400. //                val errors = StringWriter()
  401. //                e.printStackTrace(PrintWriter(errors))
  402. //                Log.d("Pictures_info", errors.toString())
  403.  
  404.                 activity.run {
  405.                     runOnUiThread {
  406.                         Toast.makeText(
  407.                             this.applicationContext,
  408.                             "Failed to download image info",
  409.                             Toast.LENGTH_LONG
  410.                         ).show()
  411.                         floatingActionButton.show()
  412.                     }
  413.                 }
  414.             }
  415.  
  416.             override fun onResponse(call: Call, response: Response) {
  417.                 if (response.code == 200) {
  418.                     val body = response.body!!.string()
  419.                     var tempMap: Map<String, Any> = gson.fromJson(body, object : TypeToken<Map<String, Any>>() {}.type)
  420.                     val pictures = gson.fromJson(tempMap.getValue("data").toString(), Array<ProfilePicture>::class.java)
  421.                     response.body!!.close()
  422.                     pictures.joinToString()
  423.                     if (activity is PictureActivity) {
  424.                         for (picture in pictures) {
  425.                             downloadImage(picture, activity)
  426.                             Log.d(
  427.                                 "serverConnection",
  428.                                 picture.name + " " + picture.type + " " + picture.nose + " " + picture.id
  429.                             )
  430.                         }
  431.                     }
  432.  
  433.                 } else {
  434. //                    Log.d("Pictures_info", "${response.code}")
  435.                     activity.run{
  436.                         runOnUiThread{
  437.                             floatingActionButton.show()
  438.                         }
  439.                     }
  440.                 }
  441.  
  442.             }
  443.  
  444.  
  445.         })
  446.  
  447.     }
  448.  
  449.     fun sendAvatar(activity: PictureActivity, human_picture:ProfilePicture, animal_picture:ProfilePicture) {
  450.         val url = MAIN_URL + "set_avatar"
  451.         val mapItems: MutableMap<String, Any> = HashMap()
  452.         mapItems["app_token"] = APP_TOKEN!!
  453.         mapItems["app_user_id"] = APP_USER_ID
  454.         mapItems["human_id"] = human_picture.id
  455.         mapItems["animal_id"] =  animal_picture.id
  456.         val json = gson.toJson(mapItems)
  457.         Log.d("serverConnection", "the send_avatar json is: " + json)
  458.  
  459.         val formBody = json.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
  460.  
  461.         val request = Request.Builder()
  462.             .url(url)
  463.             .post(formBody)
  464.             .build()
  465.  
  466.         client.newCall(request).enqueue(object: Callback {
  467.             override fun onFailure(call: Call, e: IOException) {
  468.                 val errors = StringWriter()
  469.                 e.printStackTrace(PrintWriter(errors))
  470.                 Log.d("serverConnection", errors.toString())
  471.             }
  472.  
  473.             override fun onResponse(call: Call, response: Response) {
  474.                 Log.d("serverConnection", "Response code is: " + response.code)
  475.                 if (response.code == 200) {
  476.                     activity.run {
  477.                         runOnUiThread {
  478.                             val intent = Intent(activity.applicationContext, CarouselActivity::class.java)
  479.                             intent.putExtra("server_connection", this@ServerConnection)
  480.                             val tempbitmap = ProfilePicture.moveImage(human_picture, animal_picture)
  481.                             this@ServerConnection.saveBitmap(tempbitmap, activity)
  482.                             intent.putExtra("profile_picture", ProfilePicture.encodeBitmap(tempbitmap))
  483.                             finish()
  484.                             startActivity(intent)
  485.                         }
  486.                     }
  487.                 }
  488.             }
  489.         })
  490.     }
  491.  
  492.  
  493.     // Метод для тестирования запросов
  494.     fun test() {
  495.         val mapItems: MutableMap<String, Any?> = HashMap()
  496.         mapItems["app_token"] = "kek"
  497.         mapItems["app_user_id"] = "lol"
  498.         val json = gson.toJson(mapItems)
  499.         val url = "http://neprav.fun:8080/api/test"
  500.         Log.d("serverConnection", "test sending: " + json)
  501.  
  502.         val formBody = json.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
  503.  
  504.         val request = Request.Builder()
  505.             .url(url)
  506.             .post(formBody)
  507.             .build()
  508.  
  509.         client.newCall(request).enqueue(object: Callback {
  510.             override fun onFailure(call: Call, e: IOException) {
  511.                 val errors = StringWriter()
  512.                 e.printStackTrace(PrintWriter(errors))
  513.                 Log.d("serverConnection", errors.toString())
  514.             }
  515.  
  516.             override fun onResponse(call: Call, response: Response) {
  517.                 Log.d("serverConnection", "Response code is: " + response.code)
  518.                 if (response.code == 200) {
  519.                     val body = response.body!!.string()
  520.                     Log.d("serverConnection", body)
  521.                 } else if(response.code == 202) {
  522.                     val body = response.body!!.string()
  523.                     Log.d("serverConnection", body)
  524.                 }
  525.                 response.body!!.close()
  526.             }
  527.  
  528.         })
  529.     }
  530.     // Чтобы передавать объект между активитями
  531.     override fun writeToParcel(p0: Parcel?, p1: Int) {
  532.         p0?.writeString(APP_TOKEN)
  533.         p0?.writeInt(APP_USER_ID)
  534.         p0?.writeString(SOCIAL_TOKEN)
  535.         p0?.writeInt(SOCIAL_ID)
  536.         p0?.writeString(EMAIL)
  537.         p0?.writeInt(EXPIRY_TIME)
  538.         p0?.writeString(AUTH_TYPE)
  539.     }
  540.  
  541.     override fun describeContents(): Int {
  542.         return 0
  543.     }
  544.  
  545.     companion object CREATOR : Parcelable.Creator<ServerConnection> {
  546.         override fun createFromParcel(parcel: Parcel): ServerConnection {
  547.             return ServerConnection(parcel)
  548.         }
  549.  
  550.         override fun newArray(size: Int): Array<ServerConnection?> {
  551.             return arrayOfNulls(size)
  552.         }
  553.     }
  554.  
  555.     val request = Request.Builder()
  556.         .url("http://192.168.0.194:5000")
  557.         .build()
  558.  
  559.     fun openWebSocket(activity: Activity) {
  560.         webSocket = OkHttpClient().newWebSocket(request, object : WebSocketListener() {
  561.             override fun onOpen(webSocket: WebSocket, response: Response) {
  562.                 //тост о том, что есть вебсокет соединение
  563.             activity.run {
  564.                 runOnUiThread {
  565.                     Toast.makeText(this.applicationContext,"есть вебсокет соединение", Toast.LENGTH_LONG).show()
  566.                 }
  567.             }
  568.                 webSocket.send("Hello!")
  569.                 webSocket.send("Yasno?")
  570.                 webSocket.close(NORMAL_CLOSURE_STATUS, "Goodbye !")
  571.             }
  572.  
  573.             override fun onMessage(webSocket: WebSocket, text: String) {
  574.                 super.onMessage(webSocket, text)
  575.             }
  576.  
  577.             override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
  578.                 super.onMessage(webSocket, bytes)
  579.             }
  580.  
  581.             override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
  582.                 val errors = StringWriter()
  583.                 t.printStackTrace(PrintWriter(errors))
  584.                 Log.d("Messages_info", errors.toString())
  585.             }
  586.  
  587.             override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {
  588.                 webSocket!!.close(NORMAL_CLOSURE_STATUS, "because why not")
  589.                 Log.d("Messages_info", code.toString() + " " + reason)
  590.             }
  591.  
  592.             override fun onClosed(webSocket: WebSocket, code: Int, reason: String) {
  593.                 super.onClosed(webSocket, code, reason)
  594.             }
  595.         })
  596.     }
  597.  
  598.  
  599. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement