From 01ce93653d86f2a47eda58d2e74c3926981b22cf Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Mon, 24 Jul 2023 10:45:15 +0200 Subject: wip --- Xmission/Code/Home/Actions/AddTorrent.swift | 8 ++++ Xmission/Code/Home/Actions/DeleteTorrent.swift | 8 ++++ Xmission/Code/Home/Actions/LoginAction.swift | 52 ++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 Xmission/Code/Home/Actions/AddTorrent.swift create mode 100644 Xmission/Code/Home/Actions/DeleteTorrent.swift create mode 100644 Xmission/Code/Home/Actions/LoginAction.swift (limited to 'Xmission/Code/Home/Actions') diff --git a/Xmission/Code/Home/Actions/AddTorrent.swift b/Xmission/Code/Home/Actions/AddTorrent.swift new file mode 100644 index 0000000..70dae56 --- /dev/null +++ b/Xmission/Code/Home/Actions/AddTorrent.swift @@ -0,0 +1,8 @@ +// +// AddTorrent.swift +// Xmission +// +// Created by Christian Segundo Guevara on 22/7/23. +// + +import Foundation diff --git a/Xmission/Code/Home/Actions/DeleteTorrent.swift b/Xmission/Code/Home/Actions/DeleteTorrent.swift new file mode 100644 index 0000000..5fcf494 --- /dev/null +++ b/Xmission/Code/Home/Actions/DeleteTorrent.swift @@ -0,0 +1,8 @@ +// +// DeleteTorrent.swift +// Xmission +// +// Created by Christian Segundo Guevara on 22/7/23. +// + +import Foundation diff --git a/Xmission/Code/Home/Actions/LoginAction.swift b/Xmission/Code/Home/Actions/LoginAction.swift new file mode 100644 index 0000000..81fa97c --- /dev/null +++ b/Xmission/Code/Home/Actions/LoginAction.swift @@ -0,0 +1,52 @@ +import Foundation + +struct LoginAction { + + var parameters: LoginRequest + + func call(completion: @escaping (LoginResponse) -> Void) { + + let scheme: String = "https" + let host: String = "base_url" + let path = "/login" + + var components = URLComponents() + components.scheme = scheme + components.host = host + components.path = path + + guard let url = components.url else { + return + } + + var request = URLRequest(url: url) + request.httpMethod = "post" + + request.addValue("application/json", forHTTPHeaderField: "Content-Type") + request.addValue("application/json", forHTTPHeaderField: "Accept") + + do { + request.httpBody = try JSONEncoder().encode(parameters) + } catch { + // Error: Unable to encode request parameters + } + + let task = URLSession.shared.dataTask(with: request) { data, _, error in + if let data = data { + let response = try? JSONDecoder().decode(LoginResponse.self, from: data) + + if let response = response { + completion(response) + } else { + // Error: Unable to decode response JSON + } + } else { + // Error: API request failed + if let error = error { + print("Error: \(error.localizedDescription)") + } + } + } + task.resume() + } +} -- cgit v1.2.3