Tree: Format
Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
parent
c4edd5f687
commit
e14c684b5f
10 changed files with 57 additions and 62 deletions
|
|
@ -12,10 +12,10 @@ class Kodi {
|
||||||
|
|
||||||
// Used to add server to CoreData. Not part of API
|
// Used to add server to CoreData. Not part of API
|
||||||
func addServer(urlString: String,
|
func addServer(urlString: String,
|
||||||
friendlyName: String?,
|
friendlyName: String?,
|
||||||
username: String?,
|
username: String?,
|
||||||
password: String?,
|
password: String?,
|
||||||
existingServer: KodiServer? = nil) throws
|
existingServer: KodiServer? = nil) throws
|
||||||
{
|
{
|
||||||
let backgroundContext = PersistenceController.shared.backgroundContext
|
let backgroundContext = PersistenceController.shared.backgroundContext
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class TorBox: DebridSource, ObservableObject {
|
||||||
|
|
||||||
@Published var authProcessing: Bool = false
|
@Published var authProcessing: Bool = false
|
||||||
var isLoggedIn: Bool {
|
var isLoggedIn: Bool {
|
||||||
return getToken() != nil
|
getToken() != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var manualToken: String? {
|
var manualToken: String? {
|
||||||
|
|
@ -117,7 +117,7 @@ class TorBox: DebridSource, ObservableObject {
|
||||||
let rawResponse = try jsonDecoder.decode(TBResponse<InstantAvailabilityData>.self, from: data)
|
let rawResponse = try jsonDecoder.decode(TBResponse<InstantAvailabilityData>.self, from: data)
|
||||||
|
|
||||||
// If the data is a failure, return
|
// If the data is a failure, return
|
||||||
guard case .links(let iaObjects) = rawResponse.data else {
|
guard case let .links(iaObjects) = rawResponse.data else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -230,18 +230,14 @@ class TorBox: DebridSource, ObservableObject {
|
||||||
// MARK: - Cloud methods
|
// MARK: - Cloud methods
|
||||||
|
|
||||||
// Unused
|
// Unused
|
||||||
func getUserDownloads() async throws {
|
func getUserDownloads() async throws {}
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkUserDownloads(link: String) async throws -> String? {
|
func checkUserDownloads(link: String) async throws -> String? {
|
||||||
return nil
|
nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteDownload(downloadId: String) async throws {
|
func deleteDownload(downloadId: String) async throws {}
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func getUserTorrents() async throws {
|
func getUserTorrents() async throws {
|
||||||
let torrentList = try await myTorrentList()
|
let torrentList = try await myTorrentList()
|
||||||
cloudTorrents = torrentList.map { torrent in
|
cloudTorrents = torrentList.map { torrent in
|
||||||
|
|
|
||||||
|
|
@ -21,16 +21,16 @@ struct ActionJson: Codable, Hashable, PluginJson {
|
||||||
let tags: [PluginTagJson]?
|
let tags: [PluginTagJson]?
|
||||||
|
|
||||||
init(name: String,
|
init(name: String,
|
||||||
version: Int16,
|
version: Int16,
|
||||||
minVersion: String?,
|
minVersion: String?,
|
||||||
about: String?,
|
about: String?,
|
||||||
website: String?,
|
website: String?,
|
||||||
requires: [ActionRequirement],
|
requires: [ActionRequirement],
|
||||||
deeplink: [DeeplinkActionJson]?,
|
deeplink: [DeeplinkActionJson]?,
|
||||||
author: String?,
|
author: String?,
|
||||||
listId: UUID?,
|
listId: UUID?,
|
||||||
listName: String?,
|
listName: String?,
|
||||||
tags: [PluginTagJson]?)
|
tags: [PluginTagJson]?)
|
||||||
{
|
{
|
||||||
self.name = name
|
self.name = name
|
||||||
self.version = version
|
self.version = version
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ extension AllDebrid {
|
||||||
|
|
||||||
// MARK: - AddMagnetData
|
// MARK: - AddMagnetData
|
||||||
|
|
||||||
internal struct AddMagnetData: Codable {
|
struct AddMagnetData: Codable {
|
||||||
let magnet, hash, name, filenameOriginal: String
|
let magnet, hash, name, filenameOriginal: String
|
||||||
let size: Int
|
let size: Int
|
||||||
let ready: Bool
|
let ready: Bool
|
||||||
|
|
@ -103,7 +103,7 @@ extension AllDebrid {
|
||||||
// MARK: - MagnetStatusLink
|
// MARK: - MagnetStatusLink
|
||||||
|
|
||||||
// Abridged for required parameters
|
// Abridged for required parameters
|
||||||
internal struct MagnetStatusLink: Codable {
|
struct MagnetStatusLink: Codable {
|
||||||
let link: String
|
let link: String
|
||||||
let filename: String
|
let filename: String
|
||||||
let size: Int
|
let size: Int
|
||||||
|
|
@ -137,7 +137,7 @@ extension AllDebrid {
|
||||||
|
|
||||||
// MARK: - IAMagnetResponse
|
// MARK: - IAMagnetResponse
|
||||||
|
|
||||||
internal struct InstantAvailabilityMagnet: Codable {
|
struct InstantAvailabilityMagnet: Codable {
|
||||||
let magnet, hash: String
|
let magnet, hash: String
|
||||||
let instant: Bool
|
let instant: Bool
|
||||||
let files: [InstantAvailabilityFile]?
|
let files: [InstantAvailabilityFile]?
|
||||||
|
|
@ -145,7 +145,7 @@ extension AllDebrid {
|
||||||
|
|
||||||
// MARK: - IAFileResponse
|
// MARK: - IAFileResponse
|
||||||
|
|
||||||
internal struct InstantAvailabilityFile: Codable {
|
struct InstantAvailabilityFile: Codable {
|
||||||
let name: String
|
let name: String
|
||||||
|
|
||||||
enum CodingKeys: String, CodingKey {
|
enum CodingKeys: String, CodingKey {
|
||||||
|
|
|
||||||
|
|
@ -67,11 +67,11 @@ extension RealDebrid {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal struct InstantAvailabilityData: Codable, Sendable {
|
struct InstantAvailabilityData: Codable, Sendable {
|
||||||
var rd: [[String: InstantAvailabilityInfo]]
|
var rd: [[String: InstantAvailabilityInfo]]
|
||||||
}
|
}
|
||||||
|
|
||||||
internal struct InstantAvailabilityInfo: Codable, Sendable {
|
struct InstantAvailabilityInfo: Codable, Sendable {
|
||||||
var filename: String
|
var filename: String
|
||||||
var filesize: Int
|
var filesize: Int
|
||||||
}
|
}
|
||||||
|
|
@ -96,7 +96,7 @@ extension RealDebrid {
|
||||||
|
|
||||||
// MARK: - torrentInfo endpoint
|
// MARK: - torrentInfo endpoint
|
||||||
|
|
||||||
internal struct TorrentInfoResponse: Codable, Sendable {
|
struct TorrentInfoResponse: Codable, Sendable {
|
||||||
let id, filename, originalFilename, hash: String
|
let id, filename, originalFilename, hash: String
|
||||||
let bytes, originalBytes: Int
|
let bytes, originalBytes: Int
|
||||||
let host: String
|
let host: String
|
||||||
|
|
@ -117,7 +117,7 @@ extension RealDebrid {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal struct TorrentInfoFile: Codable, Sendable {
|
struct TorrentInfoFile: Codable, Sendable {
|
||||||
let id: Int
|
let id: Int
|
||||||
let path: String
|
let path: String
|
||||||
let bytes, selected: Int
|
let bytes, selected: Int
|
||||||
|
|
@ -136,7 +136,7 @@ extension RealDebrid {
|
||||||
|
|
||||||
// MARK: - unrestrictLink endpoint
|
// MARK: - unrestrictLink endpoint
|
||||||
|
|
||||||
internal struct UnrestrictLinkResponse: Codable, Sendable {
|
struct UnrestrictLinkResponse: Codable, Sendable {
|
||||||
let id, filename: String
|
let id, filename: String
|
||||||
let mimeType: String?
|
let mimeType: String?
|
||||||
let filesize: Int
|
let filesize: Int
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ extension TorBox {
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - InstantAvailability
|
// MARK: - InstantAvailability
|
||||||
|
|
||||||
enum InstantAvailabilityData: Codable {
|
enum InstantAvailabilityData: Codable {
|
||||||
case links([InstantAvailabilityDataObject])
|
case links([InstantAvailabilityDataObject])
|
||||||
case failure(InstantAvailabilityDataFailure)
|
case failure(InstantAvailabilityDataFailure)
|
||||||
|
|
@ -34,9 +35,9 @@ extension TorBox {
|
||||||
func encode(to encoder: Encoder) throws {
|
func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.singleValueContainer()
|
var container = encoder.singleValueContainer()
|
||||||
switch self {
|
switch self {
|
||||||
case .links(let array):
|
case let .links(array):
|
||||||
try container.encode(array)
|
try container.encode(array)
|
||||||
case .failure(let value):
|
case let .failure(value):
|
||||||
try container.encode(value)
|
try container.encode(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -91,8 +91,8 @@ struct Store<ObjectType> {
|
||||||
///
|
///
|
||||||
/// Use this init to schedule updates on a specific scheduler other than `DispatchQueue.main`.
|
/// Use this init to schedule updates on a specific scheduler other than `DispatchQueue.main`.
|
||||||
init<S: Scheduler>(wrappedValue: ObjectType,
|
init<S: Scheduler>(wrappedValue: ObjectType,
|
||||||
on scheduler: S,
|
on scheduler: S,
|
||||||
schedulerOptions: S.SchedulerOptions? = nil)
|
schedulerOptions: S.SchedulerOptions? = nil)
|
||||||
{
|
{
|
||||||
self.wrappedValue = wrappedValue
|
self.wrappedValue = wrappedValue
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -369,8 +369,6 @@ class DebridManager: ObservableObject {
|
||||||
await sendDebridError(error, prefix: "\(debridSource.id) download error", cancelString: "Download cancelled")
|
await sendDebridError(error, prefix: "\(debridSource.id) download error", cancelString: "Download cancelled")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func unrestrictDownload() async {
|
func unrestrictDownload() async {
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ class LoggingManager: ObservableObject {
|
||||||
// TODO: Maybe append to a constant logfile?
|
// TODO: Maybe append to a constant logfile?
|
||||||
|
|
||||||
func info(_ message: String,
|
func info(_ message: String,
|
||||||
description: String? = nil)
|
description: String? = nil)
|
||||||
{
|
{
|
||||||
let log = Log(
|
let log = Log(
|
||||||
level: .info,
|
level: .info,
|
||||||
|
|
@ -89,7 +89,7 @@ class LoggingManager: ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
func warn(_ message: String,
|
func warn(_ message: String,
|
||||||
description: String? = nil)
|
description: String? = nil)
|
||||||
{
|
{
|
||||||
let log = Log(
|
let log = Log(
|
||||||
level: .warn,
|
level: .warn,
|
||||||
|
|
@ -107,8 +107,8 @@ class LoggingManager: ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
func error(_ message: String,
|
func error(_ message: String,
|
||||||
description: String? = nil,
|
description: String? = nil,
|
||||||
showToast: Bool = true)
|
showToast: Bool = true)
|
||||||
{
|
{
|
||||||
let log = Log(
|
let log = Log(
|
||||||
level: .error,
|
level: .error,
|
||||||
|
|
|
||||||
|
|
@ -313,11 +313,11 @@ class ScrapingViewModel: ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func handleApiCredential(_ credential: SourceApiCredential,
|
private func handleApiCredential(_ credential: SourceApiCredential,
|
||||||
replacement: String,
|
replacement: String,
|
||||||
searchUrl: String,
|
searchUrl: String,
|
||||||
apiUrl: String?,
|
apiUrl: String?,
|
||||||
website: String,
|
website: String,
|
||||||
sourceName: String) async -> String?
|
sourceName: String) async -> String?
|
||||||
{
|
{
|
||||||
// Is the credential expired
|
// Is the credential expired
|
||||||
var isExpired = false
|
var isExpired = false
|
||||||
|
|
@ -354,8 +354,8 @@ class ScrapingViewModel: ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func fetchApiCredential(urlString: String,
|
private func fetchApiCredential(urlString: String,
|
||||||
credential: SourceApiCredential,
|
credential: SourceApiCredential,
|
||||||
sourceName: String) async -> String?
|
sourceName: String) async -> String?
|
||||||
{
|
{
|
||||||
guard let url = URL(string: urlString) else {
|
guard let url = URL(string: urlString) else {
|
||||||
await sendSourceError("\(sourceName): Token URL \(urlString) is invalid.")
|
await sendSourceError("\(sourceName): Token URL \(urlString) is invalid.")
|
||||||
|
|
@ -522,9 +522,9 @@ class ScrapingViewModel: ObservableObject {
|
||||||
|
|
||||||
// TODO: Add regex parsing for API
|
// TODO: Add regex parsing for API
|
||||||
private func parseJsonResult(_ result: JSON,
|
private func parseJsonResult(_ result: JSON,
|
||||||
jsonParser: SourceJsonParser,
|
jsonParser: SourceJsonParser,
|
||||||
source: Source,
|
source: Source,
|
||||||
existingSearchResult: SearchResult? = nil) -> SearchResult?
|
existingSearchResult: SearchResult? = nil) -> SearchResult?
|
||||||
{
|
{
|
||||||
// Enforce these parsers
|
// Enforce these parsers
|
||||||
guard let titleParser = jsonParser.title else {
|
guard let titleParser = jsonParser.title else {
|
||||||
|
|
@ -751,10 +751,10 @@ class ScrapingViewModel: ObservableObject {
|
||||||
|
|
||||||
// Complex query parsing for RSS scraping
|
// Complex query parsing for RSS scraping
|
||||||
private func runRssComplexQuery(item: Element,
|
private func runRssComplexQuery(item: Element,
|
||||||
query: String,
|
query: String,
|
||||||
attribute: String,
|
attribute: String,
|
||||||
discriminator: String?,
|
discriminator: String?,
|
||||||
regexString: String?) throws -> String?
|
regexString: String?) throws -> String?
|
||||||
{
|
{
|
||||||
var parsedValue: String?
|
var parsedValue: String?
|
||||||
|
|
||||||
|
|
@ -956,9 +956,9 @@ class ScrapingViewModel: ObservableObject {
|
||||||
|
|
||||||
// Complex query parsing for HTML scraping
|
// Complex query parsing for HTML scraping
|
||||||
private func runHtmlComplexQuery(row: Element,
|
private func runHtmlComplexQuery(row: Element,
|
||||||
query: String,
|
query: String,
|
||||||
attribute: String,
|
attribute: String,
|
||||||
regexString: String?) throws -> String?
|
regexString: String?) throws -> String?
|
||||||
{
|
{
|
||||||
var parsedValue: String?
|
var parsedValue: String?
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue