IceCubesApp/Packages/Network/Sources/Network/Endpoint/Notifications.swift

66 lines
1.8 KiB
Swift
Raw Normal View History

2022-12-19 11:28:55 +00:00
import Foundation
import Models
2022-12-19 11:28:55 +00:00
public enum Notifications: Endpoint {
2023-02-06 19:08:29 +00:00
case notifications(minId: String?,
maxId: String?,
2023-02-06 19:08:29 +00:00
types: [String]?,
limit: Int)
case notificationsForAccount(accountId: String, maxId: String?)
2023-02-13 21:30:06 +00:00
case notification(id: String)
case policy
case putPolicy(policy: Models.NotificationsPolicy)
case requests
case acceptRequest(id: String)
case dismissRequest(id: String)
case clear
2023-01-17 10:36:01 +00:00
2022-12-19 11:28:55 +00:00
public func path() -> String {
switch self {
case .notifications, .notificationsForAccount:
2023-09-16 12:15:03 +00:00
"notifications"
2023-02-13 21:30:06 +00:00
case let .notification(id):
2023-09-16 12:15:03 +00:00
"notifications/\(id)"
case .policy, .putPolicy:
"notifications/policy"
case .requests:
"notifications/requests"
case let .acceptRequest(id):
"notifications/requests/\(id)/accept"
case let .dismissRequest(id):
"notifications/requests/\(id)/dismiss"
case .clear:
2023-09-16 12:15:03 +00:00
"notifications/clear"
2022-12-19 11:28:55 +00:00
}
}
public var jsonValue: (any Encodable)? {
switch self {
case let .putPolicy(policy):
return policy
default:
return nil
}
}
2023-01-17 10:36:01 +00:00
2022-12-19 11:28:55 +00:00
public func queryItems() -> [URLQueryItem]? {
switch self {
case let .notificationsForAccount(accountId, maxId):
var params = makePaginationParam(sinceId: nil, maxId: maxId, mindId: nil) ?? []
params.append(.init(name: "account_id", value: accountId))
return params
2023-02-06 19:08:29 +00:00
case let .notifications(mindId, maxId, types, limit):
var params = makePaginationParam(sinceId: nil, maxId: maxId, mindId: mindId) ?? []
params.append(.init(name: "limit", value: String(limit)))
if let types {
for type in types {
params.append(.init(name: "exclude_types[]", value: type))
}
2022-12-22 06:00:44 +00:00
}
return params
default:
return nil
2022-12-19 11:28:55 +00:00
}
}
}