mirror of
https://github.com/samsonjs/Osiris.git
synced 2026-03-25 08:55:48 +00:00
This introduces a cleaner, more intuitive API for making HTTP requests
with explicit methods for different content types and built-in Codable
support.
**New**
- Add explicit request methods: .postJSON(), .postForm(),
.postMultipart() for clear intent
- Add direct `Codable` body support with automatic JSON
encoding/decoding
- Add `HTTPRequestBody` enum for internal type safety and cleaner
implementation
- Add proper query parameter encoding for GET and DELETE requests
(previously ignored)
- Add URLSession extensions for streamlined async JSON decoding with
`HTTPError` for failure response status codes
- Add comprehensive test coverage
The new API replaces the parameter-based methods using dictionaries with
explicitly-typed ones. Instead of passing a content-type parameter, you
now use purpose-built methods like `postJSON` and `postForm`.
**Breaking changes**
- Minimum deployment targets raised to iOS 16.0 and macOS 13.0
- Direct access to `parameters` and `parts` properties deprecated on
`HTTPRequest`
- GET and DELETE requests now validate that they don't have request
bodies, and the new API prevents you from constructing them
48 lines
No EOL
849 B
Swift
48 lines
No EOL
849 B
Swift
//
|
|
// Created by Sami Samhuri on 2025-06-23.
|
|
// Copyright © 2025 Sami Samhuri. All rights reserved.
|
|
// Released under the terms of the MIT license.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
// MARK: - Rider Models
|
|
|
|
struct RiderProfile: Codable, Equatable {
|
|
let id: Int
|
|
let name: String
|
|
let email: String
|
|
let bike: String
|
|
}
|
|
|
|
struct CreateRiderRequest: Codable {
|
|
let name: String
|
|
let email: String
|
|
let bike: String
|
|
}
|
|
|
|
// MARK: - Artist Models
|
|
|
|
struct ArtistProfile: Codable {
|
|
let name: String
|
|
let email: String
|
|
let genre: String
|
|
}
|
|
|
|
struct UpdateProfileRequest: Codable {
|
|
let name: String
|
|
let email: String
|
|
let genre: String
|
|
}
|
|
|
|
// MARK: - Generic Test Models
|
|
|
|
struct TestResponse: Codable {
|
|
let message: String
|
|
let success: Bool
|
|
}
|
|
|
|
struct TestRequestData: Codable {
|
|
let name: String
|
|
let email: String
|
|
} |