mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-10 22:34:33 -05:00
* Non-Extension Index changes for 1.6 * Changelog * Minor fixes * Implement extension store * Test build fix * Docs * Simplify fetching manga and chapters * Use EMPTY JsonObject * Update docs/Configuring-Suwayomi‐Server.md Co-authored-by: Constantin Piber <59023762+cpiber@users.noreply.github.com> * Improve Fetch Extension Store * Fixes * Simplify deprecated isNsfw in SourceQuery * Simplify ContentRating in Source.kt * Simplify isNsfw in SourceType * No magic numbers for ContentRating, improves safety for future versions of extension api * Fix SearchTest * Lint * Lint * Optimize imports and fix unchecked cast warning * Proper extension store queries * Optimize import fixes * Add ContentRatingFilter * Improve extension store sync * fix: re-sync (#2121) * Lint * Add ExtenionStores to the fetchExtensions result since its possible for the stores to change. * Use a single version of ContentRating * Exclude ServerConfig.extensionStores from GraphQL * Use syncDbToPrefs in ExtensionStoreMutation * Optimize Imports * Update server/server-config/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt Co-authored-by: Constantin Piber <59023762+cpiber@users.noreply.github.com> * Remove replaceWith and add specific description for GQL APIs * Include OkHttp ZSTD * Update to latest Mihon extension lib * Fix latest Mihon Extension Lib * Lint * Optimize imports * Lint * Review fixes * Add a index to extesnion table store url * Lint --------- Co-authored-by: Constantin Piber <59023762+cpiber@users.noreply.github.com>
112 lines
3.4 KiB
Kotlin
112 lines
3.4 KiB
Kotlin
package eu.kanade.tachiyomi.source
|
|
|
|
import eu.kanade.tachiyomi.source.model.FilterList
|
|
import eu.kanade.tachiyomi.source.model.MangasPage
|
|
import eu.kanade.tachiyomi.source.model.Page
|
|
import eu.kanade.tachiyomi.source.model.SChapter
|
|
import eu.kanade.tachiyomi.source.model.SManga
|
|
import eu.kanade.tachiyomi.source.model.SMangaUpdate
|
|
import rx.Observable
|
|
|
|
/**
|
|
* A basic interface for creating a source. It could be an online source, a local source, etc.
|
|
*/
|
|
interface Source {
|
|
/**
|
|
* ID for the source. Must be unique.
|
|
*/
|
|
val id: Long
|
|
|
|
/**
|
|
* Name of the source.
|
|
*/
|
|
val name: String
|
|
|
|
val lang: String
|
|
get() = ""
|
|
|
|
/**
|
|
* Whether the source has support for latest updates.
|
|
*/
|
|
val supportsLatest: Boolean
|
|
|
|
/**
|
|
* Returns the list of filters for the source.
|
|
*/
|
|
fun getFilterList(): FilterList = FilterList()
|
|
|
|
/**
|
|
* Get a page with a list of manga.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param page the page number to retrieve.
|
|
*/
|
|
suspend fun getPopularManga(page: Int): MangasPage
|
|
|
|
/**
|
|
* Get a page with a list of latest manga updates.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param page the page number to retrieve.
|
|
*/
|
|
suspend fun getLatestUpdates(page: Int): MangasPage
|
|
|
|
/**
|
|
* Get a page with a list of manga.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param page the page number to retrieve.
|
|
* @param query the search query.
|
|
* @param filters the list of filters to apply.
|
|
*/
|
|
suspend fun getSearchManga(
|
|
page: Int,
|
|
query: String,
|
|
filters: FilterList,
|
|
): MangasPage
|
|
|
|
/**
|
|
* Fetches updated information for a manga.
|
|
*
|
|
* Depending on the provided flags or source availability, this may include
|
|
* updated manga metadata, available chapters, or both.
|
|
*
|
|
* If a value is not requested, the existing provided value can be returned as-is.
|
|
* The host app may apply any returned updates regardless of the flags,
|
|
* so care should be taken to only return accurate and intentional changes.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param manga The manga to fetch updates for.
|
|
* @param chapters Existing chapters of the manga
|
|
* @param fetchDetails Whether to fetch updated manga details.
|
|
* @param fetchChapters Whether to fetch available chapters.
|
|
*/
|
|
suspend fun getMangaUpdate(
|
|
manga: SManga,
|
|
chapters: List<SChapter>,
|
|
fetchDetails: Boolean,
|
|
fetchChapters: Boolean,
|
|
): SMangaUpdate
|
|
|
|
/**
|
|
* Get the list of pages a chapter has. Pages should be returned
|
|
* in the expected order; the index is ignored.
|
|
*
|
|
* @since tachiyomix 1.6
|
|
* @param chapter the chapter.
|
|
* @return the pages for the chapter.
|
|
*/
|
|
suspend fun getPageList(chapter: SChapter): List<Page>
|
|
|
|
@Deprecated("Use the combined suspend API instead", ReplaceWith("getMangaUpdate"))
|
|
fun fetchMangaDetails(manga: SManga): Observable<SManga> = throw UnsupportedOperationException()
|
|
|
|
@Deprecated("Use the combined suspend API instead", ReplaceWith("getMangaUpdate"))
|
|
fun fetchChapterList(manga: SManga): Observable<List<SChapter>> = throw UnsupportedOperationException()
|
|
|
|
@Deprecated("Use the suspend API instead", ReplaceWith("getPageList"))
|
|
fun fetchPageList(chapter: SChapter): Observable<List<Page>> = throw UnsupportedOperationException()
|
|
}
|
|
|
|
// fun Source.icon(): Drawable? = Injekt.get<ExtensionManager>().getAppIconForSource(this)
|