@ -22,13 +22,15 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
private val jsonMime = " application/json; charset=utf-8 " . toMediaTypeOrNull ( )
private val authClient = client . newBuilder ( ) . addInterceptor ( interceptor ) . build ( )
fun addLibManga ( track : Track ) : Observable < Track > {
val query = """
mutation AddManga ( $ { '$' } mangaId : Int , $ { '$' } progress : Int , $ { '$' } status : MediaListStatus ) {
SaveMediaListEntry ( mediaId : $ { '$' } mangaId , progress : $ { '$' } progress , status : $ { '$' } status )
{ id status } }
"""
| mutation AddManga ( $ { '$' } mangaId : Int , $ { '$' } progress : Int , $ { '$' } status : MediaListStatus ) {
| SaveMediaListEntry ( mediaId : $ { '$' } mangaId , progress : $ { '$' } progress , status : $ { '$' } status ) {
| id
| status
| }
| }
| """ .trimMargin()
val variables = jsonObject (
" mangaId " to track . media _id ,
" progress " to track . last _chapter _read ,
@ -59,14 +61,14 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
fun updateLibManga ( track : Track ) : Observable < Track > {
val query = """
mutation UpdateManga ( $ { '$' } listId : Int , $ { '$' } progress : Int , $ { '$' } status : MediaListStatus , $ { '$' } score : Int ) {
SaveMediaListEntry ( id : $ { '$' } listId , progress : $ { '$' } progress , status : $ { '$' } status , scoreRaw : $ { '$' } score ) {
id
status
progress
}
}
"""
| mutation UpdateManga ( $ { '$' } listId : Int , $ { '$' } progress : Int , $ { '$' } status : MediaListStatus , $ { '$' } score : Int ) {
| SaveMediaListEntry ( id : $ { '$' } listId , progress : $ { '$' } progress , status : $ { '$' } status , scoreRaw : $ { '$' } score ) {
| id
| status
| progress
| }
| }
| """ .trimMargin()
val variables = jsonObject (
" listId " to track . library _id ,
" progress " to track . last _chapter _read ,
@ -91,29 +93,29 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
fun search ( search : String ) : Observable < List < TrackSearch > > {
val query = """
query Search ( $ { '$' } query : String ) {
Page ( perPage : 50 ) {
media ( search : $ { '$' } query , type : MANGA , format _not _in : [ NOVEL ] ) {
id
title {
romaji
}
coverImage {
large
}
type
status
chapters
description
startDate {
year
month
day
}
}
}
}
"""
| query Search ( $ { '$' } query : String ) {
| Page ( perPage : 50 ) {
| media ( search : $ { '$' } query , type : MANGA , format _not _in : [ NOVEL ] ) {
| id
| title {
| romaji
| }
| coverImage {
| large
| }
| type
| status
| chapters
| description
| startDate {
| year
| month
| day
| }
| }
| }
| }
| """ .trimMargin()
val variables = jsonObject (
" query " to search
)
@ -143,37 +145,37 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
}
fun findLibManga ( track : Track , userid : Int ) : Observable < Track ? > {
fun findLibManga ( track : Track , userid : Int ) : Observable < Track ? > {
val query = """
query ( $ { '$' } id : Int ! , $ { '$' } manga _id : Int ! ) {
Page {
mediaList ( userId : $ { '$' } id , type : MANGA , mediaId : $ { '$' } manga _id ) {
id
status
scoreRaw : score ( format : POINT _100 )
progress
media {
id
title {
romaji
}
coverImage {
large
}
type
status
chapters
description
startDate {
year
month
day
}
}
}
}
}
"""
| query ( $ { '$' } id : Int ! , $ { '$' } manga _id : Int ! ) {
| Page {
| mediaList ( userId : $ { '$' } id , type : MANGA , mediaId : $ { '$' } manga _id ) {
| id
| status
| scoreRaw : score ( format : POINT _100 )
| progress
| media {
| id
| title {
| romaji
| }
| coverImage {
| large
| }
| type
| status
| chapters
| description
| startDate {
| year
| month
| day
| }
| }
| }
| }
| }
| """ .trimMargin()
val variables = jsonObject (
" id " to userid ,
" manga_id " to track . media _id
@ -215,16 +217,15 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
fun getCurrentUser ( ) : Observable < Pair < Int , String > > {
val query = """
query User
{
Viewer {
id
mediaListOptions {
scoreFormat
}
}
}
"""
| query User {
| Viewer {
| id
| mediaListOptions {
| scoreFormat
| }
| }
| }
| """ .trimMargin()
val payload = jsonObject (
" query " to query
)
@ -247,7 +248,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
}
}
fun jsonToALManga ( struct : JsonObject ) : ALManga {
private fun jsonToALManga ( struct : JsonObject ) : ALManga {
val date = try {
val date = Calendar . getInstance ( )
date . set ( struct [ " startDate " ] [ " year " ] . nullInt ?: 0 , ( struct [ " startDate " ] [ " month " ] . nullInt ?: 0 ) - 1 ,
@ -262,11 +263,10 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
date , struct [ " chapters " ] . nullInt ?: 0 )
}
fun jsonToALUserManga ( struct : JsonObject ) : ALUserManga {
return ALUserManga ( struct [ " id " ] . asLong , struct [ " status " ] . asString , struct [ " scoreRaw " ] . asInt , struct [ " progress " ] . asInt , jsonToALManga ( struct [ " media " ] . obj ) )
private fun jsonToALUserManga ( struct : JsonObject ) : ALUserManga {
return ALUserManga ( struct [ " id " ] . asLong , struct [ " status " ] . asString , struct [ " scoreRaw " ] . asInt , struct [ " progress " ] . asInt , jsonToALManga ( struct [ " media " ] . obj ) )
}
companion object {
private const val clientId = " 385 "
private const val clientUrl = " tachiyomi://anilist-auth "