Add api's notes

This commit is contained in:
Mikołaj Pich 2019-06-14 21:12:44 +02:00
parent 97cecaa003
commit 1f3dc8012d
No known key found for this signature in database
GPG key ID: F62B26E36D4C4BAA
5 changed files with 76 additions and 7 deletions

View file

@ -2,7 +2,6 @@ package io.github.wulkanowy.sdk
import io.github.wulkanowy.api.Api import io.github.wulkanowy.api.Api
import io.github.wulkanowy.api.attendance.Absent import io.github.wulkanowy.api.attendance.Absent
import io.github.wulkanowy.sdk.pojo.Attendance
import io.github.wulkanowy.api.messages.Folder import io.github.wulkanowy.api.messages.Folder
import io.github.wulkanowy.api.messages.Recipient import io.github.wulkanowy.api.messages.Recipient
import io.github.wulkanowy.api.resettableLazy import io.github.wulkanowy.api.resettableLazy
@ -13,9 +12,8 @@ import io.github.wulkanowy.sdk.exams.mapExams
import io.github.wulkanowy.sdk.grades.mapGrades import io.github.wulkanowy.sdk.grades.mapGrades
import io.github.wulkanowy.sdk.grades.mapGradesSummary import io.github.wulkanowy.sdk.grades.mapGradesSummary
import io.github.wulkanowy.sdk.interceptor.SignInterceptor import io.github.wulkanowy.sdk.interceptor.SignInterceptor
import io.github.wulkanowy.sdk.pojo.Exam import io.github.wulkanowy.sdk.notes.mapNotes
import io.github.wulkanowy.sdk.pojo.Grade import io.github.wulkanowy.sdk.pojo.*
import io.github.wulkanowy.sdk.pojo.Student
import io.github.wulkanowy.sdk.register.mapStudents import io.github.wulkanowy.sdk.register.mapStudents
import io.github.wulkanowy.sdk.repository.MobileRepository import io.github.wulkanowy.sdk.repository.MobileRepository
import io.github.wulkanowy.sdk.repository.RegisterRepository import io.github.wulkanowy.sdk.repository.RegisterRepository
@ -294,7 +292,7 @@ class Sdk {
} }
} }
fun getGradesSummary(semesterId: Int): Single<List<io.github.wulkanowy.sdk.pojo.GradeSummary>> { fun getGradesSummary(semesterId: Int): Single<List<GradeSummary>> {
return when (mode) { return when (mode) {
Mode.SCRAPPER -> scrapper.getGradesSummary(semesterId).map { it.mapGradesSummary() } Mode.SCRAPPER -> scrapper.getGradesSummary(semesterId).map { it.mapGradesSummary() }
Mode.HYBRID, Mode.API -> getDictionaries().flatMap { dict -> Mode.HYBRID, Mode.API -> getDictionaries().flatMap { dict ->
@ -307,7 +305,14 @@ class Sdk {
fun getHomework(start: LocalDate, end: LocalDate? = null) = scrapper.getHomework(start, end) fun getHomework(start: LocalDate, end: LocalDate? = null) = scrapper.getHomework(start, end)
fun getNotes() = scrapper.getNotes() fun getNotes(semesterId: Int): Single<List<Note>> {
return when (mode) {
Mode.SCRAPPER -> scrapper.getNotes().map { it.mapNotes() }
Mode.HYBRID, Mode.API -> getDictionaries().flatMap { dict ->
mobile.getNotes(semesterId, studentId).map { it.mapNotes(dict) }
}
}
}
fun getRegisteredDevices() = scrapper.getRegisteredDevices() fun getRegisteredDevices() = scrapper.getRegisteredDevices()

View file

@ -29,7 +29,7 @@ data class Note(
val employeeSurname: String, val employeeSurname: String,
@SerializedName("DataWpisu") @SerializedName("DataWpisu")
val entryDate: String, val entryDate: Long,
@SerializedName("DataWpisuTekst") @SerializedName("DataWpisuTekst")
val entryDateText: String, val entryDateText: String,

View file

@ -0,0 +1,32 @@
package io.github.wulkanowy.sdk.notes
import io.github.wulkanowy.api.toLocalDate
import io.github.wulkanowy.sdk.dictionaries.Dictionaries
import io.github.wulkanowy.sdk.pojo.Note
import io.github.wulkanowy.sdk.toLocalDate
import io.github.wulkanowy.sdk.notes.Note as ApiNote
import io.github.wulkanowy.api.notes.Note as ScrapperNote
fun List<ApiNote>.mapNotes(dictionaries: Dictionaries): List<Note> {
return map {
Note(
date = it.entryDate.toLocalDate(),
content = it.content,
category = dictionaries.noteCategories.singleOrNull { cat -> cat.id == it.noteCategoryId }?.name.orEmpty(),
teacherSymbol = dictionaries.teachers.singleOrNull { teacher -> teacher.id == it.employeeId }?.code.orEmpty(),
teacher = "${it.employeeName} ${it.employeeSurname}"
)
}
}
fun List<ScrapperNote>.mapNotes(): List<Note> {
return map {
Note(
date = it.date.toLocalDate(),
teacher = it.teacher,
teacherSymbol = it.teacherSymbol,
category = it.category,
content = it.content
)
}
}

View file

@ -0,0 +1,11 @@
package io.github.wulkanowy.sdk.pojo
import org.threeten.bp.LocalDate
data class Note(
var date: LocalDate,
var teacher: String,
var teacherSymbol: String,
var category: String,
var content: String
)

View file

@ -148,4 +148,25 @@ class SdkRemoteTest {
val attendance = sdk.getAttendance(of(2018, 1, 1), of(2018, 1, 2), 1).blockingGet() val attendance = sdk.getAttendance(of(2018, 1, 1), of(2018, 1, 2), 1).blockingGet()
assertEquals(24, attendance.size) assertEquals(24, attendance.size)
} }
@Test
fun getNotes_api() {
val sdk = Sdk().apply {
apiKey = API_KEY
certKey = CERT_KEY
certificate = CERTIFICATE
apiBaseUrl = "https://api.fakelog.cf/Default"
mode = Sdk.Mode.API
symbol = "Default"
schoolSymbol = "123456"
studentId = 15
classId = 14
}
val notes = sdk.getNotes(1).blockingGet()
assertEquals(5, notes.size)
}
} }