Ferrite-backup/Ferrite/Models/SourceModels.swift
kingbri ecdd0199f6 Tree: Cleanup access levels
Public should not be used in an app since it declares public to
additional modules. However, an app is one module. Some structs/
classes need to be left public to conform to CoreData's generation.

Signed-off-by: kingbri <bdashore3@proton.me>
2024-06-16 15:00:35 -05:00

128 lines
3.2 KiB
Swift

//
// SourceModels.swift
// Ferrite
//
// Created by Brian Dashore on 7/24/22.
//
import Foundation
enum ApiCredentialResponseType: String, Codable, Hashable, Sendable {
case json
case text
}
struct SourceJson: Codable, Hashable, Sendable, PluginJson {
let name: String
let version: Int16
let minVersion: String?
let about: String?
let website: String?
let dynamicWebsite: Bool?
let fallbackUrls: [String]?
let trackers: [String]?
let api: SourceApiJson?
let jsonParser: SourceJsonParserJson?
let rssParser: SourceRssParserJson?
let htmlParser: SourceHtmlParserJson?
let author: String?
let listId: UUID?
let listName: String?
let tags: [PluginTagJson]?
}
extension SourceJson {
// Fetches all tags without optional requirement
func getTags() -> [PluginTagJson] {
tags ?? []
}
}
enum SourcePreferredParser: Int16, CaseIterable, Sendable {
// case none = 0
case scraping = 1
case rss = 2
case siteApi = 3
}
struct SourceApiJson: Codable, Hashable, Sendable {
let apiUrl: String?
let clientId: SourceApiCredentialJson?
let clientSecret: SourceApiCredentialJson?
}
struct SourceApiCredentialJson: Codable, Hashable, Sendable {
let query: String?
let value: String?
let dynamic: Bool?
let url: String?
let responseType: ApiCredentialResponseType?
let expiryLength: Double?
}
struct SourceJsonParserJson: Codable, Hashable, Sendable {
let searchUrl: String
let request: SourceRequestJson?
let results: String?
let subResults: String?
let title: SourceComplexQueryJson
let magnetHash: SourceComplexQueryJson?
let magnetLink: SourceComplexQueryJson?
let subName: SourceComplexQueryJson?
let size: SourceComplexQueryJson?
let sl: SourceSLJson?
}
struct SourceRssParserJson: Codable, Hashable, Sendable {
let rssUrl: String?
let searchUrl: String
let request: SourceRequestJson?
let items: String
let title: SourceComplexQueryJson
let magnetHash: SourceComplexQueryJson?
let magnetLink: SourceComplexQueryJson?
let subName: SourceComplexQueryJson?
let size: SourceComplexQueryJson?
let sl: SourceSLJson?
}
struct SourceHtmlParserJson: Codable, Hashable, Sendable {
let searchUrl: String?
let request: SourceRequestJson?
let rows: String
let title: SourceComplexQueryJson
let magnet: SourceMagnetJson
let subName: SourceComplexQueryJson?
let size: SourceComplexQueryJson?
let sl: SourceSLJson?
}
struct SourceComplexQueryJson: Codable, Hashable, Sendable {
let query: String
let discriminator: String?
let attribute: String?
let regex: String?
}
struct SourceMagnetJson: Codable, Hashable, Sendable {
let query: String
let attribute: String
let regex: String?
let externalLinkQuery: String?
}
struct SourceSLJson: Codable, Hashable, Sendable {
let seeders: String?
let leechers: String?
let combined: String?
let attribute: String?
let discriminator: String?
let seederRegex: String?
let leecherRegex: String?
}
struct SourceRequestJson: Codable, Hashable, Sendable {
let method: String?
let headers: [String: String]?
let body: String?
}