A version string will not allow for comparisions when checking to update a source. Make the type an integer instead on both the model and coredata store. Signed-off-by: kingbri <bdashore3@gmail.com>
75 lines
1.7 KiB
Swift
75 lines
1.7 KiB
Swift
//
|
|
// SourceModels.swift
|
|
// Ferrite
|
|
//
|
|
// Created by Brian Dashore on 7/24/22.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public struct SourceListJson: Codable {
|
|
let name: String
|
|
let author: String
|
|
var sources: [SourceJson]
|
|
}
|
|
|
|
public struct SourceJson: Codable, Hashable {
|
|
let name: String
|
|
let version: Int16
|
|
let baseUrl: String
|
|
var author: String?
|
|
let rssParser: SourceRssParserJson?
|
|
let htmlParser: SourceHtmlParserJson?
|
|
}
|
|
|
|
public enum SourcePreferredParser: Int16, CaseIterable {
|
|
case none = 0
|
|
case scraping = 1
|
|
case rss = 2
|
|
case siteApi = 3
|
|
}
|
|
|
|
public struct SourceRssParserJson: Codable, Hashable {
|
|
let rssUrl: String?
|
|
let searchUrl: String
|
|
let items: String
|
|
let magnetHash: SouceComplexQueryJson?
|
|
let magnetLink: SouceComplexQueryJson?
|
|
let title: SouceComplexQueryJson?
|
|
let size: SouceComplexQueryJson?
|
|
let sl: SourceSLJson?
|
|
let trackers: [String]?
|
|
}
|
|
|
|
public struct SourceHtmlParserJson: Codable, Hashable {
|
|
let searchUrl: String
|
|
let rows: String
|
|
let magnet: SourceMagnetJson
|
|
let title: SouceComplexQueryJson?
|
|
let size: SouceComplexQueryJson?
|
|
let sl: SourceSLJson?
|
|
}
|
|
|
|
public struct SouceComplexQueryJson: Codable, Hashable {
|
|
let query: String
|
|
let lookupAttribute: String?
|
|
let attribute: String?
|
|
let regex: String?
|
|
}
|
|
|
|
public struct SourceMagnetJson: Codable, Hashable {
|
|
let query: String
|
|
let attribute: String
|
|
let regex: String?
|
|
let externalLinkQuery: String?
|
|
}
|
|
|
|
public struct SourceSLJson: Codable, Hashable {
|
|
let seeders: String?
|
|
let leechers: String?
|
|
let combined: String?
|
|
let attribute: String?
|
|
let lookupAttribute: String?
|
|
let seederRegex: String?
|
|
let leecherRegex: String?
|
|
}
|