Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aaron/rf2 refactor #643

Merged
merged 26 commits into from
Feb 2, 2025
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4349be9
Remove StudentLife from login logic.
meiron03 Jan 22, 2025
00ed683
Remove StudentLife from login logic.
meiron03 Jan 22, 2025
0655f7f
Merge remote-tracking branch 'origin/aaron/rf2-refactor' into aaron/r…
meiron03 Jan 22, 2025
7c69175
Remove StudentLife from login logic.
meiron03 Jan 22, 2025
59adafd
Update libraries
meiron03 Jan 23, 2025
6c7a5a2
Merge remote-tracking branch 'origin/aaron/rf2-refactor' into aaron/r…
meiron03 Jan 23, 2025
eaa2e56
Move fitness network rqs to rf2
meiron03 Jan 23, 2025
a61ffab
Change saving fitness prefs to use rf2
meiron03 Jan 23, 2025
0c40429
Change all GET requests without custom deserialization to retrofit2
meiron03 Jan 25, 2025
581955b
Change all POST requests to retrofit2
meiron03 Jan 26, 2025
ef768ce
Improve error logging
meiron03 Jan 26, 2025
27f467e
Add gson to retrofit2
meiron03 Jan 26, 2025
aa2844c
Remove studentLife
meiron03 Jan 26, 2025
e49261f
Small laundry optimizations
meiron03 Jan 26, 2025
b4a132e
Small laundry optimizations
meiron03 Jan 26, 2025
0d59e7b
Small laundry optimizations
meiron03 Jan 26, 2025
cb233ac
Rename
meiron03 Jan 26, 2025
d74aed6
Move platform and campusexpress to retrofit2
meiron03 Jan 26, 2025
a87f912
Rename .java to .kt
meiron03 Jan 26, 2025
0fcfef3
Rename platform
meiron03 Jan 26, 2025
8c5f23a
Remove retrofit + lint
meiron03 Jan 26, 2025
9081dd4
Upgraded AGP to 8.80
baronhsieh2005 Jan 31, 2025
b32f237
changing semester date + app label + laundry bug
trinif Feb 2, 2025
14e3950
Remove log
meiron03 Feb 2, 2025
c42d974
Merge remote-tracking branch 'origin/aaron/rf2-refactor' into aaron/r…
meiron03 Feb 2, 2025
40ee66d
Merge remote-tracking branch 'origin/trini/version-bump' into aaron/r…
meiron03 Feb 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions PennMobile/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ dependencies {

debugImplementation libs.leakcanary.android

implementation libs.rxandroid
implementation libs.androidx.annotation
implementation (libs.androidx.lifecycle.extensions) {
transitive = true
Expand Down Expand Up @@ -88,9 +87,9 @@ dependencies {
implementation libs.logging.interceptor
implementation libs.okhttp
implementation libs.picasso
implementation libs.adapter.rxjava2
implementation libs.squareup.retrofit
implementation libs.adapter.rxjava
implementation libs.reactivex.rxandroid
implementation libs.rxjava
implementation libs.joda.time
implementation libs.commons.lang3
implementation libs.kotlinx.coroutines.core
Expand Down
112 changes: 46 additions & 66 deletions PennMobile/src/main/java/com/pennapps/labs/pennmobile/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.pennapps.labs.pennmobile

import StudentLifeRf2
import StudentLife
import android.content.Context
import android.content.SharedPreferences
import android.content.pm.PackageManager
Expand Down Expand Up @@ -38,7 +38,6 @@ import com.pennapps.labs.pennmobile.api.CampusExpress
import com.pennapps.labs.pennmobile.api.OAuth2NetworkManager
import com.pennapps.labs.pennmobile.api.Platform
import com.pennapps.labs.pennmobile.api.Serializer
import com.pennapps.labs.pennmobile.api.StudentLife
import com.pennapps.labs.pennmobile.api.classes.Account
import com.pennapps.labs.pennmobile.api.fragments.LoginFragment
import com.pennapps.labs.pennmobile.components.sneaker.Sneaker
Expand All @@ -56,16 +55,12 @@ import com.pennapps.labs.pennmobile.utils.Utils
import eightbitlab.com.blurview.BlurView
import kotlinx.coroutines.sync.Mutex
import okhttp3.OkHttpClient
import retrofit.RestAdapter
import retrofit.android.AndroidLog
import retrofit.client.OkClient
import retrofit.converter.GsonConverter
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.converter.scalars.ScalarsConverterFactory
import java.util.concurrent.TimeUnit
import com.squareup.okhttp.OkHttpClient as SquareOkHttpClient

class MainActivity : AppCompatActivity() {
private var tabShowed = false
Expand Down Expand Up @@ -316,82 +311,56 @@ class MainActivity : AppCompatActivity() {
val DINING_ID = R.id.nav_dining

private var mStudentLife: StudentLife? = null
private var mStudentLifeRf2: StudentLifeRf2? = null
private var mPlatform: Platform? = null
private var mCampusExpress: CampusExpress? = null

@JvmStatic
val campusExpressInstance: CampusExpress
get() {
if (mCampusExpress == null) {
val gsonBuilder = GsonBuilder()
val gson = gsonBuilder.create()
val restAdapter =
RestAdapter
val retrofit =
Retrofit
.Builder()
.setConverter(GsonConverter(gson))
.setLogLevel(RestAdapter.LogLevel.FULL)
.setLog(AndroidLog("Campus Express"))
.setEndpoint(Platform.campusExpressBaseUrl)
.baseUrl(Platform.campusExpressBaseUrl)
.client(OkHttpClient.Builder().build())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build()
mCampusExpress = restAdapter.create(CampusExpress::class.java)

mCampusExpress = retrofit.create(CampusExpress::class.java)
}
return mCampusExpress!!
}

@JvmStatic
val platformInstance: Platform
val platformInstance2: Platform
get() {
if (mPlatform == null) {
val gsonBuilder = GsonBuilder()
val gson = gsonBuilder.create()
val restAdapter =
RestAdapter
.Builder()
.setConverter(GsonConverter(gson))
.setLogLevel(RestAdapter.LogLevel.FULL)
.setLog(AndroidLog("Platform"))
.setEndpoint(Platform.platformBaseUrl)
.build()
mPlatform = restAdapter.create(Platform::class.java)
}
return mPlatform!!
}

val studentLifeInstanceRf2: StudentLifeRf2
get() {
if (mStudentLifeRf2 == null) {
val okHttpClient =
OkHttpClient
.Builder()
.connectTimeout(35, TimeUnit.SECONDS)
.readTimeout(35, TimeUnit.SECONDS)
.writeTimeout(35, TimeUnit.SECONDS)
.build()

val retrofit =
Retrofit
.Builder()
.baseUrl("https://pennmobile.org/api/")
.client(okHttpClient)
.addConverterFactory(ScalarsConverterFactory.create())
.baseUrl(Platform.platformBaseUrl)
.client(OkHttpClient.Builder().build())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build()
mStudentLifeRf2 = retrofit.create(StudentLifeRf2::class.java)

mPlatform = retrofit.create(Platform::class.java)
}
return mStudentLifeRf2!!
return mPlatform!!
}

@JvmStatic
val studentLifeInstance: StudentLife
get() {
if (mStudentLife == null) {
val gsonBuilder = GsonBuilder()

gsonBuilder.registerTypeAdapter(
object : TypeToken<MutableList<Contact?>?>() {}.type,
Serializer.DataSerializer<Any?>(),
)

gsonBuilder.registerTypeAdapter(
object : TypeToken<MutableList<Venue?>?>() {}.type,
Serializer.VenueSerializer(),
Expand All @@ -405,19 +374,17 @@ class MainActivity : AppCompatActivity() {
object : TypeToken<LaundryRoom?>() {}.type,
Serializer.LaundryRoomSerializer(),
)

gsonBuilder.registerTypeAdapter(
object : TypeToken<MutableList<GSRLocation?>?>() {}.type,
Serializer.GsrLocationSerializer(),
)
// gets laundry preferences (used only for testing)
gsonBuilder.registerTypeAdapter(
object : TypeToken<MutableList<Int?>?>() {}.type,
Serializer.LaundryPrefSerializer(),
)

gsonBuilder.registerTypeAdapter(
object : TypeToken<MutableList<FlingEvent?>?>() {}.type,
Serializer.FlingEventSerializer(),
)

// gets gsr reservations
gsonBuilder.registerTypeAdapter(
object : TypeToken<MutableList<GSRReservation?>?>() {}.type,
Expand All @@ -433,19 +400,32 @@ class MainActivity : AppCompatActivity() {
object : TypeToken<MutableList<Post?>?>() {}.type,
Serializer.PostsSerializer(),
)

val gson = gsonBuilder.create()
val okHttpClient = SquareOkHttpClient()
okHttpClient.setConnectTimeout(35, TimeUnit.SECONDS) // Connection timeout
okHttpClient.setReadTimeout(35, TimeUnit.SECONDS) // Read timeout
okHttpClient.setWriteTimeout(35, TimeUnit.SECONDS) // Write timeout
val restAdapter =
RestAdapter

val logging =
HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}
val okHttpClient =
OkHttpClient
.Builder()
.connectTimeout(35, TimeUnit.SECONDS)
.readTimeout(35, TimeUnit.SECONDS)
.writeTimeout(35, TimeUnit.SECONDS)
.addInterceptor(logging)
.build()

val retrofit =
Retrofit
.Builder()
.setConverter(GsonConverter(gson))
.setClient(OkClient(okHttpClient))
.setEndpoint("https://pennmobile.org/api")
.baseUrl("https://pennmobile.org/api/")
.client(okHttpClient)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build()
mStudentLife = restAdapter.create(StudentLife::class.java)
mStudentLife = retrofit.create(StudentLife::class.java)
}
return mStudentLife!!
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,32 @@ package com.pennapps.labs.pennmobile.api
import com.pennapps.labs.pennmobile.api.classes.CampusExpressAccessTokenResponse
import com.pennapps.labs.pennmobile.dining.classes.DiningBalances
import com.pennapps.labs.pennmobile.dining.classes.DiningBalancesList
import retrofit.Callback
import retrofit.http.GET
import retrofit.http.Header
import retrofit.http.Query
import retrofit2.Response
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Query
import rx.Observable

/**
* Created by Julius Snipes on 09/23/2022.
* Retrofit interface to the Campus Express API
*/
interface CampusExpress {
@GET("/oauth/token")
fun getAccessToken(
@GET("oauth/token")
suspend fun getAccessToken(
@Query("code") authCode: String?,
@Query("grant_type") grantType: String?,
@Query("client_id") clientID: String?,
@Query("redirect_uri") redirectURI: String?,
@Query("code_verifier") codeVerifier: String?,
callback: Callback<CampusExpressAccessTokenResponse>,
)
): Response<CampusExpressAccessTokenResponse>

@GET("/dining/currentBalance")
@GET("dining/currentBalance")
fun getCurrentDiningBalances(
@Header("x-authorization") bearerToken: String?,
): Observable<DiningBalances>

@GET("/dining/pastBalances")
@GET("dining/pastBalances")
fun getPastDiningBalances(
@Header("x-authorization") bearerToken: String?,
@Query("start_date") startDate: String?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

import java.util.List;

import retrofit.http.GET;
import retrofit2.http.GET;
import rx.Observable;

// This is for widget dining data network request)
public interface DiningRequest {
@GET("/dining/venues")
@GET("dining/venues")
Observable<List<Venue>> venues();
}
Loading