summaryrefslogtreecommitdiff
path: root/Xmission/Code/Home/Actions
diff options
context:
space:
mode:
authorChristian Segundo2023-07-24 10:45:15 +0200
committerChristian Segundo2023-07-24 10:45:15 +0200
commit01ce93653d86f2a47eda58d2e74c3926981b22cf (patch)
treedef1c1599a0a044ab9c64d48b89c704f4cbb0938 /Xmission/Code/Home/Actions
parent864b644e8ecafccaf84b40168524e47351a6d111 (diff)
downloadxmission-ios-master.tar.gz
Diffstat (limited to 'Xmission/Code/Home/Actions')
-rw-r--r--Xmission/Code/Home/Actions/AddTorrent.swift8
-rw-r--r--Xmission/Code/Home/Actions/DeleteTorrent.swift8
-rw-r--r--Xmission/Code/Home/Actions/LoginAction.swift52
3 files changed, 68 insertions, 0 deletions
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()
+ }
+}