mastodon-ios/Mastodon/Service/APIService/APIService+Trend.swift

70 lines
1.9 KiB
Swift
Raw Normal View History

//
// APIService+Trend.swift
// Mastodon
//
// Created by MainasuK on 2022-1-18.
//
import Foundation
import MastodonSDK
extension APIService {
func trendHashtags(
domain: String,
query: Mastodon.API.Trends.HashtagQuery?
) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Tag]> {
let response = try await Mastodon.API.Trends.hashtags(
session: session,
domain: domain,
query: query
).singleOutput()
return response
}
func trendStatuses(
domain: String,
query: Mastodon.API.Trends.StatusQuery
) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Status]> {
let response = try await Mastodon.API.Trends.statuses(
session: session,
domain: domain,
query: query
).singleOutput()
let managedObjectContext = backgroundManagedObjectContext
try await managedObjectContext.performChanges {
for entity in response.value {
_ = Persistence.Status.createOrMerge(
in: managedObjectContext,
context: Persistence.Status.PersistContext(
domain: domain,
entity: entity,
me: nil,
statusCache: nil,
userCache: nil,
networkDate: response.networkDate
)
)
} // end for in
}
return response
}
func trendLinks(
domain: String,
query: Mastodon.API.Trends.LinkQuery
) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Link]> {
let response = try await Mastodon.API.Trends.links(
session: session,
domain: domain,
query: query
).singleOutput()
return response
}
}