|
1 | 1 | package com.kedia.ogparser |
2 | 2 |
|
| 3 | +import android.util.Log |
3 | 4 | import org.jsoup.Jsoup |
4 | 5 |
|
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 | +) { |
6 | 17 |
|
7 | 18 | fun callUrl(url: String, agent: String): OpenGraphResult? { |
8 | 19 | val openGraphResult = OpenGraphResult() |
9 | 20 | try { |
10 | | - val response = Jsoup.connect(url) |
| 21 | + val connection = Jsoup.connect(url) |
11 | 22 | .ignoreContentType(true) |
12 | 23 | .userAgent(agent) |
13 | 24 | .referrer(REFERRER) |
14 | | - .timeout(TIMEOUT) |
| 25 | + .timeout(timeout ?: DEFAULT_TIMEOUT) |
15 | 26 | .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() |
17 | 32 |
|
18 | 33 | val doc = response.parse() |
19 | 34 | val ogTags = doc.select(DOC_SELECT_OGTAGS) |
@@ -63,11 +78,14 @@ class JsoupNetworkCall { |
63 | 78 |
|
64 | 79 | companion object { |
65 | 80 | private const val REFERRER = "http://www.google.com" |
66 | | - private const val TIMEOUT = 100000 |
| 81 | + private const val DEFAULT_TIMEOUT = 60000 |
| 82 | + |
67 | 83 | private const val DOC_SELECT_OGTAGS = "meta[property^=og:]" |
68 | 84 | private const val DOC_SELECT_DESCRIPTION = "meta[name=description]" |
| 85 | + |
69 | 86 | private const val OPEN_GRAPH_KEY = "content" |
70 | 87 | private const val PROPERTY = "property" |
| 88 | + |
71 | 89 | private const val OG_IMAGE = "og:image" |
72 | 90 | private const val OG_DESCRIPTION = "og:description" |
73 | 91 | private const val OG_URL = "og:url" |
|
0 commit comments