@24i/smartapps-bigscreen-rnv-build-engine 0.17.6-alpha.9 → 0.17.6
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/README.md +16 -12
- package/dist/src/constants/buildProductionPackages.js +1 -0
- package/dist/src/constants/delopyLivePlatforms.js +2 -1
- package/dist/src/constants/platforms.js +2 -0
- package/dist/src/engine.js +10 -0
- package/dist/src/resolvers/index.js +3 -1
- package/dist/src/resolvers/resolveBaseUrl.js +5 -24
- package/dist/src/resolvers/resolveProductionZipFileRelativePath.js +1 -2
- package/dist/src/resolvers/resolveS3BucketAppPath.js +15 -0
- package/dist/src/resolvers/shared/constructFullUrl.js +25 -0
- package/dist/src/scripts/buildAllWithSchemes.js +23 -4
- package/dist/src/scripts/release/appCenter/deployProductionPackagesToAppCenter.js +20 -10
- package/dist/src/scripts/release/urlsMarkdown.js +2 -0
- package/dist/src/sdks/index.js +1 -0
- package/dist/src/sdks/sdk-androidtv/sdkAndroidtv.js +25 -9
- package/dist/src/sdks/sdk-tizen/sdkTizen.js +2 -0
- package/dist/src/sdks/sdk-webos/sdkWebos.js +2 -0
- package/dist/src/sdks/sdk-webpack/sdkWebpack.js +2 -0
- package/dist/src/tasks/deploy/aswS3/deployS3.js +3 -10
- package/dist/src/tasks/deploy/aswS3/distToLiveS3.js +4 -5
- package/dist/src/tasks/deploy/hbbtv/deployHbbtv.js +1 -1
- package/dist/src/tasks/task.rnv.build.js +16 -6
- package/dist/src/tasks/task.rnv.configure.js +2 -0
- package/dist/src/tasks/task.rnv.deploy.js +2 -0
- package/dist/src/tasks/task.rnv.platform.configure.js +33 -1
- package/dist/src/tasks/task.rnv.start.js +2 -0
- package/dist/src/utils/copyTheoPlayerLibs.js +48 -0
- package/dist/src/utils/zipStagingProdBuildsByPlatforms.js +3 -3
- package/dist/templates/platforms/androidtv/project/amazoniap/build.gradle +2 -2
- package/dist/templates/platforms/androidtv/project/app/build.gradle +17 -21
- package/dist/templates/platforms/androidtv/project/app/proguard-rules.pro +15 -0
- package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/raw/configuration.json +1 -2
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeFromJavaScript.kt +4 -58
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeToJavaScript.kt +15 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/BridgeConfig.kt +2 -1
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ActivityModule.kt +0 -3
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationModule.kt +2 -2
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/PerActivity.kt +0 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryConfigured.kt +33 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerCustomized.kt +7 -1
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryTheoPlayerCustomized.kt +14 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryVersion.kt +27 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/SourceDrmOverridden.kt +42 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/MediaEventType.kt +3 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/SourceParser.kt +89 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/Mainview.kt +0 -3
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/PlayerCache.kt +2 -2
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/WebViewActivity.kt +24 -83
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/viewmodel/WebViewModel.kt +48 -111
- package/dist/templates/platforms/androidtv/project/app/src/main/res/layout/activity_web_view.xml +23 -71
- package/dist/templates/platforms/androidtv/project/common/build.gradle +2 -2
- package/dist/templates/platforms/androidtv/project/googleiap/build.gradle +2 -2
- package/package.json +1 -1
- package/renative.engine.json +2 -0
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/jump/JumpAnalytics.kt +0 -211
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/ContentModelParser.kt +0 -16
- package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/DeviceInfoParser.kt +0 -22
package/dist/templates/platforms/androidtv/project/app/src/main/res/layout/activity_web_view.xml
CHANGED
|
@@ -1,76 +1,28 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
2
|
+
android:layout_width="match_parent"
|
|
3
|
+
android:layout_height="match_parent"
|
|
4
|
+
android:background="@android:color/black">
|
|
4
5
|
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
type="com.twentyfouri.tvbridge.webview.viewmodel.WebViewModel" />
|
|
10
|
-
</data>
|
|
6
|
+
<com.twentyfouri.player.base.PlayerView
|
|
7
|
+
android:id="@+id/player_view"
|
|
8
|
+
android:layout_width="match_parent"
|
|
9
|
+
android:layout_height="match_parent" />
|
|
11
10
|
|
|
12
|
-
<
|
|
11
|
+
<View
|
|
12
|
+
android:id="@+id/black_curtain"
|
|
13
13
|
android:layout_width="match_parent"
|
|
14
14
|
android:layout_height="match_parent"
|
|
15
|
-
android:background="@android:color/black"
|
|
16
|
-
tools:context=".webview.ui.view.WebViewActivity">
|
|
17
|
-
|
|
18
|
-
<com.twentyfouri.player.base.PlayerView
|
|
19
|
-
android:id="@+id/exoplayer_view"
|
|
20
|
-
android:layout_width="match_parent"
|
|
21
|
-
android:layout_height="match_parent" />
|
|
22
|
-
|
|
23
|
-
<View
|
|
24
|
-
android:id="@+id/black_curtain"
|
|
25
|
-
android:layout_width="match_parent"
|
|
26
|
-
android:layout_height="match_parent"
|
|
27
|
-
android:background="@android:color/black" />
|
|
28
|
-
|
|
29
|
-
<LinearLayout
|
|
30
|
-
android:id="@+id/url_setter"
|
|
31
|
-
android:layout_width="match_parent"
|
|
32
|
-
android:layout_height="wrap_content"
|
|
33
|
-
android:layout_centerInParent="true"
|
|
34
|
-
android:layout_margin="80dp"
|
|
35
|
-
android:orientation="vertical"
|
|
36
|
-
app:visibility="@{viewModel.urlSetterVisibility}">
|
|
37
|
-
|
|
38
|
-
<EditText
|
|
39
|
-
android:id="@+id/url"
|
|
40
|
-
android:layout_width="match_parent"
|
|
41
|
-
android:layout_height="wrap_content"
|
|
42
|
-
android:nextFocusUp="@+id/url"
|
|
43
|
-
android:nextFocusLeft="@+id/url"
|
|
44
|
-
android:nextFocusRight="@+id/url"
|
|
45
|
-
android:textColor="@android:color/white"/>
|
|
46
|
-
|
|
47
|
-
<Button
|
|
48
|
-
android:id="@+id/button_go"
|
|
49
|
-
android:layout_width="100dp"
|
|
50
|
-
android:layout_height="wrap_content"
|
|
51
|
-
android:background="@drawable/button_focus"
|
|
52
|
-
android:textColor="@android:color/black"
|
|
53
|
-
android:nextFocusDown="@+id/button_go"
|
|
54
|
-
android:nextFocusLeft="@+id/button_go"
|
|
55
|
-
android:nextFocusRight="@+id/button_go"
|
|
56
|
-
android:onClick="@{() -> viewModel.onClickGo()}"
|
|
57
|
-
android:text="GO" />
|
|
58
|
-
|
|
59
|
-
</LinearLayout>
|
|
60
|
-
|
|
61
|
-
<com.twentyfouri.tvbridge.webview.client.BridgeWebView
|
|
62
|
-
android:id="@+id/webview"
|
|
63
|
-
android:layout_width="match_parent"
|
|
64
|
-
android:layout_height="match_parent"
|
|
65
|
-
android:layout_alignParentBottom="true"
|
|
66
|
-
android:layout_alignParentEnd="true"
|
|
67
|
-
android:layout_alignParentStart="true"
|
|
68
|
-
android:layout_alignParentTop="true"
|
|
69
|
-
android:background="@android:color/transparent"
|
|
70
|
-
android:visibility="gone"/>
|
|
71
|
-
|
|
72
|
-
</RelativeLayout>
|
|
73
|
-
|
|
74
|
-
</layout>
|
|
75
|
-
|
|
15
|
+
android:background="@android:color/black" />
|
|
76
16
|
|
|
17
|
+
<com.twentyfouri.tvbridge.webview.client.BridgeWebView
|
|
18
|
+
android:id="@+id/webview"
|
|
19
|
+
android:layout_width="match_parent"
|
|
20
|
+
android:layout_height="match_parent"
|
|
21
|
+
android:layout_alignParentStart="true"
|
|
22
|
+
android:layout_alignParentTop="true"
|
|
23
|
+
android:layout_alignParentEnd="true"
|
|
24
|
+
android:layout_alignParentBottom="true"
|
|
25
|
+
android:background="@android:color/transparent"
|
|
26
|
+
android:visibility="gone" />
|
|
27
|
+
|
|
28
|
+
</RelativeLayout>
|
|
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
|
|
|
2
2
|
apply plugin: 'kotlin-android'
|
|
3
3
|
|
|
4
4
|
android {
|
|
5
|
-
compileSdkVersion
|
|
5
|
+
compileSdkVersion 33
|
|
6
6
|
|
|
7
7
|
compileOptions {
|
|
8
8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
@@ -11,7 +11,7 @@ android {
|
|
|
11
11
|
|
|
12
12
|
defaultConfig {
|
|
13
13
|
minSdkVersion 21
|
|
14
|
-
targetSdkVersion
|
|
14
|
+
targetSdkVersion 33
|
|
15
15
|
|
|
16
16
|
versionCode 1
|
|
17
17
|
versionName "1.0"
|
|
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
|
|
|
2
2
|
apply plugin: 'kotlin-android'
|
|
3
3
|
|
|
4
4
|
android {
|
|
5
|
-
compileSdkVersion
|
|
5
|
+
compileSdkVersion 33
|
|
6
6
|
|
|
7
7
|
compileOptions {
|
|
8
8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
@@ -11,7 +11,7 @@ android {
|
|
|
11
11
|
|
|
12
12
|
defaultConfig {
|
|
13
13
|
minSdkVersion 21
|
|
14
|
-
targetSdkVersion
|
|
14
|
+
targetSdkVersion 33
|
|
15
15
|
|
|
16
16
|
versionCode 1
|
|
17
17
|
versionName "1.0"
|
package/package.json
CHANGED
package/renative.engine.json
CHANGED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.jump
|
|
2
|
-
|
|
3
|
-
import android.util.Log
|
|
4
|
-
import com.google.android.exoplayer2.ExoPlayer
|
|
5
|
-
import com.google.android.exoplayer2.SimpleExoPlayer
|
|
6
|
-
import com.google.gson.JsonObject
|
|
7
|
-
import com.twentyfouri.tvbridge.BuildConfig
|
|
8
|
-
import com.twentyfouri.tvbridge.webview.model.AnalyticsPlaybackInfo
|
|
9
|
-
import jump.JumpKit
|
|
10
|
-
import jump.insights.models.contextinformation.*
|
|
11
|
-
import jump.insights.models.track.events.JKContentType
|
|
12
|
-
import jump.insights.models.track.events.JKTransactionType
|
|
13
|
-
import jump.libs.gson.annotations.SerializedName
|
|
14
|
-
import java.util.*
|
|
15
|
-
|
|
16
|
-
class JumpAnalytics {
|
|
17
|
-
|
|
18
|
-
private var started = false
|
|
19
|
-
private var hasContent = false
|
|
20
|
-
|
|
21
|
-
fun setPlaybackInfo(playbackInfo: AnalyticsPlaybackInfo) {
|
|
22
|
-
setApplicationId(playbackInfo.id ?: return)
|
|
23
|
-
setUserInfo(playbackInfo.userInfo)
|
|
24
|
-
setContentInfo(playbackInfo.contentInfo)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
private fun setApplicationId(applicationId: String) {
|
|
28
|
-
if (started) return
|
|
29
|
-
started = true
|
|
30
|
-
JumpKit.setDebugMode(BuildConfig.DEBUG)
|
|
31
|
-
JumpKit.start(applicationId)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private fun setUserInfo(params: JsonObject?) {
|
|
35
|
-
JumpKit.insights.setUserInfo(parseUserInfo(params))
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private fun setContentInfo(params: JsonObject?) {
|
|
39
|
-
val contentInfo = parseContentInfo(params)
|
|
40
|
-
jump.exoplayerextension.JumpKit.insights.setContentInfo(contentInfo)
|
|
41
|
-
hasContent = true
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
fun setVideoPlayer(player: ExoPlayer?) {
|
|
45
|
-
@Suppress("DEPRECATION")
|
|
46
|
-
if (player !is SimpleExoPlayer) {
|
|
47
|
-
/* NOTICE: passing null also causes insights.setContentInfo(null) */
|
|
48
|
-
jump.exoplayerextension.JumpKit.insights.setVideoPlayer(null)
|
|
49
|
-
hasContent = false
|
|
50
|
-
} else if (started && hasContent) {
|
|
51
|
-
jump.exoplayerextension.JumpKit.insights.setVideoPlayer(player)
|
|
52
|
-
} else if (started) {
|
|
53
|
-
Log.w("JumpAnalytics", "No content data available. Did you call SetPlaybackInfo before SetVideoPath?")
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private fun parseUserInfo(params: JsonObject?): JKUserInfo {
|
|
58
|
-
return try {
|
|
59
|
-
var userType = parseEnum(params, "userType", JKUserType::class.java)
|
|
60
|
-
if (userType == null) userType = JKUserType.ANONYMOUS
|
|
61
|
-
val userId = parseString(params, "userId")
|
|
62
|
-
val userCountry = parseString(params, "userCountry")
|
|
63
|
-
val userBirthDate = parseString(params, "userBirthDate")
|
|
64
|
-
var userSex = parseEnum(params, "userSex", JKUserSex::class.java)
|
|
65
|
-
if (userSex == null) userSex = JKUserSex.UNDEFINED
|
|
66
|
-
val userProfileId = parseString(params, "userProfileId")
|
|
67
|
-
val userOperator = parseString(params, "userOperator")
|
|
68
|
-
if (userType == JKUserType.ANONYMOUS) JKUserInfo.anonymousInstance() else JKUserInfo(userType, userId, userCountry, userBirthDate, userSex, userProfileId, userOperator)
|
|
69
|
-
} catch (e: Exception) {
|
|
70
|
-
Log.w("JumpAnalytics", "Parsing userInfo failed. Falling back to ANONYMOUS", e)
|
|
71
|
-
JKUserInfo.anonymousInstance()
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
private fun parseCategory(params: JsonObject?, property: String): JKContextCategory? {
|
|
76
|
-
val jsonValue = params?.get(property) ?: return null
|
|
77
|
-
return if (!jsonValue.isJsonObject) null else parseCategory(jsonValue.asJsonObject)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private fun parseCategory(params: JsonObject): JKContextCategory {
|
|
81
|
-
return JKContextCategory(
|
|
82
|
-
parseString(params, "categoryId"),
|
|
83
|
-
parseString(params, "categoryName")
|
|
84
|
-
)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
private fun parseSubCategory(params: JsonObject?, property: String): JKContextSubcategory? {
|
|
88
|
-
val jsonValue = params?.get(property) ?: return null
|
|
89
|
-
return if (!jsonValue.isJsonObject) null else parseSubCategory(jsonValue.asJsonObject)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
private fun parseSubCategory(params: JsonObject): JKContextSubcategory {
|
|
93
|
-
return JKContextSubcategory(
|
|
94
|
-
parseString(params, "subcategoryId"),
|
|
95
|
-
parseString(params, "categoryId"),
|
|
96
|
-
parseString(params, "subcategoryName")
|
|
97
|
-
)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
private fun parseGenre(params: JsonObject): JKContextGenre {
|
|
101
|
-
return JKContextGenre(
|
|
102
|
-
parseString(params, "genreId"),
|
|
103
|
-
parseString(params, "genreName"),
|
|
104
|
-
parseCategory(params, "categoryId"),
|
|
105
|
-
parseSubCategory(params, "subCategoryId")
|
|
106
|
-
)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
private fun parseContentInfo(params: JsonObject?): JKContextContent {
|
|
110
|
-
return JKContextContent(
|
|
111
|
-
parseString(params, "contentId"),
|
|
112
|
-
parseString(params, "contentTitle"),
|
|
113
|
-
parseString(params, "contentSerieTitle"),
|
|
114
|
-
parseInteger(params, "contentEpisodeNumber"),
|
|
115
|
-
parseInteger(params, "contentSeasonNumber"),
|
|
116
|
-
parseString(params, "contentDescription"),
|
|
117
|
-
parseCategory(params, "contentCategory"),
|
|
118
|
-
parseSubCategory(params, "contentSubCategory"),
|
|
119
|
-
parseGenres(params, "contentGenres"),
|
|
120
|
-
parseString(params, "contentProvider"),
|
|
121
|
-
parseEnum(params, "contentTransactionType", JKTransactionType::class.java),
|
|
122
|
-
parseEnum(params, "contentType", JKContentType::class.java),
|
|
123
|
-
parseString(params, "contentLanguage")
|
|
124
|
-
)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
private fun parseGenres(container: JsonObject?, property: String): List<JKContextGenre>? {
|
|
128
|
-
if (container == null) return null
|
|
129
|
-
val jsonValue = container[property] ?: return null
|
|
130
|
-
if (!jsonValue.isJsonArray) return null
|
|
131
|
-
val list = ArrayList<JKContextGenre>()
|
|
132
|
-
for (jsonElement in jsonValue.asJsonArray) {
|
|
133
|
-
if (!jsonElement.isJsonObject) continue
|
|
134
|
-
list.add(parseGenre(jsonElement.asJsonObject))
|
|
135
|
-
}
|
|
136
|
-
return list
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
private fun <T : Enum<T>> parseEnum(container: JsonObject?, property: String, type: Class<T>): T? {
|
|
140
|
-
if (container == null) return null
|
|
141
|
-
val jsonValue = container[property] ?: return null
|
|
142
|
-
if (!jsonValue.isJsonPrimitive) return null
|
|
143
|
-
val primitive = jsonValue.asJsonPrimitive
|
|
144
|
-
return when {
|
|
145
|
-
primitive.isString ->
|
|
146
|
-
parseEnum(type, jsonValue.asString)
|
|
147
|
-
primitive.isNumber ->
|
|
148
|
-
parseEnum(type, jsonValue.asInt)
|
|
149
|
-
else ->
|
|
150
|
-
null
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
private fun <T : Enum<T>> parseEnum(type: Class<T>, value: String): T? {
|
|
155
|
-
try {
|
|
156
|
-
for (constant in type.enumConstants ?: return null) {
|
|
157
|
-
val name = constant.name
|
|
158
|
-
if (name == value) {
|
|
159
|
-
return constant
|
|
160
|
-
}
|
|
161
|
-
val annotation = type.getField(name).getAnnotation(SerializedName::class.java)
|
|
162
|
-
if (annotation != null) {
|
|
163
|
-
if (annotation.value == value) {
|
|
164
|
-
return constant
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return null
|
|
169
|
-
} catch (e: NoSuchFieldException) {
|
|
170
|
-
return null
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
@Suppress("UNCHECKED_CAST")
|
|
175
|
-
private fun <T : Enum<T>> parseEnum(type: Class<T>, value: Int): T? {
|
|
176
|
-
return try {
|
|
177
|
-
val map = type.getDeclaredField("mapper")[null] as Map<T, Int>
|
|
178
|
-
for ((key, value1) in map) {
|
|
179
|
-
if (value1 == value) {
|
|
180
|
-
return key
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
null
|
|
184
|
-
} catch (e: ClassCastException) {
|
|
185
|
-
null
|
|
186
|
-
} catch (e: IllegalAccessException) {
|
|
187
|
-
null
|
|
188
|
-
} catch (e: NoSuchFieldException) {
|
|
189
|
-
null
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
private fun parseString(container: JsonObject?, property: String): String? {
|
|
194
|
-
if (container == null) return null
|
|
195
|
-
var jsonValue = container[property]
|
|
196
|
-
if (jsonValue == null && property.endsWith("Id")) {
|
|
197
|
-
// inconsistencies in SDK cause confusion, try uppercased xxxxID just in case
|
|
198
|
-
jsonValue = container[property.replace("Id", "ID")]
|
|
199
|
-
}
|
|
200
|
-
if (jsonValue == null) return null
|
|
201
|
-
if (!jsonValue.isJsonPrimitive) return null
|
|
202
|
-
return if (!jsonValue.asJsonPrimitive.isString) null else jsonValue.asString
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
private fun parseInteger(container: JsonObject?, property: String): Int? {
|
|
206
|
-
if (container == null) return null
|
|
207
|
-
val jsonValue = container[property] ?: return null
|
|
208
|
-
if (!jsonValue.isJsonPrimitive) return null
|
|
209
|
-
return if (!jsonValue.asJsonPrimitive.isNumber) null else jsonValue.asInt
|
|
210
|
-
}
|
|
211
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.parser
|
|
2
|
-
|
|
3
|
-
import com.google.gson.Gson
|
|
4
|
-
import com.twentyfouri.tvbridge.webview.model.ContentModel
|
|
5
|
-
|
|
6
|
-
object ContentModelParser {
|
|
7
|
-
fun stringToJson(json: String?): ContentModel? = when {
|
|
8
|
-
json.isNullOrEmpty() -> null
|
|
9
|
-
json.startsWith("http://") || json.startsWith("https://") ->
|
|
10
|
-
ContentModel().apply {
|
|
11
|
-
streamUrl = json
|
|
12
|
-
}
|
|
13
|
-
else ->
|
|
14
|
-
Gson().fromJson(json, ContentModel::class.java)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
package com.twentyfouri.tvbridge.webview.parser
|
|
2
|
-
|
|
3
|
-
import android.os.Build
|
|
4
|
-
import org.json.JSONException
|
|
5
|
-
import org.json.JSONObject
|
|
6
|
-
|
|
7
|
-
object DeviceInfoParser {
|
|
8
|
-
// TODO Auto-generated catch block
|
|
9
|
-
val deviceInfoParsed: String
|
|
10
|
-
get() {
|
|
11
|
-
val deviceInfo = JSONObject()
|
|
12
|
-
try {
|
|
13
|
-
deviceInfo.put("deviceBrand", Build.MANUFACTURER)
|
|
14
|
-
deviceInfo.put("deviceModel", Build.MODEL)
|
|
15
|
-
deviceInfo.put("osVersion", Build.VERSION.RELEASE)
|
|
16
|
-
} catch (e: JSONException) {
|
|
17
|
-
// TODO Auto-generated catch block
|
|
18
|
-
e.printStackTrace()
|
|
19
|
-
}
|
|
20
|
-
return deviceInfo.toString()
|
|
21
|
-
}
|
|
22
|
-
}
|