Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96956a38 authored by Nishant D's avatar Nishant D
Browse files

Added google and anonymous user structure

parent fe62a0a1
Loading
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
package app.lounge.users

/**
 * Implement API related to Google login flow only.
 * 1. Login api for google users.
 * 2. Parsing google user data. For now use typealias object, later we will refactor with generic type
 * 3. Add unit test cases for the api functions.
 * */
 No newline at end of file
+11 −0
Original line number Diff line number Diff line
package app.lounge.users

/**
 * Handle user login session in the file.
 * This should be the only file which communicate with application regarding user data
 *
 * 1. Application facing api will be part of this file.
 * 2. Manage user session for Anonymous, Google, PWA users.
 * 3. In case of invalid user data, timeout etc. inform application about session failure.
 * 4. If possible add session api testcases.
 */
 No newline at end of file
+35 −0
Original line number Diff line number Diff line
package app.lounge.users.anonymous

/**
 * Implement API related to Anonymous login flow only.
 * 1. Login api for Anonymous users.
 * 2. Parsing Anonymous user data. For now use typealias object, later we will refactor with generic type
 * 3. Add unit test cases for the api functions.
 * */

interface Anonymous {

    val api: AnonymousAPI

    companion object {

        fun anonymousRequestFor(
            api: AnonymousAPI = AnonymousAPI.create()
        ) : Anonymous {
            return object : Anonymous {
                override val api: AnonymousAPI = api
            }
        }
    }

    // pass input from this function
    fun login(
        success : () -> Unit,
        failure : () -> Unit
    ) {
        api.performLogin(
            success = success,
            failure = failure
        )
    }
}
 No newline at end of file
+33 −0
Original line number Diff line number Diff line
package app.lounge.users.anonymous

import app.lounge.BuildConfig

interface AnonymousAPI {

    companion object {
        private const val tokenBaseURL: String = "https://eu.gtoken.ecloud.global"
        private const val loginBaseURL: String = "GooglePlayApi.URL_SYNC"

        fun create(baseURL: String = tokenBaseURL) : AnonymousAPI {
            return RetrofitAnonymousAPI(
                baseURL = baseURL,
                anonymousUserEndpointFollowsRedirects = true,
                callTimeoutInSeconds = 30
            )
        }
    }

    fun performLogin(
        success : () -> Unit,
        failure : () -> Unit
    )

    object Header {
        val authData: Map<String, String> get() {
            return mapOf(
                Pair("User-Agent", BuildConfig.BUILD_TYPE), // CommonUtilsFunctions.getAppBuildInfo()
            )
        }
    }

}
 No newline at end of file
+58 −0
Original line number Diff line number Diff line
package app.lounge.users.anonymous

import app.lounge.networking.RetrofitFetching
import app.lounge.networking.RetrofitRawResultProcessing
import app.lounge.networking.RetrofitResult
import app.lounge.networking.appLounge
import app.lounge.networking.fetch
import okhttp3.RequestBody
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.http.Body
import retrofit2.http.HeaderMap
import retrofit2.http.POST

internal class RetrofitAnonymousAPI(
    baseURL: String,
    anonymousUserEndpointFollowsRedirects: Boolean,
    callTimeoutInSeconds: Long,
): AnonymousAPI, RetrofitFetching {

    private val anonymousUserEndPoint: AnonymousUserEndPointEndpoint = Retrofit.Builder().appLounge(
        baseURL = baseURL,
        shouldFollowRedirects = anonymousUserEndpointFollowsRedirects,
        callTimeoutInSeconds = callTimeoutInSeconds
    ).create(AnonymousUserEndPointEndpoint::class.java)

    interface AnonymousUserEndPointEndpoint {

        @POST
        fun authDataRequest(
            @HeaderMap headers: Map<String, String> = AnonymousAPI.Header.authData,
            @Body requestBody: RequestBody?
        ): Call<Unit>
    }

    override fun performLogin(success: () -> Unit, failure: () -> Unit) {
        /*fetch(
            endpoint = anonymousUserEndPoint.authDataRequest(requestBody = null),
            processing = ,
        )*/
    }


    /*private val cardTerminalResultProcessing = RetrofitRawResultProcessing<
            CardTerminalRetrofitCallRequestResponse,
            CardTerminalRetrofitCallFailure,
            CardTerminalRetrofitCallResponse>(
        errorFromNetworkFailure = { CardTerminalRetrofitCallFailure.Network(it) },
        onResponse = { _, response ->
            RetrofitResult.Success(CardTerminalRetrofitCallResponse(""))
        }
    )*/

}

internal typealias CardTerminalRetrofitCallResponse = String
internal typealias CardTerminalRetrofitCallRequestResponse = String
internal typealias CardTerminalRetrofitCallFailure = String