Creating playlists

This commit is contained in:
Arkadiusz Fal
2021-07-08 17:14:54 +02:00
parent e93b4911ca
commit 88a733da34
10 changed files with 175 additions and 43 deletions

View File

@@ -54,6 +54,11 @@ final class InvidiousAPI: Service {
content.json.arrayValue.map(Playlist.init)
}
configureTransformer("/auth/playlists", requestMethods: [.post]) { (content: Entity<Data>) -> Playlist in
// hacky, to verify if possible to get it in easier way
Playlist(JSON(parseJSON: String(data: content.content, encoding: .utf8)!))
}
configureTransformer("/auth/feed", requestMethods: [.get]) { (content: Entity<JSON>) -> [Video] in
if let feedVideos = content.json.dictionaryValue["videos"] {
return feedVideos.arrayValue.map { Video($0) }
@@ -108,12 +113,12 @@ final class InvidiousAPI: Service {
.withParam("q", searchQuery(query.query))
.withParam("sort_by", query.sortBy.parameter)
if let date = query.date {
resource = resource.withParam("date", date.rawValue)
if let date = query.date?.rawValue {
resource = resource.withParam("date", date)
}
if let duration = query.duration {
resource = resource.withParam("duration", duration.rawValue)
if let duration = query.duration?.rawValue {
resource = resource.withParam("duration", duration)
}
return resource
@@ -135,6 +140,6 @@ final class InvidiousAPI: Service {
searchQuery = id
}
return searchQuery.addingPercentEncoding(withAllowedCharacters: .alphanumerics)!
return searchQuery
}
}

View File

@@ -0,0 +1,13 @@
import Foundation
enum PlaylistVisibility: String, CaseIterable, Identifiable {
case `public`, unlisted, `private`
var id: String {
rawValue
}
var name: String {
rawValue.capitalized
}
}

View File

@@ -2,8 +2,8 @@ import Foundation
final class SearchQuery: ObservableObject {
@Published var query: String
@Published var sortBy = SearchSortOrder.relevance
@Published var date: SearchDate? = SearchDate.month
@Published var sortBy: SearchSortOrder = .relevance
@Published var date: SearchDate? = .month
@Published var duration: SearchDuration?
@Published var page = 1