Calls Scraper and handles connection errors
This commit is contained in:
parent
d6f936e4e8
commit
05ab95f5af
4 changed files with 60 additions and 19 deletions
|
@ -53,10 +53,9 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
// read apps from the app preference
|
// read apps from the app preference
|
||||||
val sharedPref = context.getSharedPreferences(sharedPref, MODE_PRIVATE)
|
val sharedPref = context.getSharedPreferences(sharedPref, MODE_PRIVATE)
|
||||||
var data: Set<String>? = null
|
val data: Set<String>? = sharedPref.getStringSet("apps", null)
|
||||||
data = sharedPref.getStringSet("apps", null)
|
|
||||||
|
|
||||||
return data?.toMutableList() ?: mutableListOf<String>()
|
return data?.toMutableList() ?: mutableListOf()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) { // Main function
|
override fun onCreate(savedInstanceState: Bundle?) { // Main function
|
||||||
|
@ -122,7 +121,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
}, 100) // delay to add button settings
|
}, 100) // delay to add button settings
|
||||||
}
|
}
|
||||||
val user = Credentials().get(0).toString()
|
val user = Credentials().get(0).toString()
|
||||||
this.title = "${getString(R.string.app_name)} (${getString(R.string.connected_as)} $user)";
|
this.title = "${getString(R.string.app_name)} (${getString(R.string.connected_as)} $user)"
|
||||||
val valuesRecyclerView = getValuesRecyclerView() // list of all the element in the main page
|
val valuesRecyclerView = getValuesRecyclerView() // list of all the element in the main page
|
||||||
|
|
||||||
class Adapter(private val values: List<String>) :
|
class Adapter(private val values: List<String>) :
|
||||||
|
@ -161,8 +160,14 @@ class MainActivity : AppCompatActivity() {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
button?.setOnClickListener {
|
button?.setOnClickListener {
|
||||||
val password = Credentials().get(1).toString()
|
val password = Credentials().get(1)
|
||||||
callScript(user, password, "Plex") // call script
|
if (password != null) { // call script
|
||||||
|
callScript(user, password.toString(), button?.text.toString())
|
||||||
|
} else {
|
||||||
|
Toast.makeText(applicationContext, R.string.notConnected, Toast.LENGTH_LONG)
|
||||||
|
.show()
|
||||||
|
loginPage()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package com.mylloon.mobidl
|
package com.mylloon.mobidl
|
||||||
|
|
||||||
|
import android.widget.Toast
|
||||||
import com.github.kittinunf.fuel.core.FuelManager
|
import com.github.kittinunf.fuel.core.FuelManager
|
||||||
import com.github.kittinunf.fuel.httpGet
|
import com.github.kittinunf.fuel.httpGet
|
||||||
import com.github.kittinunf.fuel.httpPost
|
import com.github.kittinunf.fuel.httpPost
|
||||||
|
import com.mylloon.mobidl.MainActivity.Companion.applicationContext
|
||||||
import com.github.kittinunf.result.Result.Failure as FuelFailure
|
import com.github.kittinunf.result.Result.Failure as FuelFailure
|
||||||
import com.github.kittinunf.result.Result.Success as FuelSuccess
|
import com.github.kittinunf.result.Result.Success as FuelSuccess
|
||||||
|
|
||||||
|
@ -15,9 +17,13 @@ class Scraper(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private var url: String = "https://forum.mobilism.org"
|
private var url: String = "https://forum.mobilism.org"
|
||||||
private var sid: String? = null
|
private var sid: String? = Credentials().getSID()
|
||||||
private var retry: Int = 0
|
private var retry: Int = 0
|
||||||
|
|
||||||
|
private var errorNotConnected = "Log me on automatically each visit"
|
||||||
|
private var loginAttemptsExceeded = "You exceeded the maximum allowed number of login attempts."
|
||||||
|
private var searchNotLogged = "Sorry but you are not permitted to use the search system. If you're not logged in please"
|
||||||
|
|
||||||
private fun errorFormat(
|
private fun errorFormat(
|
||||||
code: Int? = null,
|
code: Int? = null,
|
||||||
message: String = ""
|
message: String = ""
|
||||||
|
@ -25,7 +31,7 @@ class Scraper(
|
||||||
return "${if (code != null) "[$code]" else ""}${if ((message.isNotEmpty()) and (code is Int)) " " else ""}$message."
|
return "${if (code != null) "[$code]" else ""}${if ((message.isNotEmpty()) and (code is Int)) " " else ""}$message."
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun connect(calledFromSearch: Boolean = false) {
|
private fun connect() {
|
||||||
if (debug) println("Connection attempt...")
|
if (debug) println("Connection attempt...")
|
||||||
retry++
|
retry++
|
||||||
FuelManager.instance.basePath = url
|
FuelManager.instance.basePath = url
|
||||||
|
@ -39,22 +45,36 @@ class Scraper(
|
||||||
println(errorFormat(response.statusCode, "Exception: $ex"))
|
println(errorFormat(response.statusCode, "Exception: $ex"))
|
||||||
}
|
}
|
||||||
is FuelSuccess -> {
|
is FuelSuccess -> {
|
||||||
if (debug) {
|
|
||||||
println("") // does nothing but is required otherwise everything bugs :(
|
println("") // does nothing but is required otherwise everything bugs :(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val data = session.join().data.decodeToString()
|
||||||
|
sid = "(?<=sid=)(.{32})".toRegex().find(data)?.value
|
||||||
|
if (errorNotConnected in data) return if (loginAttemptsExceeded in data) error(loginAttemptsExceeded) else error(data)
|
||||||
|
Credentials().storeSID(sid.toString())
|
||||||
|
return search()
|
||||||
}
|
}
|
||||||
sid = "(?<=sid=)(.{32})".toRegex().find(session.join().data.decodeToString())?.value
|
|
||||||
if (calledFromSearch) return search()
|
private fun error(htmlPage: String) {
|
||||||
|
var message = ""
|
||||||
|
if (errorNotConnected in htmlPage) {
|
||||||
|
message = "${applicationContext().getString(R.string.connectionFailed)}\n${applicationContext().getString(R.string.credentialsDeleted)}."
|
||||||
|
Credentials().delete()
|
||||||
|
} else if (loginAttemptsExceeded in htmlPage) {
|
||||||
|
message = applicationContext().getString(R.string.loginAttemptsExceeded)
|
||||||
|
}
|
||||||
|
println(errorFormat(message = message))
|
||||||
|
Toast.makeText(applicationContext(), message, Toast.LENGTH_LONG)
|
||||||
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun search() { // Do the research.
|
fun search() { // Do the research.
|
||||||
if (sid == null) {
|
if (sid == null) {
|
||||||
println(errorFormat(message = "No SID found"))
|
println(errorFormat(message = "No SID found"))
|
||||||
if (retry < 3) return connect(true) else return
|
if (retry < 3) return connect() else return
|
||||||
} else {
|
} else {
|
||||||
if (debug) println("Successful login!")
|
if (debug) println("SID recovered")
|
||||||
retry = 0
|
retry = 0
|
||||||
}
|
}
|
||||||
if (debug) println("Going to search page...")
|
if (debug) println("Going to search page...")
|
||||||
|
@ -70,14 +90,20 @@ class Scraper(
|
||||||
println(errorFormat(response.statusCode, "Exception: $ex"))
|
println(errorFormat(response.statusCode, "Exception: $ex"))
|
||||||
}
|
}
|
||||||
is FuelSuccess -> {
|
is FuelSuccess -> {
|
||||||
if (debug) {
|
println("") // does nothing but is required otherwise everything bugs :(
|
||||||
if (debug) println("Successful search!")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val data = session.join().data.decodeToString()
|
val data = session.join().data.decodeToString()
|
||||||
//println(data)
|
if (searchNotLogged in data) {
|
||||||
|
println(errorFormat(message = "The SID doesn't work, new attempt..."))
|
||||||
|
if (retry < 3) return connect() else return
|
||||||
|
} else return parse(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun parse(htmlPage: String) {
|
||||||
|
if (debug) println("Fetching results for $app...")
|
||||||
|
// println(htmlPage)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,4 +17,9 @@
|
||||||
<string name="dropBro">lâche frère</string>
|
<string name="dropBro">lâche frère</string>
|
||||||
<string name="internetPermission">Pas la permission d\'utiliser internet</string>
|
<string name="internetPermission">Pas la permission d\'utiliser internet</string>
|
||||||
<string name="connected_as">connecté en tant que</string>
|
<string name="connected_as">connecté en tant que</string>
|
||||||
|
<string name="connectionFailed">Connexion échoué, changez vos identifiants</string>
|
||||||
|
<string name="error">Erreur</string>
|
||||||
|
<string name="credentialsDeleted">Vos identifiants ont été supprimées</string>
|
||||||
|
<string name="loginAttemptsExceeded">Vous avez dépassé le nombre maximal autorisé de tentatives de connexion, veuillez patienter</string>
|
||||||
|
<string name="notConnected">Vous n\'êtes pas connecté, redirection vers la page de connexion</string>
|
||||||
</resources>
|
</resources>
|
|
@ -1,5 +1,6 @@
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name" translatable="false">MobiDL</string>
|
<string name="app_name" translatable="false">MobiDL</string>
|
||||||
|
<string name="error">Error</string>
|
||||||
|
|
||||||
<!-- Login page -->
|
<!-- Login page -->
|
||||||
<string name="titleLogin">Login to your Mobilism account</string>
|
<string name="titleLogin">Login to your Mobilism account</string>
|
||||||
|
@ -13,6 +14,7 @@
|
||||||
<string name="validate">Validate</string>
|
<string name="validate">Validate</string>
|
||||||
<string name="remove">Remove</string>
|
<string name="remove">Remove</string>
|
||||||
<string name="cancel">Cancel</string>
|
<string name="cancel">Cancel</string>
|
||||||
|
<string name="notConnected">You are not logged in, redirection to the login page</string>
|
||||||
<string name="dropBro">drop bro</string>
|
<string name="dropBro">drop bro</string>
|
||||||
|
|
||||||
<!-- Settings page -->
|
<!-- Settings page -->
|
||||||
|
@ -24,4 +26,7 @@
|
||||||
|
|
||||||
<!-- Scraper -->
|
<!-- Scraper -->
|
||||||
<string name="internetPermission">No permission to use internet</string>
|
<string name="internetPermission">No permission to use internet</string>
|
||||||
|
<string name="connectionFailed">Login failed, change your credentials</string>
|
||||||
|
<string name="credentialsDeleted">Your credentials have been deleted</string>
|
||||||
|
<string name="loginAttemptsExceeded">You have exceeded the maximum number of connection attempts, please wait</string>
|
||||||
</resources>
|
</resources>
|
Reference in a new issue