//
// JSONRequestProcedure.swift
// MullvadVPN
//
// Created by pronebird on 14/05/2019.
// Copyright © 2019 Amagicom AB. All rights reserved.
//
import Foundation
import ProcedureKit
final class JSONRequestProcedure: GroupProcedure, InputProcedure, OutputProcedure {
typealias URLRequestBuilder = (Input) throws -> URLRequest
var input: Pending
var output: Pending> = .pending
init(dispatchQueue underlyingQueue: DispatchQueue? = nil, input: Input? = nil, requestBuilder: @escaping URLRequestBuilder) {
self.input = input.flatMap { .ready($0) } ?? .pending
let createRequest = TransformProcedure { try requestBuilder($0) }
let networkRequest = NetworkProcedure {
NetworkDataProcedure(session: URLSession.shared)
}.injectResult(from: createRequest)
let payloadParsing = DecodeJSONProcedure