react-native-mytatva-rn-sdk 1.2.51 → 1.2.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/cgmblelib/base/BApplication.java +57 -57
- package/android/src/main/java/cgmblelib/ble/BleService.java +1 -1
- package/android/src/main/java/cgmblelib/ble/gattcallback/BleGattCallback.java +1 -1
- package/android/src/main/java/cgmblelib/database/dao/DaoDevice.java +4 -0
- package/android/src/main/java/cgmblelib/database/dao/DaoGlucose.java +334 -332
- package/android/src/main/java/cgmblelib/database/repository/RepositoryDevice.java +5 -0
- package/android/src/main/java/cgmblelib/database/repository/RepositoryGlucose.java +167 -162
- package/android/src/main/java/cgmblelib/database/source/SourceDevice.java +2 -0
- package/android/src/main/java/cgmblelib/database/source/SourceGlucose.java +2 -0
- package/android/src/main/java/cgmblelib/database/source/db/DeviceDBDataSource.java +171 -165
- package/android/src/main/java/cgmblelib/database/source/db/GlucoseDBDataSource.java +305 -296
- package/android/src/main/java/cgmblelib/utils/SharedPreferencesLibraryUtil.java +66 -44
- package/android/src/main/java/com/mytatvarnsdk/CgmTrackyLibModule.kt +125 -81
- package/android/src/main/java/com/mytatvarnsdk/MainApplication.kt +2 -2
- package/android/src/main/java/com/mytatvarnsdk/activity/ConnectSensorActivity.kt +1 -1
- package/android/src/main/java/com/mytatvarnsdk/activity/PermissionActivity.kt +1 -1
- package/android/src/main/java/com/mytatvarnsdk/activity/PlaceSensorActivity.kt +1 -1
- package/android/src/main/java/com/mytatvarnsdk/activity/PlaceTransmitterActivity.kt +1 -1
- package/android/src/main/java/com/mytatvarnsdk/activity/SearchTransmitterActivity.kt +3 -4
- package/android/src/main/java/com/mytatvarnsdk/activity/SensorConnectSuccessActivity.kt +8 -5
- package/android/src/main/java/com/mytatvarnsdk/activity/StartCGMActivity.kt +1 -1
- package/android/src/main/java/com/mytatvarnsdk/model/BaseViewModel.java +88 -84
- package/android/src/main/java/com/mytatvarnsdk/network/AuthenticateSDKService.kt +197 -197
- package/android/src/main/java/com/mytatvarnsdk/utils/TatvaEncryptionConfig.kt +1 -1
- package/ios/Database/KLTBluetoothManager.m +8 -0
- package/ios/Database/KLTDatabaseHandler.m +43 -26
- package/ios/Database/KLTLocalSettingManager.h +3 -0
- package/ios/MyReactNativeBridge.m +27 -15
- package/ios/Support/API.swift +8 -8
- package/ios/ViewControllers/AttachTransmitterViewController.swift +1 -1
- package/ios/ViewModel/FinalViewModel.swift +11 -9
- package/lib/commonjs/CGMConnect.js +12 -12
- package/lib/commonjs/CGMConnect.js.map +1 -1
- package/lib/module/CGMConnect.js +13 -13
- package/lib/module/CGMConnect.js.map +1 -1
- package/lib/typescript/CGMConnect.d.ts +6 -6
- package/package.json +2 -2
- package/src/CGMConnect.ts +78 -55
|
@@ -21,6 +21,7 @@ import com.facebook.react.bridge.Arguments
|
|
|
21
21
|
import com.facebook.react.bridge.CatalystInstance
|
|
22
22
|
import com.facebook.react.bridge.WritableMap
|
|
23
23
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
24
|
+
import com.mytatvarnsdk.CgmTrackyLibModule
|
|
24
25
|
import com.mytatvarnsdk.R
|
|
25
26
|
import com.mytatvarnsdk.databinding.ActivitySensorConnectSuccessBinding
|
|
26
27
|
import com.mytatvarnsdk.databinding.ExitDialogBottomsheetBinding
|
|
@@ -34,7 +35,6 @@ import kotlinx.coroutines.CoroutineScope
|
|
|
34
35
|
import kotlinx.coroutines.Dispatchers
|
|
35
36
|
import kotlinx.coroutines.Job
|
|
36
37
|
import org.json.JSONObject
|
|
37
|
-
import com.mytatvarnsdk.CgmTrackyLibModule
|
|
38
38
|
import java.text.SimpleDateFormat
|
|
39
39
|
import java.util.Date
|
|
40
40
|
import java.util.Locale
|
|
@@ -80,15 +80,18 @@ class SensorConnectSuccessActivity : AppCompatActivity() {
|
|
|
80
80
|
binding.toolbar.btnWhatsapp.setOnClickListener {
|
|
81
81
|
startActivity(
|
|
82
82
|
Intent(this, HelpActivity::class.java)
|
|
83
|
-
.putExtra("ScreenName", "Sensor
|
|
83
|
+
.putExtra("ScreenName", "Sensor page")
|
|
84
84
|
)
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
binding.toolbar.btnWatchDemo.setOnClickListener {
|
|
88
|
-
sendDataToRN("","cgm_watch_demo_clicked")
|
|
88
|
+
sendDataToRN("", "cgm_watch_demo_clicked")
|
|
89
89
|
|
|
90
90
|
startActivity(
|
|
91
|
-
Intent(this, VideoActivity::class.java).putExtra(
|
|
91
|
+
Intent(this, VideoActivity::class.java).putExtra(
|
|
92
|
+
"VideoId",
|
|
93
|
+
if (isForReconnect) "n_pUrFoZ1wQ" else "r5Zemc4R044"
|
|
94
|
+
)
|
|
92
95
|
)
|
|
93
96
|
}
|
|
94
97
|
|
|
@@ -171,7 +174,7 @@ class SensorConnectSuccessActivity : AppCompatActivity() {
|
|
|
171
174
|
obj.put("rawData", rawData)
|
|
172
175
|
|
|
173
176
|
authenticateSDKService.postDeviceData(
|
|
174
|
-
environment = TATVA_ENVIRONMENT.PROD,
|
|
177
|
+
environment = if (CgmTrackyLibModule.env.lowercase() == "uat") TATVA_ENVIRONMENT.STAGE else TATVA_ENVIRONMENT.PROD,
|
|
175
178
|
data = obj.toString(),
|
|
176
179
|
token = CgmTrackyLibModule.userToken,
|
|
177
180
|
loaderListener = object : LoaderListener {
|
|
@@ -92,7 +92,7 @@ class StartCGMActivity : AppCompatActivity() {
|
|
|
92
92
|
binding.toolbar.btnWhatsapp.setOnClickListener {
|
|
93
93
|
startActivity(
|
|
94
94
|
Intent(this, HelpActivity::class.java)
|
|
95
|
-
.putExtra("ScreenName", "
|
|
95
|
+
.putExtra("ScreenName", "connection journey page")
|
|
96
96
|
)
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -8,7 +8,6 @@ import androidx.lifecycle.LiveData;
|
|
|
8
8
|
import androidx.lifecycle.MediatorLiveData;
|
|
9
9
|
import androidx.lifecycle.Transformations;
|
|
10
10
|
|
|
11
|
-
import java.util.Date;
|
|
12
11
|
import java.util.List;
|
|
13
12
|
|
|
14
13
|
import cgmblelib.database.entity.PocDevice;
|
|
@@ -22,88 +21,93 @@ import cgmblelib.database.repository.RepositoryGlucose;
|
|
|
22
21
|
* @author minyuchun
|
|
23
22
|
*/
|
|
24
23
|
public class BaseViewModel extends AndroidViewModel {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
24
|
+
/**
|
|
25
|
+
* 设备信息储存库
|
|
26
|
+
*/
|
|
27
|
+
private RepositoryDevice mRepositoryDevice;
|
|
28
|
+
/**
|
|
29
|
+
* 血糖信息储存库
|
|
30
|
+
*/
|
|
31
|
+
private RepositoryGlucose mRepositoryGlucose;
|
|
32
|
+
/**
|
|
33
|
+
* 最新的设备(数据库中最大Id的设备,无论是绑定还是非绑定)
|
|
34
|
+
*/
|
|
35
|
+
private LiveData<PocDevice> mDevice;
|
|
36
|
+
/**
|
|
37
|
+
* 血糖数据集列表持久化
|
|
38
|
+
*/
|
|
39
|
+
private LiveData<List<PocGlucose>> mGlucoseList;
|
|
40
|
+
/**
|
|
41
|
+
* 最新的血糖数据持久化,当发射器绑定时,获取最新的,若发射器解除绑定则无
|
|
42
|
+
*/
|
|
43
|
+
private LiveData<PocGlucose> mLatestGlucose;
|
|
44
|
+
/***
|
|
45
|
+
* 设备是否绑定
|
|
46
|
+
*/
|
|
47
|
+
private MediatorLiveData<Integer> mBindDeviceId = new MediatorLiveData<>();
|
|
48
|
+
|
|
49
|
+
public BaseViewModel(@NonNull Application application) {
|
|
50
|
+
super(application);
|
|
51
|
+
mRepositoryDevice = RepositoryDevice.getInstance(application);
|
|
52
|
+
mRepositoryGlucose = RepositoryGlucose.getInstance(application);
|
|
53
|
+
mDevice = mRepositoryDevice.getLiveDataLatestDeviceIoThread();
|
|
54
|
+
mBindDeviceId.addSource(mDevice, device -> {
|
|
55
|
+
if (device != null && device.isBound()) {
|
|
56
|
+
if (mBindDeviceId.getValue() == null || mBindDeviceId.getValue() != device.getId()) {
|
|
57
|
+
mBindDeviceId.setValue(device.getId());
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
mBindDeviceId.setValue(0);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
LoadGlucose();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* 获取持久化设备数据,获取最新的设备的所有信息
|
|
68
|
+
*/
|
|
69
|
+
public synchronized LiveData<PocDevice> getDevice() {
|
|
70
|
+
return mDevice;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public synchronized LiveData<List<PocGlucose>> getAllGlucose() {
|
|
74
|
+
return mGlucoseList;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public synchronized LiveData<PocGlucose> getLatestGlucose() {
|
|
78
|
+
return mLatestGlucose;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* 获取血糖数据
|
|
83
|
+
*/
|
|
84
|
+
private synchronized void LoadGlucose() {
|
|
85
|
+
mGlucoseList = Transformations.switchMap(mBindDeviceId, input -> mRepositoryGlucose.getLiveDataGlucoseListByDeviceId(input));
|
|
86
|
+
mLatestGlucose = Transformations.map(mGlucoseList, input -> {
|
|
87
|
+
if (input != null && input.size() > 0) {
|
|
88
|
+
return input.get(input.size() - 1);
|
|
89
|
+
} else {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
public List<PocGlucose> getGlucoseByTime() {
|
|
97
|
+
return mRepositoryGlucose.getGlucoseByDeviceIdAndTimeMillis(7, 1748005587474L);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public List<PocGlucose> getGlucoseBetweenTime(long startTime) {
|
|
101
|
+
return mRepositoryGlucose.getGlucoseByTimeMillis(startTime, System.currentTimeMillis());
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public PocDevice getDeviceInfo(int deviceId) {
|
|
105
|
+
return mRepositoryDevice.getDeviceByIdIoThread(deviceId);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public void clearAllGlucoseAndDeviceData() {
|
|
109
|
+
mRepositoryGlucose.deleteAllGlucoseData();
|
|
110
|
+
mRepositoryDevice.deleteAllDeviceData();
|
|
111
|
+
}
|
|
108
112
|
|
|
109
113
|
}
|
|
@@ -23,207 +23,207 @@ import okhttp3.RequestBody.Companion.toRequestBody
|
|
|
23
23
|
class AuthenticateSDKService(val scope: CoroutineScope) {
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
26
|
+
fun postCGMData(
|
|
27
|
+
environment: TATVA_ENVIRONMENT,
|
|
28
|
+
data: String,
|
|
29
|
+
token: String,
|
|
30
|
+
responseListener: ResponseListener
|
|
31
|
+
) {
|
|
32
|
+
scope.launch {
|
|
33
|
+
try {
|
|
34
|
+
|
|
35
|
+
val apiServiceInterface = RetrofitInstance.getRetroInstance().create(
|
|
36
|
+
ApiServiceInterface::class.java
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
val encryptionKey = getEncryptionKey(
|
|
40
|
+
env = TATVA_ENVIRONMENT.PROD,
|
|
41
|
+
prodEncKey = PROD_ENC_KEY,
|
|
42
|
+
stagEncKey = STAGE_ENC_KEY
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
val encryptionIv = getEncryptionIv(
|
|
46
|
+
env = TATVA_ENVIRONMENT.PROD, prodEncIv = PROD_ENC_IV, stagEncIv = STAGE_ENC_IV
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
Log.d("API Response", "data: $data")
|
|
50
|
+
|
|
51
|
+
val encryptedString = getEncryptedText(
|
|
52
|
+
data = data,
|
|
53
|
+
encryptionKey = encryptionKey,
|
|
54
|
+
encryptionIv = encryptionIv
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
Log.d("API Response", "encryptedString: $encryptedString")
|
|
58
|
+
|
|
59
|
+
val decryptedString = getDecryptedData(
|
|
60
|
+
cipherText = encryptedString,
|
|
61
|
+
encryptionKey = encryptionKey,
|
|
62
|
+
encryptionIv = encryptionIv
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
Log.d("API Response", "decryptedString: $decryptedString")
|
|
66
|
+
|
|
67
|
+
val headers = mapOf(
|
|
68
|
+
"api-key" to if (environment == TATVA_ENVIRONMENT.PROD) PROD_API_KEY else STAGE_API_KEY,
|
|
69
|
+
"token" to token,
|
|
70
|
+
"Content-Type" to "text/plain"
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
val url =
|
|
74
|
+
"${if (environment == TATVA_ENVIRONMENT.PROD) PROD_BASE_URL else STAGE_BASE_URL}/cgm/logs"
|
|
75
|
+
|
|
76
|
+
val requestBody = encryptedString.toRequestBody("text/plain".toMediaType())
|
|
77
|
+
|
|
78
|
+
val response = apiServiceInterface.postCgmLogs(url, headers, requestBody).string()
|
|
79
|
+
|
|
80
|
+
val decryptedResponse = getDecryptedData(
|
|
81
|
+
cipherText = response.toString(),
|
|
82
|
+
encryptionKey = encryptionKey,
|
|
83
|
+
encryptionIv = encryptionIv
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
Log.d("API Response", "API response: $decryptedResponse")
|
|
87
|
+
|
|
88
|
+
responseListener.onResponseSuccess(response)
|
|
89
|
+
} catch (e: Exception) {
|
|
90
|
+
responseListener.onResponseFail()
|
|
91
|
+
e.printStackTrace()
|
|
92
|
+
Log.d("API Response", "Exception: ${e.message}")
|
|
93
|
+
}
|
|
94
|
+
}
|
|
94
95
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
fun postDeviceData(
|
|
99
|
+
environment: TATVA_ENVIRONMENT,
|
|
100
|
+
data: String,
|
|
101
|
+
token: String,
|
|
102
|
+
loaderListener: LoaderListener
|
|
103
|
+
) {
|
|
104
|
+
scope.launch {
|
|
105
|
+
try {
|
|
106
|
+
loaderListener.onShowLoader()
|
|
107
|
+
|
|
108
|
+
val apiServiceInterface = RetrofitInstance.getRetroInstance().create(
|
|
109
|
+
ApiServiceInterface::class.java
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
val encryptionKey = getEncryptionKey(
|
|
113
|
+
env = TATVA_ENVIRONMENT.PROD,
|
|
114
|
+
prodEncKey = PROD_ENC_KEY,
|
|
115
|
+
stagEncKey = STAGE_ENC_KEY
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
val encryptionIv = getEncryptionIv(
|
|
119
|
+
env = TATVA_ENVIRONMENT.PROD, prodEncIv = PROD_ENC_IV, stagEncIv = STAGE_ENC_IV
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
Log.d("API Response", "data: $data")
|
|
123
|
+
|
|
124
|
+
val encryptedString = getEncryptedText(
|
|
125
|
+
data = data,
|
|
126
|
+
encryptionKey = encryptionKey,
|
|
127
|
+
encryptionIv = encryptionIv
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
Log.d("API Response", "encryptedString: $encryptedString")
|
|
131
|
+
|
|
132
|
+
val decryptedString = getDecryptedData(
|
|
133
|
+
cipherText = encryptedString,
|
|
134
|
+
encryptionKey = encryptionKey,
|
|
135
|
+
encryptionIv = encryptionIv
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
Log.d("API Response", "decryptedString: $decryptedString")
|
|
139
|
+
|
|
140
|
+
val headers = mapOf(
|
|
141
|
+
"api-key" to if (environment == TATVA_ENVIRONMENT.PROD) PROD_API_KEY else STAGE_API_KEY,
|
|
142
|
+
"token" to token,
|
|
143
|
+
"Content-Type" to "text/plain"
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
val url =
|
|
147
|
+
"${if (environment == TATVA_ENVIRONMENT.PROD) PROD_BASE_URL else STAGE_BASE_URL}/cgm/connection"
|
|
148
|
+
|
|
149
|
+
val requestBody = encryptedString.toRequestBody("text/plain".toMediaType())
|
|
150
|
+
|
|
151
|
+
val response = apiServiceInterface.postCgmLogs(url, headers, requestBody).string()
|
|
152
|
+
|
|
153
|
+
val decryptedResponse = getDecryptedData(
|
|
154
|
+
cipherText = response.toString(),
|
|
155
|
+
encryptionKey = encryptionKey,
|
|
156
|
+
encryptionIv = encryptionIv
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
Log.d("API Response", "API response: $decryptedResponse")
|
|
160
|
+
|
|
161
|
+
} catch (e: Exception) {
|
|
162
|
+
e.printStackTrace()
|
|
163
|
+
Log.d("API Response", "Exception: ${e.message}")
|
|
164
|
+
} finally {
|
|
165
|
+
loaderListener.onHideLoader()
|
|
166
|
+
}
|
|
167
|
+
}
|
|
167
168
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
169
|
+
|
|
170
|
+
fun getCGMData(
|
|
171
|
+
environment: TATVA_ENVIRONMENT,
|
|
172
|
+
token: String,
|
|
173
|
+
responseListener: ResponseListener
|
|
174
|
+
) {
|
|
175
|
+
scope.launch {
|
|
176
|
+
try {
|
|
177
|
+
|
|
178
|
+
val apiServiceInterface = RetrofitInstance.getRetroInstance().create(
|
|
179
|
+
ApiServiceInterface::class.java
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
val encryptionKey = getEncryptionKey(
|
|
183
|
+
env = TATVA_ENVIRONMENT.PROD,
|
|
184
|
+
prodEncKey = PROD_ENC_KEY,
|
|
185
|
+
stagEncKey = STAGE_ENC_KEY
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
val encryptionIv = getEncryptionIv(
|
|
189
|
+
env = TATVA_ENVIRONMENT.PROD, prodEncIv = PROD_ENC_IV, stagEncIv = STAGE_ENC_IV
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
val headers = mapOf(
|
|
193
|
+
"api-key" to if (environment == TATVA_ENVIRONMENT.PROD) PROD_API_KEY else STAGE_API_KEY,
|
|
194
|
+
"token" to token
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
val url =
|
|
198
|
+
"${if (environment == TATVA_ENVIRONMENT.PROD) PROD_BASE_URL else STAGE_BASE_URL}/cgm/status"
|
|
199
|
+
|
|
200
|
+
val response = apiServiceInterface.getCgmStatus(url, headers).string()
|
|
201
|
+
|
|
202
|
+
val decryptedResponse = getDecryptedData(
|
|
203
|
+
cipherText = response.toString(),
|
|
204
|
+
encryptionKey = encryptionKey,
|
|
205
|
+
encryptionIv = encryptionIv
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
Log.d("API Response", "API Response: $decryptedResponse")
|
|
209
|
+
|
|
210
|
+
responseListener.onResponseSuccess(decryptedResponse)
|
|
211
|
+
} catch (e: Exception) {
|
|
212
|
+
responseListener.onResponseFail()
|
|
213
|
+
e.printStackTrace()
|
|
214
|
+
Log.d("API Response", "Exception: ${e.message}")
|
|
215
|
+
}
|
|
216
|
+
}
|
|
216
217
|
}
|
|
217
|
-
}
|
|
218
218
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
219
|
+
interface LoaderListener {
|
|
220
|
+
fun onShowLoader()
|
|
221
|
+
fun onHideLoader()
|
|
222
|
+
}
|
|
223
223
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
224
|
+
interface ResponseListener {
|
|
225
|
+
fun onResponseSuccess(response: String)
|
|
226
|
+
fun onResponseFail()
|
|
227
|
+
}
|
|
228
228
|
|
|
229
229
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
package com.mytatvarnsdk.utils
|
|
2
2
|
|
|
3
3
|
object TatvaEncryptionConfig {
|
|
4
|
-
const val STAGE_BASE_URL = "https://api-
|
|
4
|
+
const val STAGE_BASE_URL = "https://api-uat.mytatva.in/api/v8"
|
|
5
5
|
const val PROD_BASE_URL = "https://api.mytatva.in/api/v8"
|
|
6
6
|
|
|
7
7
|
const val PROD_ENC_KEY = "9Ddyaf6rfywpiTvTiax2iq6ykKpaxgJ6"
|