45 lines
800 B
Swift
45 lines
800 B
Swift
//
|
|
// Query.swift
|
|
//
|
|
//
|
|
// Created by MainasuK Cirno on 2021/1/27.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
enum RequestMethod: String {
|
|
case GET, POST, PATCH, PUT, DELETE
|
|
}
|
|
|
|
protocol RequestQuery {
|
|
var body: Data? { get }
|
|
var method: RequestMethod { get }
|
|
}
|
|
|
|
extension RequestQuery where method: Encodable {
|
|
var body: Data? {
|
|
return try? Mastodon.API.encoder.encode(self)
|
|
}
|
|
}
|
|
|
|
protocol GetQuery: RequestQuery {
|
|
var queryItems: [URLQueryItem]? { get }
|
|
}
|
|
|
|
extension GetQuery {
|
|
var method: RequestMethod { return .GET }
|
|
var body: Data? { return nil }
|
|
}
|
|
|
|
protocol PostQuery: RequestQuery { }
|
|
|
|
extension PostQuery {
|
|
var method: RequestMethod { return .POST }
|
|
}
|
|
|
|
protocol PatchQuery: RequestQuery { }
|
|
|
|
extension PatchQuery {
|
|
var method: RequestMethod { return .PATCH }
|
|
}
|