Skip to content

Commit d050cd5

Browse files
authored
Merge pull request #25 from Priyansh-Kedia/issue#22-23-24
Changes for builder pattern
2 parents 9368445 + f6364d9 commit d050cd5

File tree

4 files changed

+74
-10
lines changed

4 files changed

+74
-10
lines changed

OGParser/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ afterEvaluate {
7070

7171
groupId = 'com.github.Priyansh-Kedia'
7272
artifactId = 'OpenGraphParser'
73-
version = '2.5.5'
73+
version = '2.5.6'
7474
}
7575
}
7676
}

OGParser/src/main/java/com/kedia/ogparser/JsoupNetworkCall.kt

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,34 @@
11
package com.kedia.ogparser
22

3+
import android.util.Log
34
import org.jsoup.Jsoup
45

5-
class JsoupNetworkCall {
6+
/**
7+
* @param timeout - Timeout for requests, specified in milliseconds (default - 60000)
8+
* @param jsoupProxy - Specify proxy for requests (host, port)
9+
* @param maxBodySize - The maximum size to fetch for body
10+
*/
11+
12+
class JsoupNetworkCall(
13+
private val timeout: Int? = DEFAULT_TIMEOUT,
14+
private val jsoupProxy: JsoupProxy? = null,
15+
private val maxBodySize: Int? = null
16+
) {
617

718
fun callUrl(url: String, agent: String): OpenGraphResult? {
819
val openGraphResult = OpenGraphResult()
920
try {
10-
val response = Jsoup.connect(url)
21+
val connection = Jsoup.connect(url)
1122
.ignoreContentType(true)
1223
.userAgent(agent)
1324
.referrer(REFERRER)
14-
.timeout(TIMEOUT)
25+
.timeout(timeout ?: DEFAULT_TIMEOUT)
1526
.followRedirects(true)
16-
.execute()
27+
28+
jsoupProxy?.let { connection.proxy(it.host, it.port) }
29+
maxBodySize?.let { connection.maxBodySize(it) }
30+
31+
val response = connection.execute()
1732

1833
val doc = response.parse()
1934
val ogTags = doc.select(DOC_SELECT_OGTAGS)
@@ -63,11 +78,14 @@ class JsoupNetworkCall {
6378

6479
companion object {
6580
private const val REFERRER = "http://www.google.com"
66-
private const val TIMEOUT = 100000
81+
private const val DEFAULT_TIMEOUT = 60000
82+
6783
private const val DOC_SELECT_OGTAGS = "meta[property^=og:]"
6884
private const val DOC_SELECT_DESCRIPTION = "meta[name=description]"
85+
6986
private const val OPEN_GRAPH_KEY = "content"
7087
private const val PROPERTY = "property"
88+
7189
private const val OG_IMAGE = "og:image"
7290
private const val OG_DESCRIPTION = "og:description"
7391
private const val OG_URL = "og:url"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.kedia.ogparser
2+
3+
data class JsoupProxy(
4+
val host: String,
5+
val port: Int
6+
)

OGParser/src/main/java/com/kedia/ogparser/OpenGraphParser.kt

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,54 @@ package com.kedia.ogparser
33
import kotlinx.coroutines.*
44
import kotlin.coroutines.CoroutineContext
55

6-
class OpenGraphParser(
6+
class OpenGraphParser @JvmOverloads constructor(
77
private val listener: OpenGraphCallback,
88
private var showNullOnEmpty: Boolean = false,
9-
private val cacheProvider: CacheProvider? = null
10-
) {
9+
private val cacheProvider: CacheProvider? = null,
10+
timeout: Int? = null,
11+
jsoupProxy: JsoupProxy? = null,
12+
maxBodySize: Int? = null) {
1113

12-
private val jsoupNetworkCall = JsoupNetworkCall()
14+
private val jsoupNetworkCall = JsoupNetworkCall(
15+
timeout, jsoupProxy, maxBodySize
16+
)
1317

18+
private constructor(builder: Builder): this(
19+
builder.listener,
20+
builder.showNullOnEmpty,
21+
builder.cacheProvider,
22+
builder.timeout,
23+
builder.jsoupProxy,
24+
builder.maxBodySize
25+
)
26+
27+
class Builder(
28+
val listener: OpenGraphCallback
29+
) {
30+
var showNullOnEmpty: Boolean = false
31+
private set
32+
33+
var cacheProvider: CacheProvider? = null
34+
private set
35+
36+
var timeout: Int? = null
37+
private set
38+
39+
var jsoupProxy: JsoupProxy? = null
40+
private set
41+
42+
var maxBodySize: Int? = null
43+
private set
44+
45+
// Setter methods for the vars
46+
fun showNullOnEmpty(showNullOnEmpty: Boolean) = apply { this.showNullOnEmpty = showNullOnEmpty }
47+
fun cacheProvider(cacheProvider: CacheProvider) = apply { this.cacheProvider = cacheProvider }
48+
fun timeout(timeout: Int) = apply { this.timeout = timeout }
49+
fun jsoupProxy(jsoupProxy: JsoupProxy) = apply { this.jsoupProxy = jsoupProxy }
50+
fun maxBodySize(maxBodySize: Int) = apply { this.maxBodySize = maxBodySize }
51+
52+
fun build() = OpenGraphParser(this)
53+
}
1454

1555
fun parse(url: String) {
1656
ParseLink(url).parse()

0 commit comments

Comments
 (0)