Guest User

Untitled

a guest
Apr 26th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. package com.shellmonger.apps.familyphotos.services.mock
  2.  
  3. import android.arch.lifecycle.LiveData
  4. import android.arch.lifecycle.MutableLiveData
  5. import android.util.Log
  6. import com.amazonaws.mobile.auth.core.internal.util.ThreadUtils.runOnUiThread
  7. import com.shellmonger.apps.familyphotos.models.User
  8. import com.shellmonger.apps.familyphotos.services.interfaces.IdentityHandler
  9. import com.shellmonger.apps.familyphotos.services.interfaces.IdentityManager
  10. import com.shellmonger.apps.familyphotos.services.interfaces.IdentityRequest
  11.  
  12. class MockIdentityManager : IdentityManager {
  13. companion object {
  14. private val TAG: String = this::class.java.simpleName
  15. }
  16.  
  17. private val mutableCurrentUser: MutableLiveData<User?> = MutableLiveData()
  18.  
  19. init {
  20. mutableCurrentUser.value = null
  21. }
  22.  
  23. /**
  24. * Property for the current user record - null if the user is not signed in
  25. */
  26. override val currentUser: LiveData<User?> = mutableCurrentUser
  27.  
  28. /**
  29. * Sign in with a username / password
  30. */
  31. override fun initiateSignin(handler: IdentityHandler) {
  32. val parameters: MutableMap<String, String> = HashMap()
  33. parameters["username"] = ""
  34. parameters["password"] = ""
  35.  
  36. runOnUiThread {
  37. Log.d(TAG, "initiateSignin: triggering NEED_CREDENTIALS")
  38. handler(IdentityRequest.NEED_CREDENTIALS, parameters)
  39. { response ->
  40. if (response != null) {
  41. for (key in response.keys) parameters[key] = response[key] ?: ""
  42. if (!parametersAreValid(parameters)) {
  43. Log.d(TAG, "initiateSignin: triggering FAILURE")
  44. handler(IdentityRequest.FAILURE, mapOf("message" to "Invalid parameters")) { /* Do Nothing */ }
  45. } else {
  46. Log.d(TAG, "initiateSignin: triggering NEED_MULTIFACTORCODE")
  47. handler(IdentityRequest.NEED_MULTIFACTORCODE, mapOf("deliveryVia" to "SMS", "deliveryTo" to "+17205551212"))
  48. { mfaResponse ->
  49. if (mfaResponse != null) {
  50. for (key in mfaResponse.keys) parameters[key] = mfaResponse[key] ?: ""
  51. val mfaCode = parameters["mfaCode"] ?: ""
  52. if (mfaCode.length != 6) {
  53. Log.d(TAG, "initiateSignin: triggering FAILURE")
  54. handler(IdentityRequest.FAILURE, mapOf("message" to "Invalid mfa code $mfaCode - length = ${mfaCode.length}")) { /* Do Nothing */ }
  55. } else {
  56. val newUser = User()
  57. newUser.username = parameters["username"]!!
  58. mutableCurrentUser.value = newUser
  59. Log.d(TAG, "initiateSignin: triggering SUCCESS")
  60. handler(IdentityRequest.SUCCESS, parameters) { /* Do Nothing */ }
  61. }
  62. } else {
  63. Log.d(TAG, "initiateSignin: triggering FAILURE")
  64. handler(IdentityRequest.FAILURE, mapOf("message" to "Invalid mfa request response")) { /* Do Nothing */ }
  65. }
  66. }
  67. }
  68. } else
  69. handler(IdentityRequest.FAILURE, mapOf("message" to "Invalid request response")) { /* Do Nothing */ }
  70. }
  71. }
  72. }
  73.  
  74. /**
  75. * Determines if the parameters are valid
  76. */
  77. private fun parametersAreValid(parameters: Map<String,String>): Boolean {
  78. val username = parameters["username"] ?: ""
  79. val password = parameters["password"] ?: ""
  80. return !(username.isEmpty() || password.isEmpty())
  81. }
  82.  
  83. /**
  84. * Sign out of the system
  85. */
  86. override fun initiateSignout(handler: IdentityHandler) {
  87. runOnUiThread {
  88. Log.d(TAG,"initiateSIgnout: triggering SUCCESS")
  89. mutableCurrentUser.value = null
  90. handler(IdentityRequest.SUCCESS, HashMap()) { /* Do Nothing */ }
  91. }
  92. }
  93. }
Add Comment
Please, Sign In to add comment