Skip to content

Commit ffeb478

Browse files
committed
Refactoring
1 parent 4b2a009 commit ffeb478

26 files changed

+266
-115
lines changed

app/src/main/java/com/gapps/videonoapi/ui/base/BaseActivity.kt

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.net.Uri
55
import android.widget.TextView
66
import android.widget.Toast
77
import androidx.appcompat.app.AppCompatActivity
8+
import androidx.core.content.ContextCompat
89
import com.gapps.library.api.models.video.VideoPreviewModel
910
import com.gapps.library.ui.bottom_menu.BottomVideoController
1011
import com.gapps.videonoapi.R
@@ -32,15 +33,30 @@ abstract class BaseActivity : AppCompatActivity() {
3233
setSize(model.width, model.height)
3334
setTitle(title)
3435
setVideoUrl(initUrl)
35-
setBackgroundColor(R.color.colorBackground)
36-
setTextColor(R.color.colorHostName)
37-
setTitleColor(R.color.colorVideoTitle)
36+
setBackgroundColor(ContextCompat.getColor(this@BaseActivity, R.color.colorBackground))
37+
setTextColor(ContextCompat.getColor(this@BaseActivity, R.color.colorHostName))
38+
setTitleColor(ContextCompat.getColor(this@BaseActivity, R.color.colorVideoTitle))
3839
setLeftButtonText(R.string.vna_close)
3940
setRightButtonText(R.string.vna_open_in)
40-
setRightButtonTextColor(R.color.colorVideoTitle)
41-
setLeftButtonTextColor(R.color.colorVideoTitle)
41+
setRightButtonTextColor(
42+
ContextCompat.getColor(
43+
this@BaseActivity,
44+
R.color.colorVideoTitle
45+
)
46+
)
47+
setLeftButtonTextColor(
48+
ContextCompat.getColor(
49+
this@BaseActivity,
50+
R.color.colorVideoTitle
51+
)
52+
)
4253
setCenterButtonIcon(R.drawable.ic_vna_content_copy)
43-
setCenterButtonIconTint(R.color.colorVideoTitle)
54+
setCenterButtonIconTint(
55+
ContextCompat.getColor(
56+
this@BaseActivity,
57+
R.color.colorVideoTitle
58+
)
59+
)
4460
setProgressView(TextView(this@BaseActivity).apply {
4561
text = "Loading"; setTextColor(-1)
4662
})

app/src/main/java/com/gapps/videonoapi/ui/main/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class MainActivity : BaseActivity() {
3131
"https://streamable.com/s0phr",
3232
"https://vimeo.com/259411563",
3333
"https://rutube.ru/video/d70e62b44b8893e98e3e90a6e2c9fcd4/?pl_type=source&pl_id=18265",
34-
"https://www.facebook.com/kinodizi/videos/965220097161488",
34+
"https://www.facebook.com/watch?v=795751214848051",
3535
"https://www.dailymotion.com/video/x5sxbmb",
3636
"https://dave.wistia.com/medias/0k5h1g1chs/",
3737
"https://vzaar.com/videos/401431",

app/src/main/java/com/gapps/videonoapi/ui/main/adapters/VideoAdapter.kt

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import androidx.core.view.isVisible
1111
import androidx.recyclerview.widget.RecyclerView
1212
import coil.load
1313
import com.gapps.library.api.VideoService
14+
import com.gapps.library.api.models.api.*
15+
import com.gapps.library.api.models.api.builder.EmbeddingRequest
1416
import com.gapps.library.api.models.video.VideoPreviewModel
1517
import com.gapps.videonoapi.R
1618
import com.gapps.videonoapi.utils.extensions.collapse
@@ -91,7 +93,7 @@ class VideoAdapter(
9193

9294
if (loadedDataItem == null) {
9395
videoService.loadVideoPreview(
94-
url = item,
96+
request = createRequestBuilder(item),
9597
onSuccess = { video ->
9698
loadedData.put(bindingAdapterPosition, video)
9799
loadedDataItem = video
@@ -177,21 +179,21 @@ class VideoAdapter(
177179
type ?: return
178180

179181
val icon = when (type) {
180-
"YouTube" -> R.drawable.youtube
181-
"YouTube Music" -> R.drawable.youtube_music
182-
"Vimeo" -> R.drawable.vimeo
183-
"Rutube" -> R.drawable.rutube
184-
"Facebook" -> R.drawable.ic_fb
185-
"Dailymotion" -> R.drawable.dailymotion
186-
"Wistia" -> R.drawable.ic_wistia
187-
"Vzaar" -> R.drawable.ic_vzaar
188-
"Hulu" -> R.drawable.hulu
189-
"Ustream" -> R.drawable.ibm
190-
"Ted Talks" -> R.drawable.ted_talks
191-
"Coub" -> R.drawable.ic_coub
192-
"Ultimedia" -> R.drawable.ultimedia
193-
"Streamable" -> R.drawable.streamable
194-
"Loom" -> R.drawable.loom
182+
YOUTUBE_HOST_NAME -> R.drawable.youtube
183+
YOUTUBE_MUSIC_HOST_NAME -> R.drawable.youtube_music
184+
VIMEO_HOST_NAME -> R.drawable.vimeo
185+
RUTUBE_HOST_NAME -> R.drawable.rutube
186+
FACEBOOK_HOST_NAME -> R.drawable.ic_fb
187+
DAILYMOTION_HOST_NAME -> R.drawable.dailymotion
188+
WISTIA_HOST_NAME -> R.drawable.ic_wistia
189+
VZAAR_HOST_NAME -> R.drawable.ic_vzaar
190+
HULU_HOST_NAME -> R.drawable.hulu
191+
USTREAM_HOST_NAME -> R.drawable.ibm
192+
TED_TALKS_HOST_NAME -> R.drawable.ted_talks
193+
COUB_HOST_NAME -> R.drawable.ic_coub
194+
ULTIMEDIA_HOST_NAME -> R.drawable.ultimedia
195+
STREAMABLE_HOST_NAME -> R.drawable.streamable
196+
LOOM_HOST_NAME -> R.drawable.loom
195197
else -> R.drawable.ic_video
196198
}
197199

@@ -202,4 +204,14 @@ class VideoAdapter(
202204
interface Listener {
203205
fun onItemClick(item: VideoPreviewModel)
204206
}
207+
}
208+
209+
fun createRequestBuilder(url: String) = EmbeddingRequest.build {
210+
setUrl(url)
211+
headers {
212+
host(FACEBOOK_HOST_NAME) {
213+
add("access_token", "2940857442908969|0733ab34586cc8a92080dc1b1d1e6971")
214+
addAll(mapOf())
215+
}
216+
}
205217
}

embedded_video_lib/build.gradle

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,10 @@ android {
2727
}
2828

2929
dependencies {
30-
implementation fileTree(dir: 'libs', include: ['*.jar'])
31-
3230
//AndroidX
33-
implementation 'androidx.appcompat:appcompat:1.4.1'
34-
implementation 'com.google.android.material:material:1.5.0'
35-
implementation 'androidx.core:core-ktx:1.7.0'
31+
api 'androidx.appcompat:appcompat:1.4.1'
32+
api 'com.google.android.material:material:1.5.0'
33+
api 'androidx.core:core-ktx:1.7.0'
3634

3735
//Gson
3836
api 'com.google.code.gson:gson:2.8.7'

embedded_video_lib/src/main/java/com/gapps/library/api/VideoLoadHelper.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ internal class VideoLoadHelper(
4141
) {
4242
val videoInfoModel = requestModel.videoInfoModel
4343
val originalUrl = requestModel.originalUrl
44+
val headers = requestModel.requestHeaders
4445

4546
if (videoInfoModel == null) {
4647
onError(originalUrl, ERROR_1)
@@ -73,7 +74,7 @@ internal class VideoLoadHelper(
7374
}
7475

7576
val jsonBody = withContext(Dispatchers.IO) {
76-
makeCallGetBody(client, finalUrl)
77+
makeCallGetBody(client, finalUrl, headers)
7778
}
7879

7980
if (isLogEnabled) {
@@ -112,9 +113,19 @@ internal class VideoLoadHelper(
112113
}
113114
}
114115

115-
private fun makeCallGetBody(client: OkHttpClient, url: String): JsonElement? =
116+
private fun makeCallGetBody(
117+
client: OkHttpClient,
118+
url: String,
119+
headers: Map<String, String>
120+
): JsonElement? =
116121
runBlocking {
117-
val response = client.newCall(Request.Builder().url(url).build()).execute()
122+
val requestBuilder = Request.Builder().url(url)
123+
124+
headers.entries.forEach { header ->
125+
requestBuilder.addHeader(header.key, header.value)
126+
}
127+
128+
val response = client.newCall(requestBuilder.build()).execute()
118129
val stringBody = response.body?.string() ?: return@runBlocking null
119130
val jsonObject = parseString(stringBody)
120131

embedded_video_lib/src/main/java/com/gapps/library/api/VideoService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ class VideoService private constructor(
4141
StreamableVideoInfoModel()
4242
)
4343

44+
val videoPatterns
45+
get() = videoInfoModelsList.map { it.pattern }
46+
4447
inline fun build(block: Builder.() -> Unit) = Builder().apply(block).build()
4548
}
4649

embedded_video_lib/src/main/java/com/gapps/library/api/models/api/CoubVideoInfoModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ open class CoubVideoInfoModel : VideoInfoModel<CoubResponse>() {
1111

1212
//https://regex101.com/r/ZoQVLa/1
1313
override val pattern: String
14-
get() = "(?:http[s]?:\\/\\/)?(?:www)?\\.?coub\\.com\\/(?:embed|view|api)\\/([_a-zA-Z0-9]+)[^,;\\s]*"
14+
get() = COUB_PATTERN
1515

1616
override val idPattern: String
1717
get() = pattern
@@ -20,7 +20,7 @@ open class CoubVideoInfoModel : VideoInfoModel<CoubResponse>() {
2020
get() = CoubResponse::class.java
2121

2222
override val hostingName: String
23-
get() = "Coub"
23+
get() = COUB_HOST_NAME
2424

2525
override fun getInfoUrl(incomingUrl: String?): String? {
2626
incomingUrl ?: return null

embedded_video_lib/src/main/java/com/gapps/library/api/models/api/DailymotionVideoInfoModel.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@ open class DailymotionVideoInfoModel : VideoInfoModel<DailymotionResponse>() {
99
get() = "https://www.dailymotion.com"
1010

1111
override val pattern: String
12-
get() = "(?:http[s]?://)?(?:www\\.)?(?:(?:dailymotion\\.com(?:/embed)?/video)|dai\\.ly)/([a-zA-Z0-9]+)[^,;\\s]*"
13-
12+
get() = DAILYMOTION_PATTERN
1413
override val idPattern: String
1514
get() = pattern
1615

1716
override val type: Class<DailymotionResponse> = DailymotionResponse::class.java
1817

1918
override val hostingName: String
20-
get() = "Dailymotion"
19+
get() = DAILYMOTION_HOST_NAME
2120

2221
override fun getInfoUrl(incomingUrl: String?): String? {
2322
incomingUrl ?: return null

embedded_video_lib/src/main/java/com/gapps/library/api/models/api/FacebookVideoInfoModel.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
package com.gapps.library.api.models.api
22

3-
import com.gapps.library.api.FORMAT_JSON
43
import com.gapps.library.api.URL
54
import com.gapps.library.api.models.api.base.VideoInfoModel
65
import com.gapps.library.api.models.video.facebook.FacebookResponse
76

87
open class FacebookVideoInfoModel : VideoInfoModel<FacebookResponse>() {
98
override val baseUrl: String
10-
get() = "https://apps.facebook.com"
9+
get() = "https://graph.facebook.com/v15.0/"
1110

12-
//Pattern: https://regex101.com/r/98Nfkr/5
11+
//Pattern: https://regex101.com/r/98Nfkr/6
1312
override val pattern: String
14-
get() = "(?:http[s]?://)?(?:www.|web.|m.)?(?:facebook|fb)?.com/(?:(?:video.php|watch?/)?\\?v=|.+/videos(?:/.+)?/)(\\d+)[^,;\\s]*"
13+
get() = FACEBOOK_PATTERN
1514
override val idPattern: String
1615
get() = pattern
1716
override val type: Class<FacebookResponse>
1817
get() = FacebookResponse::class.java
1918
override val hostingName: String
20-
get() = "Facebook"
19+
get() = FACEBOOK_HOST_NAME
2120

2221
override fun getInfoUrl(incomingUrl: String?): String? {
2322
val id = parseVideoId(incomingUrl)
24-
return "$baseUrl/plugins/video/oembed.$FORMAT_JSON?$URL=https://www.facebook.com/facebook/videos/$id"
23+
return "$baseUrl/oembed_page?$URL=https://www.facebook.com/facebook/videos/$id"
2524
}
2625

2726
override fun getPlayLink(videoId: String): String {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@file:JvmName("HostConstants")
2+
package com.gapps.library.api.models.api
3+
4+
const val COUB_HOST_NAME ="Coub"
5+
const val DAILYMOTION_HOST_NAME = "Dailymotion"
6+
const val FACEBOOK_HOST_NAME ="Facebook"
7+
const val HULU_HOST_NAME = "Hulu"
8+
const val LOOM_HOST_NAME = "Loom"
9+
const val RUTUBE_HOST_NAME = "Rutube"
10+
const val STREAMABLE_HOST_NAME = "Streamable"
11+
const val TED_TALKS_HOST_NAME = "Ted Talks"
12+
const val TIKTOK_HOST_NAME = "TikTok"
13+
const val ULTIMEDIA_HOST_NAME = "Ultimedia"
14+
const val USTREAM_HOST_NAME = "Ustream"
15+
const val VIMEO_HOST_NAME = "Vimeo"
16+
const val VZAAR_HOST_NAME = "Vzaar"
17+
const val WISTIA_HOST_NAME = "Wistia"
18+
const val YOUTUBE_MUSIC_HOST_NAME = "Youtube Music"
19+
const val YOUTUBE_HOST_NAME = "YouTube"

0 commit comments

Comments
 (0)