forked from github/szkolny
[APIv2/Librus] Add marking all announcements as read using Synergia
This commit is contained in:
parent
843a8e4298
commit
3e99c111bd
@ -232,6 +232,7 @@ class ApiService : Service() {
|
|||||||
viewId = task.viewIds?.get(0)?.first)
|
viewId = task.viewIds?.get(0)?.first)
|
||||||
is MessageGetRequest -> edziennikInterface?.getMessage(task.messageId)
|
is MessageGetRequest -> edziennikInterface?.getMessage(task.messageId)
|
||||||
is FirstLoginRequest -> edziennikInterface?.firstLogin()
|
is FirstLoginRequest -> edziennikInterface?.firstLogin()
|
||||||
|
is AnnouncementsReadRequest -> edziennikInterface?.markAllAnnouncementsAsRead()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,6 +295,17 @@ class ApiService : Service() {
|
|||||||
sync()
|
sync()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe(sticky = true, threadMode = ThreadMode.ASYNC)
|
||||||
|
fun onAnnouncementsReadRequest(request: AnnouncementsReadRequest) {
|
||||||
|
EventBus.getDefault().removeStickyEvent(request)
|
||||||
|
Log.d(TAG, request.toString())
|
||||||
|
|
||||||
|
taskQueue += request.apply {
|
||||||
|
taskId = ++taskMaximumId
|
||||||
|
}
|
||||||
|
sync()
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe(sticky = true, threadMode = ThreadMode.ASYNC)
|
@Subscribe(sticky = true, threadMode = ThreadMode.ASYNC)
|
||||||
fun onFirstLoginRequest(request: FirstLoginRequest) {
|
fun onFirstLoginRequest(request: FirstLoginRequest) {
|
||||||
EventBus.getDefault().removeStickyEvent(request)
|
EventBus.getDefault().removeStickyEvent(request)
|
||||||
@ -347,4 +359,4 @@ class ApiService : Service() {
|
|||||||
override fun onBind(intent: Intent?): IBinder? {
|
override fun onBind(intent: Intent?): IBinder? {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.events.requests
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiTask
|
||||||
|
|
||||||
|
data class AnnouncementsReadRequest(override val profileId: Int) : ApiTask(profileId) {
|
||||||
|
override fun toString(): String {
|
||||||
|
return "AnnouncementsReadRequest(profileId=$profileId)"
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ package pl.szczodrzynski.edziennik.api.v2.interfaces
|
|||||||
interface EdziennikInterface {
|
interface EdziennikInterface {
|
||||||
fun sync(featureIds: List<Int>, viewId: Int? = null)
|
fun sync(featureIds: List<Int>, viewId: Int? = null)
|
||||||
fun getMessage(messageId: Int)
|
fun getMessage(messageId: Int)
|
||||||
|
fun markAllAnnouncementsAsRead()
|
||||||
fun firstLogin()
|
fun firstLogin()
|
||||||
fun cancel()
|
fun cancel()
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,11 @@ import pl.szczodrzynski.edziennik.api.v2.CODE_INTERNAL_LIBRUS_ACCOUNT_410
|
|||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikCallback
|
||||||
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
import pl.szczodrzynski.edziennik.api.v2.interfaces.EdziennikInterface
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusData
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusData
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.synergia.LibrusSynergiaMarkAllAnnouncementsAsRead
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.firstlogin.LibrusFirstLogin
|
import pl.szczodrzynski.edziennik.api.v2.librus.firstlogin.LibrusFirstLogin
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLogin
|
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLogin
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginApi
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.login.LibrusLoginSynergia
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librusLoginMethods
|
import pl.szczodrzynski.edziennik.api.v2.librusLoginMethods
|
||||||
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
import pl.szczodrzynski.edziennik.api.v2.models.ApiError
|
||||||
import pl.szczodrzynski.edziennik.api.v2.prepare
|
import pl.szczodrzynski.edziennik.api.v2.prepare
|
||||||
@ -64,6 +67,16 @@ class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, va
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun markAllAnnouncementsAsRead() {
|
||||||
|
LibrusLoginApi(data) {
|
||||||
|
LibrusLoginSynergia(data) {
|
||||||
|
LibrusSynergiaMarkAllAnnouncementsAsRead(data) {
|
||||||
|
completed()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun firstLogin() {
|
override fun firstLogin() {
|
||||||
LibrusFirstLogin(data) {
|
LibrusFirstLogin(data) {
|
||||||
completed()
|
completed()
|
||||||
@ -105,4 +118,4 @@ class Librus(val app: App, val profile: Profile?, val loginStore: LoginStore, va
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ open class LibrusSynergia(open val data: DataLibrus) {
|
|||||||
get() = data.profile
|
get() = data.profile
|
||||||
|
|
||||||
fun synergiaGet(tag: String, endpoint: String, method: Int = GET,
|
fun synergiaGet(tag: String, endpoint: String, method: Int = GET,
|
||||||
parameters: Map<String, Any> = emptyMap(), onSuccess: (doc: Document) -> Unit) {
|
parameters: Map<String, Any> = emptyMap(), onSuccess: (text: String) -> Unit) {
|
||||||
d(tag, "Request: Librus/Synergia - $LIBRUS_SYNERGIA_URL/$endpoint")
|
d(tag, "Request: Librus/Synergia - $LIBRUS_SYNERGIA_URL/$endpoint")
|
||||||
|
|
||||||
val callback = object : TextCallbackHandler() {
|
val callback = object : TextCallbackHandler() {
|
||||||
@ -41,8 +41,7 @@ open class LibrusSynergia(open val data: DataLibrus) {
|
|||||||
// TODO: Error handling
|
// TODO: Error handling
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val doc = Jsoup.parse(text)
|
onSuccess(text)
|
||||||
onSuccess(doc)
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
data.error(ApiError(tag, EXCEPTION_LIBRUS_SYNERGIA_REQUEST)
|
data.error(ApiError(tag, EXCEPTION_LIBRUS_SYNERGIA_REQUEST)
|
||||||
.withResponse(response)
|
.withResponse(response)
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
||||||
|
|
||||||
|
import org.jsoup.Jsoup
|
||||||
import pl.szczodrzynski.edziennik.HOUR
|
import pl.szczodrzynski.edziennik.HOUR
|
||||||
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK
|
import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.api.v2.POST
|
import pl.szczodrzynski.edziennik.api.v2.POST
|
||||||
@ -31,7 +32,8 @@ class LibrusSynergiaHomework(override val data: DataLibrus, val onSuccess: () ->
|
|||||||
"dataDo" to profile!!.getSemesterEnd(profile?.currentSemester ?: 2).stringY_m_d,
|
"dataDo" to profile!!.getSemesterEnd(profile?.currentSemester ?: 2).stringY_m_d,
|
||||||
"przedmiot" to -1
|
"przedmiot" to -1
|
||||||
|
|
||||||
)) { doc ->
|
)) { text ->
|
||||||
|
val doc = Jsoup.parse(text)
|
||||||
|
|
||||||
doc.select("table.myHomeworkTable > tbody").firstOrNull()?.also { homeworkTable ->
|
doc.select("table.myHomeworkTable > tbody").firstOrNull()?.also { homeworkTable ->
|
||||||
val homeworkElements = homeworkTable.children()
|
val homeworkElements = homeworkTable.children()
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
||||||
|
|
||||||
|
import org.jsoup.Jsoup
|
||||||
import pl.szczodrzynski.edziennik.MONTH
|
import pl.szczodrzynski.edziennik.MONTH
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_SYNERGIA_INFO
|
import pl.szczodrzynski.edziennik.api.v2.librus.ENDPOINT_LIBRUS_SYNERGIA_INFO
|
||||||
@ -15,7 +16,8 @@ class LibrusSynergiaInfo(override val data: DataLibrus, val onSuccess: () -> Uni
|
|||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
synergiaGet(TAG, "informacja") { doc ->
|
synergiaGet(TAG, "informacja") { text ->
|
||||||
|
val doc = Jsoup.parse(text)
|
||||||
|
|
||||||
doc.select("table.form tbody").firstOrNull()?.children()?.also { info ->
|
doc.select("table.form tbody").firstOrNull()?.children()?.also { info ->
|
||||||
val studentNumber = info[2].select("td").text().trim().toIntOrNull()
|
val studentNumber = info[2].select("td").text().trim().toIntOrNull()
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kacper Ziubryniewicz 2019-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
||||||
|
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
||||||
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusSynergia
|
||||||
|
|
||||||
|
class LibrusSynergiaMarkAllAnnouncementsAsRead(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusSynergia(data) {
|
||||||
|
companion object {
|
||||||
|
const val TAG = "LibrusSynergiaMarkAllAnnouncementsAsRead"
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
synergiaGet(TAG, "ogloszenia") {
|
||||||
|
onSuccess()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
package pl.szczodrzynski.edziennik.api.v2.librus.data.synergia
|
||||||
|
|
||||||
|
import org.jsoup.Jsoup
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
import pl.szczodrzynski.edziennik.api.v2.librus.DataLibrus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusSynergia
|
import pl.szczodrzynski.edziennik.api.v2.librus.data.LibrusSynergia
|
||||||
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.modules.api.SYNC_ALWAYS
|
||||||
@ -14,7 +15,8 @@ class LibrusSynergiaTemplate(override val data: DataLibrus, val onSuccess: () ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
/* synergiaGet(TAG, "") { doc ->
|
/* synergiaGet(TAG, "") { text ->
|
||||||
|
val doc = Jsoup.parse(text)
|
||||||
|
|
||||||
data.setSyncNext(ENDPOINT_LIBRUS_SYNERGIA_, SYNC_ALWAYS)
|
data.setSyncNext(ENDPOINT_LIBRUS_SYNERGIA_, SYNC_ALWAYS)
|
||||||
onSuccess()
|
onSuccess()
|
||||||
|
@ -64,6 +64,10 @@ class Mobidziennik(val app: App, val profile: Profile?, val loginStore: LoginSto
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun markAllAnnouncementsAsRead() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
override fun firstLogin() {
|
override fun firstLogin() {
|
||||||
MobidziennikFirstLogin(data) {
|
MobidziennikFirstLogin(data) {
|
||||||
completed()
|
completed()
|
||||||
@ -105,4 +109,4 @@ class Mobidziennik(val app: App, val profile: Profile?, val loginStore: LoginSto
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,10 @@ class Template(val app: App, val profile: Profile?, val loginStore: LoginStore,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun markAllAnnouncementsAsRead() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
override fun firstLogin() {
|
override fun firstLogin() {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
@ -102,4 +106,4 @@ class Template(val app: App, val profile: Profile?, val loginStore: LoginStore,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,10 @@ class Vulcan(val app: App, val profile: Profile?, val loginStore: LoginStore, va
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun markAllAnnouncementsAsRead() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
override fun firstLogin() {
|
override fun firstLogin() {
|
||||||
VulcanFirstLogin(data) {
|
VulcanFirstLogin(data) {
|
||||||
completed()
|
completed()
|
||||||
|
@ -9,10 +9,7 @@ import android.content.Context
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import pl.szczodrzynski.edziennik.api.v2.ApiService
|
import pl.szczodrzynski.edziennik.api.v2.ApiService
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.requests.ServiceCloseRequest
|
import pl.szczodrzynski.edziennik.api.v2.events.requests.*
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.requests.SyncProfileRequest
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.requests.SyncRequest
|
|
||||||
import pl.szczodrzynski.edziennik.api.v2.events.requests.TaskCancelRequest
|
|
||||||
|
|
||||||
class SzkolnyReceiver : BroadcastReceiver() {
|
class SzkolnyReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context?, intent: Intent?) {
|
override fun onReceive(context: Context?, intent: Intent?) {
|
||||||
@ -22,6 +19,7 @@ class SzkolnyReceiver : BroadcastReceiver() {
|
|||||||
"TaskCancelRequest" -> EventBus.getDefault().post(TaskCancelRequest(intent.extras?.getInt("taskId", -1) ?: return))
|
"TaskCancelRequest" -> EventBus.getDefault().post(TaskCancelRequest(intent.extras?.getInt("taskId", -1) ?: return))
|
||||||
"SyncRequest" -> EventBus.getDefault().post(SyncRequest())
|
"SyncRequest" -> EventBus.getDefault().post(SyncRequest())
|
||||||
"SyncProfileRequest" -> EventBus.getDefault().post(SyncProfileRequest(intent.extras?.getInt("profileId", -1) ?: return))
|
"SyncProfileRequest" -> EventBus.getDefault().post(SyncProfileRequest(intent.extras?.getInt("profileId", -1) ?: return))
|
||||||
|
"AnnouncementsReadRequest" -> EventBus.getDefault().post(AnnouncementsReadRequest(intent.extras?.getInt("profileId", -1) ?: return))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user