mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-01-18 21:06:44 -06:00
[APIv2/Librus] Add Librus Messages endpoint
This commit is contained in:
parent
5166228915
commit
de82bc7e4d
@ -158,6 +158,8 @@ dependencies {
|
|||||||
|
|
||||||
//implementation 'com.github.wulkanowy:uonet-request-signer:master-SNAPSHOT'
|
//implementation 'com.github.wulkanowy:uonet-request-signer:master-SNAPSHOT'
|
||||||
//implementation 'com.github.kuba2k2.uonet-request-signer:android:master-63f094b14a-1'
|
//implementation 'com.github.kuba2k2.uonet-request-signer:android:master-63f094b14a-1'
|
||||||
|
|
||||||
|
implementation "org.redundent:kotlin-xml-builder:1.5.3"
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
@ -129,3 +129,4 @@ const val EXCEPTION_LIBRUS_SYNERGIA_REQUEST = 905
|
|||||||
const val EXCEPTION_MOBIDZIENNIK_WEB_REQUEST = 906
|
const val EXCEPTION_MOBIDZIENNIK_WEB_REQUEST = 906
|
||||||
const val EXCEPTION_VULCAN_API_REQUEST = 907
|
const val EXCEPTION_VULCAN_API_REQUEST = 907
|
||||||
const val EXCEPTION_NOTIFY_AND_SYNC = 910
|
const val EXCEPTION_NOTIFY_AND_SYNC = 910
|
||||||
|
const val EXCEPTION_LIBRUS_MESSAGES_REQUEST = 911
|
||||||
|
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-24
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.librus.data
|
||||||
|
|
||||||
|
import im.wangchao.mhttp.Request
|
||||||
|
import im.wangchao.mhttp.Response
|
||||||
|
import im.wangchao.mhttp.callback.TextCallbackHandler
|
||||||
|
import okhttp3.Cookie
|
||||||
|
import org.jsoup.Jsoup
|
||||||
|
import org.jsoup.nodes.Document
|
||||||
|
import org.jsoup.parser.Parser
|
||||||
|
import org.redundent.kotlin.xml.xml
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.*
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
|
|
||||||
|
open class LibrusMessages(open val data: DataLibrus) {
|
||||||
|
companion object {
|
||||||
|
private const val TAG = "LibrusMessages"
|
||||||
|
}
|
||||||
|
|
||||||
|
val profileId
|
||||||
|
get() = data.profile?.id ?: -1
|
||||||
|
|
||||||
|
val profile
|
||||||
|
get() = data.profile
|
||||||
|
|
||||||
|
fun messagesGet(tag: String, endpoint: String, method: Int = POST,
|
||||||
|
parameters: Map<String, Any>? = null, onSuccess: (doc: Document) -> Unit) {
|
||||||
|
|
||||||
|
d(tag, "Request: Librus/Messages - $LIBRUS_MESSAGES_URL/$endpoint")
|
||||||
|
|
||||||
|
val callback = object : TextCallbackHandler() {
|
||||||
|
override fun onSuccess(text: String?, response: Response?) {
|
||||||
|
if (text.isNullOrEmpty()) {
|
||||||
|
data.error(ApiError(LibrusSynergia.TAG, ERROR_RESPONSE_EMPTY)
|
||||||
|
.withResponse(response))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Error handling
|
||||||
|
|
||||||
|
try {
|
||||||
|
val doc = Jsoup.parse(text, "", Parser.xmlParser())
|
||||||
|
onSuccess(doc)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
data.error(ApiError(tag, EXCEPTION_LIBRUS_MESSAGES_REQUEST)
|
||||||
|
.withResponse(response)
|
||||||
|
.withThrowable(e)
|
||||||
|
.withApiResponse(text))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFailure(response: Response?, throwable: Throwable?) {
|
||||||
|
data.error(ApiError(tag, ERROR_REQUEST_FAILURE)
|
||||||
|
.withResponse(response)
|
||||||
|
.withThrowable(throwable))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data.app.cookieJar.saveFromResponse(null, listOf(
|
||||||
|
Cookie.Builder()
|
||||||
|
.name("DZIENNIKSID")
|
||||||
|
.value(data.messagesSessionId!!)
|
||||||
|
.domain("wiadomosci.librus.pl")
|
||||||
|
.secure().httpOnly().build()
|
||||||
|
))
|
||||||
|
|
||||||
|
val requestXml = xml("service") {
|
||||||
|
"data" {
|
||||||
|
for ((key, value) in parameters.orEmpty()) {
|
||||||
|
key {
|
||||||
|
-value.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Request.builder()
|
||||||
|
.url("$LIBRUS_MESSAGES_URL/$endpoint")
|
||||||
|
.userAgent(SYNERGIA_USER_AGENT)
|
||||||
|
.setTextBody(requestXml.toString(), "application/xml")
|
||||||
|
.apply {
|
||||||
|
when (method) {
|
||||||
|
GET -> get()
|
||||||
|
POST -> post()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.callback(callback)
|
||||||
|
.build()
|
||||||
|
.enqueue()
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-25
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.librus.data.messages
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusMessages
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
|
|
||||||
|
class LibrusMessagesTemplate(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusMessages(data) {
|
||||||
|
companion object {
|
||||||
|
const val TAG = "LibrusMessages"
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
/* messagesGet(TAG, "") { doc ->
|
||||||
|
|
||||||
|
data.setSyncNext(ENDPOINT_LIBRUS_MESSAGES_, SYNC_ALWAYS)
|
||||||
|
onSuccess()
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user