class HTTPClient {
static let shared = HTTPClient()
func postRequest(presentingView: UIViewController, image: UIImage, stateMachine: StateMachine, completion: @escaping (Bool) -> Void) {
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
let urlString = "https://api.kumulos.com/v1/data/Images"
let url = URL(string: urlString)
// General Settings
let request = NSMutableURLRequest(url: url!)
request.httpMethod = "POST"
request.cachePolicy = .reloadIgnoringLocalCacheData
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
// Authentication
let loginString = "62966fa0d309bdfcedf8780992ae04d9c443e68de31616f736b300510f2d2662:"
guard let loginData = loginString.data(using: String.Encoding.utf8) else { return }
let base64LoginString = loginData.base64EncodedString()
request.addValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
// Body
let im = ImageManager()
let imageString = im.convertImageToBase64(image: image)
let parameters = ["userID": 1, "avatarSmall": imageString] as [String : Any]
do {
request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: []) // pass dictionary to nsdata object and set it as request body
} catch let error {
print(error.localizedDescription)
}
let task = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) in
do {
let statusCode = (response as? HTTPURLResponse)?.statusCode
switch statusCode {
case 201: print("record was created successfully")
completion(true)
case 401: print("status code \(statusCode!)")
completion(false)
default: print("some other status code \(statusCode ?? 000)")
completion(false)
}
} catch {
print(error.localizedDescription)
}
})
task.resume()
}
}