Makes library multiplatform (#27)

* Replaces JSoup by Ksoup
This commit is contained in:
julien Lengrand-Lambert
2025-06-08 14:16:48 +02:00
committed by GitHub
parent 5372fab21c
commit 3c0eed60a7
4 changed files with 23 additions and 15 deletions

View File

@@ -12,7 +12,9 @@ repositories {
} }
dependencies { dependencies {
implementation("org.jsoup:jsoup:1.20.1") implementation("com.fleeksoft.ksoup:ksoup:0.2.4")
implementation("com.fleeksoft.ksoup:ksoup-kotlinx:0.2.4")
implementation("com.fleeksoft.ksoup:ksoup-network:0.2.4")
implementation(project(":opengraphkt")) implementation(project(":opengraphkt"))
testImplementation(kotlin("test")) testImplementation(kotlin("test"))
} }

View File

@@ -1,6 +1,6 @@
package fr.lengrand.opengraphkt package fr.lengrand.opengraphkt
import org.jsoup.Jsoup import com.fleeksoft.ksoup.Ksoup
import java.io.File import java.io.File
import java.net.URI import java.net.URI
@@ -25,7 +25,7 @@ fun main() {
println("\nExample 2: Parsing from File") println("\nExample 2: Parsing from File")
try { try {
val resourceUrl = object {}.javaClass.getResource("/example.html") val resourceUrl = object {}.javaClass.getResource("/example.html")
val resourceFile = File(resourceUrl.toURI()) val resourceFile = File(resourceUrl!!.toURI())
// Parse the file // Parse the file
val openGraphData = parser.parse(resourceFile) val openGraphData = parser.parse(resourceFile)
@@ -66,7 +66,7 @@ fun main() {
// Example 4: Parse Open Graph data from a Jsoup Document // Example 4: Parse Open Graph data from a Jsoup Document
println("\nExample 4: Parsing from JSoup Document") println("\nExample 4: Parsing from JSoup Document")
val doc = Jsoup.parse(html) val doc = Ksoup.parse(html)
val openGraphDataDoc = parser.parse(doc) val openGraphDataDoc = parser.parse(doc)
println("Title: ${openGraphDataDoc.title}") println("Title: ${openGraphDataDoc.title}")

View File

@@ -14,7 +14,9 @@ repositories {
} }
dependencies { dependencies {
implementation("org.jsoup:jsoup:1.20.1") implementation("com.fleeksoft.ksoup:ksoup:0.2.4")
implementation("com.fleeksoft.ksoup:ksoup-kotlinx:0.2.4")
implementation("com.fleeksoft.ksoup:ksoup-network:0.2.4")
testImplementation(kotlin("test")) testImplementation(kotlin("test"))
} }

View File

@@ -1,8 +1,11 @@
package fr.lengrand.opengraphkt package fr.lengrand.opengraphkt
import org.jsoup.Jsoup import com.fleeksoft.ksoup.Ksoup
import org.jsoup.nodes.Document import com.fleeksoft.ksoup.network.parseGetRequestBlocking
import org.jsoup.select.Elements import com.fleeksoft.ksoup.nodes.Document
import com.fleeksoft.ksoup.parseFile
import com.fleeksoft.ksoup.select.Elements
import kotlinx.coroutines.runBlocking
import java.io.File import java.io.File
import java.net.URI import java.net.URI
import java.net.URL import java.net.URL
@@ -61,21 +64,20 @@ class Parser {
* Extracts all Open Graph tags from a URL and returns a structured Data object. * Extracts all Open Graph tags from a URL and returns a structured Data object.
* *
* @param url The URL to be parsed for Open Graph information. * @param url The URL to be parsed for Open Graph information.
* @return An Data object containing all extracted Open Graph data. * @return A Data object containing all extracted Open Graph data.
*/ */
fun parse(url: URL) : Data { fun parse(url: URL) : Data {
val doc = Jsoup.connect(url.toString()).get() return parse(Ksoup.parseGetRequestBlocking(url.toString()))
return parse(doc)
} }
/** /**
* Extracts all Open Graph tags from a raw HTML String and returns a structured Data object. * Extracts all Open Graph tags from a raw HTML String and returns a structured Data object.
* *
* @param html The raw HTML String to be parsed for Open Graph information. * @param html The raw HTML String to be parsed for Open Graph information.
* @return An Data object containing all extracted Open Graph data. * @return A Data object containing all extracted Open Graph data.
*/ */
fun parse(html: String) : Data { fun parse(html: String) : Data {
val doc = Jsoup.parse(html) val doc = Ksoup.parse(html)
return parse(doc) return parse(doc)
} }
@@ -84,10 +86,12 @@ class Parser {
* *
* @param file The file to parse * @param file The file to parse
* @param charset The charset to use for parsing (default is UTF-8) * @param charset The charset to use for parsing (default is UTF-8)
* @return An Data object containing all extracted Open Graph data. * @return A Data object containing all extracted Open Graph data.
*/ */
fun parse(file: File, charset: String = "UTF-8") : Data { fun parse(file: File, charset: String = "UTF-8") : Data {
val doc = Jsoup.parse(file, charset) val doc = runBlocking {
Ksoup.parseFile(file, file.absolutePath, charset)
}
return parse(doc) return parse(doc)
} }