Skip to content
This repository has been archived by the owner on May 8, 2021. It is now read-only.

Commit

Permalink
Merge branch 'release/0.0.4'
Browse files Browse the repository at this point in the history
  • Loading branch information
Baza207 committed Oct 18, 2020
2 parents ab01c2f + 34eef25 commit 9937954
Show file tree
Hide file tree
Showing 46 changed files with 2,418 additions and 576 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ This is currently a work in progress. There is a list of currently supported fea
- [x] Species
- [x] Distribution Zones
- [x] Operation support
- [ ] Combine support
- [x] Combine support
- [ ] Full error handling
- [x] Basic test suite
- [ ] Deep test suite
Expand Down
4 changes: 2 additions & 2 deletions Source/Manager/Authentication.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ public extension Trefle {
// MARK: - Token

@discardableResult
internal static func claimToken(_ completed: @escaping (Result<JWTState, Error>) -> Void) -> ClaimTokenOperation {
internal static func claimToken(_ completed: @escaping (Result<JWTState, Error>) -> Void) -> JWTStateOperation {

let operation = ClaimTokenOperation(completed)
let operation = JWTStateOperation(completed)
Trefle.operationQueue.addOperation(operation)
return operation
}
Expand Down
43 changes: 36 additions & 7 deletions Source/Manager/DistributionZonesManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
//

import Foundation
import Combine

public class DistributionZonesManager {
public class DistributionZonesManager: TrefleManagers {

internal static let apiURL = "\(Trefle.baseAPIURL)/\(Trefle.apiVersion)/distributions"

// MARK: - Distribution Zones URLs

internal static func listURL(page: Int? = nil) -> URL? {
public static func listURL(page: Int?) -> URL? {

guard var urlComponents = URLComponents(string: apiURL) else {
return nil
Expand All @@ -31,14 +32,20 @@ public class DistributionZonesManager {
return urlComponents.url
}

internal static func itemURL(identifier: String) -> URL? {
public static func itemURL(identifier: String) -> URL? {
URL(string: "\(apiURL)/\(identifier)")
}

}

// MARK: - Operations

public extension DistributionZonesManager {

// MARK: - Fetch Distribution Zones

@discardableResult
public static func fetch(page: Int? = nil, completed: @escaping (Result<ResponseList<Zone>, Error>) -> Void) -> ListOperation<Zone>? {
static func fetch(page: Int? = nil, completed: @escaping (Result<ResponseList<Zone>, Error>) -> Void) -> ListOperation<Zone>? {

guard let url = listURL(page: page) else {
completed(Result.failure(TrefleError.badURL))
Expand All @@ -53,7 +60,7 @@ public class DistributionZonesManager {
return listOperation
}

let claimTokenOperation = ClaimTokenOperation()
let claimTokenOperation = JWTStateOperation()
listOperation.addDependency(claimTokenOperation)

Trefle.operationQueue.addOperations([claimTokenOperation, listOperation], waitUntilFinished: false)
Expand All @@ -63,7 +70,7 @@ public class DistributionZonesManager {
// MARK: - Fetch Distribution Zone

@discardableResult
public static func fetchItem(identifier: String, completed: @escaping (Result<ResponseItem<Zone>, Error>) -> Void) -> ItemOperation<Zone>? {
static func fetchItem(identifier: String, completed: @escaping (Result<ResponseItem<Zone>, Error>) -> Void) -> ItemOperation<Zone>? {

guard let url = itemURL(identifier: identifier) else {
completed(Result.failure(TrefleError.badURL))
Expand All @@ -78,11 +85,33 @@ public class DistributionZonesManager {
return itemOperation
}

let claimTokenOperation = ClaimTokenOperation()
let claimTokenOperation = JWTStateOperation()
itemOperation.addDependency(claimTokenOperation)

Trefle.operationQueue.addOperations([claimTokenOperation, itemOperation], waitUntilFinished: false)
return itemOperation
}

}

// MARK: - Publishers

@available(iOS 13, *)
public extension DistributionZonesManager {

static func fetchPublisher<T: Decodable>(page: Int? = nil) -> AnyPublisher<ResponseList<T>, Error> {

Future<URL, Error> { (promise) in
if let url = listURL(page: page) {
promise(.success(url))
} else {
promise(.failure(TrefleError.badURL))
}
}
.flatMap { (url) -> AnyPublisher<ResponseList<T>, Error> in
fetchPublisher(url: url)
}
.eraseToAnyPublisher()
}

}
47 changes: 39 additions & 8 deletions Source/Manager/DivisionClassesManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
//

import Foundation
import Combine

public class DivisionClassesManager {
public class DivisionClassesManager: TrefleManagers {

internal static let apiURL = "\(Trefle.baseAPIURL)/\(Trefle.apiVersion)/division_classes"

// MARK: - Division Classes URLs

internal static func listURL(page: Int? = nil) -> URL? {
public static func listURL(page: Int?) -> URL? {

guard var urlComponents = URLComponents(string: apiURL) else {
return nil
Expand All @@ -31,14 +32,20 @@ public class DivisionClassesManager {
return urlComponents.url
}

internal static func itemURL(identifier: String) -> URL? {
public static func itemURL(identifier: String) -> URL? {
URL(string: "\(apiURL)/\(identifier)")
}

// MARK: - Fetch Divisions
}

// MARK: - Operations

public extension DivisionClassesManager {

// MARK: - Fetch Division Class Refs

@discardableResult
public static func fetch(page: Int? = nil, completed: @escaping (Result<ResponseList<DivisionClassRef>, Error>) -> Void) -> ListOperation<DivisionClassRef>? {
static func fetch(page: Int? = nil, completed: @escaping (Result<ResponseList<DivisionClassRef>, Error>) -> Void) -> ListOperation<DivisionClassRef>? {

guard let url = listURL(page: page) else {
completed(Result.failure(TrefleError.badURL))
Expand All @@ -53,7 +60,7 @@ public class DivisionClassesManager {
return listOperation
}

let claimTokenOperation = ClaimTokenOperation()
let claimTokenOperation = JWTStateOperation()
listOperation.addDependency(claimTokenOperation)

Trefle.operationQueue.addOperations([claimTokenOperation, listOperation], waitUntilFinished: false)
Expand All @@ -63,7 +70,7 @@ public class DivisionClassesManager {
// MARK: - Fetch Division Class

@discardableResult
public static func fetchItem(identifier: String, completed: @escaping (Result<ResponseItem<DivisionClass>, Error>) -> Void) -> ItemOperation<DivisionClass>? {
static func fetchItem(identifier: String, completed: @escaping (Result<ResponseItem<DivisionClass>, Error>) -> Void) -> ItemOperation<DivisionClass>? {

guard let url = itemURL(identifier: identifier) else {
completed(Result.failure(TrefleError.badURL))
Expand All @@ -78,11 +85,35 @@ public class DivisionClassesManager {
return itemOperation
}

let claimTokenOperation = ClaimTokenOperation()
let claimTokenOperation = JWTStateOperation()
itemOperation.addDependency(claimTokenOperation)

Trefle.operationQueue.addOperations([claimTokenOperation, itemOperation], waitUntilFinished: false)
return itemOperation
}

}

// MARK: - Publishers

@available(iOS 13, *)
public extension DivisionClassesManager {

// MARK: - Fetch Division Class Refs

static func fetchPublisher<T: Decodable>(page: Int? = nil) -> AnyPublisher<ResponseList<T>, Error> {

Future<URL, Error> { (promise) in
if let url = listURL(page: page) {
promise(.success(url))
} else {
promise(.failure(TrefleError.badURL))
}
}
.flatMap { (url) -> AnyPublisher<ResponseList<T>, Error> in
fetchPublisher(url: url)
}
.eraseToAnyPublisher()
}

}
47 changes: 39 additions & 8 deletions Source/Manager/DivisionOrdersManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
//

import Foundation
import Combine

public class DivisionOrdersManager {
public class DivisionOrdersManager: TrefleManagers {

internal static let apiURL = "\(Trefle.baseAPIURL)/\(Trefle.apiVersion)/division_orders"

// MARK: - Division Orders URLs

internal static func listURL(page: Int? = nil) -> URL? {
public static func listURL(page: Int?) -> URL? {

guard var urlComponents = URLComponents(string: apiURL) else {
return nil
Expand All @@ -31,14 +32,20 @@ public class DivisionOrdersManager {
return urlComponents.url
}

internal static func itemURL(identifier: String) -> URL? {
public static func itemURL(identifier: String) -> URL? {
URL(string: "\(apiURL)/\(identifier)")
}

// MARK: - Fetch Divisions
}

// MARK: - Operations

public extension DivisionOrdersManager {

// MARK: - Fetch Division Order Refs

@discardableResult
public static func fetch(page: Int? = nil, completed: @escaping (Result<ResponseList<DivisionOrderRef>, Error>) -> Void) -> ListOperation<DivisionOrderRef>? {
static func fetch(page: Int? = nil, completed: @escaping (Result<ResponseList<DivisionOrderRef>, Error>) -> Void) -> ListOperation<DivisionOrderRef>? {

guard let url = listURL(page: page) else {
completed(Result.failure(TrefleError.badURL))
Expand All @@ -53,7 +60,7 @@ public class DivisionOrdersManager {
return listOperation
}

let claimTokenOperation = ClaimTokenOperation()
let claimTokenOperation = JWTStateOperation()
listOperation.addDependency(claimTokenOperation)

Trefle.operationQueue.addOperations([claimTokenOperation, listOperation], waitUntilFinished: false)
Expand All @@ -63,7 +70,7 @@ public class DivisionOrdersManager {
// MARK: - Fetch Division Order

@discardableResult
public static func fetchItem(identifier: String, completed: @escaping (Result<ResponseItem<DivisionOrder>, Error>) -> Void) -> ItemOperation<DivisionOrder>? {
static func fetchItem(identifier: String, completed: @escaping (Result<ResponseItem<DivisionOrder>, Error>) -> Void) -> ItemOperation<DivisionOrder>? {

guard let url = itemURL(identifier: identifier) else {
completed(Result.failure(TrefleError.badURL))
Expand All @@ -78,11 +85,35 @@ public class DivisionOrdersManager {
return itemOperation
}

let claimTokenOperation = ClaimTokenOperation()
let claimTokenOperation = JWTStateOperation()
itemOperation.addDependency(claimTokenOperation)

Trefle.operationQueue.addOperations([claimTokenOperation, itemOperation], waitUntilFinished: false)
return itemOperation
}

}

// MARK: - Publishers

@available(iOS 13, *)
public extension DivisionOrdersManager {

// MARK: - Fetch Division Order Refs

static func fetchPublisher<T: Decodable>(page: Int? = nil) -> AnyPublisher<ResponseList<T>, Error> {

Future<URL, Error> { (promise) in
if let url = listURL(page: page) {
promise(.success(url))
} else {
promise(.failure(TrefleError.badURL))
}
}
.flatMap { (url) -> AnyPublisher<ResponseList<T>, Error> in
fetchPublisher(url: url)
}
.eraseToAnyPublisher()
}

}
Loading

0 comments on commit 9937954

Please sign in to comment.