aboutsummaryrefslogtreecommitdiff
path: root/iTexSnip
diff options
context:
space:
mode:
authorNavan Chauhan <navanchauhan@gmail.com>2024-10-23 10:48:26 -0600
committerNavan Chauhan <navanchauhan@gmail.com>2024-10-23 10:48:26 -0600
commitcc7b6ba6de4bd9abb5d1194469e57bcb340acf68 (patch)
tree1c4523f83bb554b5781b41cfe81f85b82ba86225 /iTexSnip
parent7de5180eacb7288ac614435b198926fbaf54cbb4 (diff)
add rating endpoint
Diffstat (limited to 'iTexSnip')
-rw-r--r--iTexSnip/Views/DetailedSnippetView.swift52
1 files changed, 52 insertions, 0 deletions
diff --git a/iTexSnip/Views/DetailedSnippetView.swift b/iTexSnip/Views/DetailedSnippetView.swift
index 5b679cd..571fcb3 100644
--- a/iTexSnip/Views/DetailedSnippetView.swift
+++ b/iTexSnip/Views/DetailedSnippetView.swift
@@ -5,6 +5,7 @@
// Created by Navan Chauhan on 10/21/24.
//
+import Foundation
import LaTeXSwiftUI
import SwiftUI
@@ -12,6 +13,8 @@ struct DetailedSnippetView: View {
@Environment(\.modelContext) var modelContext
@Environment(\.dismiss) private var dismiss
+ @AppStorage("apiEndpoint") var apiEndpoint: String =
+ "https://snippetfeedback.itexsnip.navan.dev/rate_snippet"
@State var showOriginal = false
var snippet: ImageSnippet
@@ -113,6 +116,55 @@ struct DetailedSnippetView: View {
withAnimation {
self.snippet.rate(rating)
do {
+ if let rating = rating {
+ if var url = URL(string: "\(self.apiEndpoint)") {
+ let queryItem = URLQueryItem(name: "good", value: "\(rating)")
+ url.append(queryItems: [queryItem])
+ let boundary = "Boundary-\(UUID().uuidString)"
+
+ let headers = [
+ "accept": "application/json",
+ "Content-Type": "multipart/form-data; boundary=\(boundary)",
+ ]
+
+ var request = URLRequest(url: url)
+ request.httpMethod = "POST"
+ request.allHTTPHeaderFields = headers
+
+ var body = Data()
+
+ body.append("--\(boundary)\r\n".data(using: .utf8)!)
+ body.append("Content-Disposition: form-data; name=\"good\"\r\n\r\n".data(using: .utf8)!)
+ body.append("\(rating)\r\n".data(using: .utf8)!)
+
+ let data = self.snippet.image
+ let mimeType = "image/jpeg" // We detect the filetype on the server anyway
+ let filename = "image"
+ body.append("--\(boundary)\r\n".data(using: .utf8)!)
+ body.append(
+ "Content-Disposition: form-data; name=\"image\"; filename=\"\(filename)\"\r\n".data(
+ using: .utf8)!)
+ body.append("Content-Type: \(mimeType)\r\n\r\n".data(using: .utf8)!)
+ body.append(data)
+ body.append("\r\n".data(using: .utf8)!)
+
+ body.append("--\(boundary)--\r\n".data(using: .utf8)!)
+
+ request.httpBody = body
+
+ let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
+ if let error = error {
+ print(error)
+ } else if let data = data {
+ let str = String(data: data, encoding: .utf8)
+ print(str ?? "")
+ }
+ }
+
+ task.resume()
+ }
+ }
+
try modelContext.save()
} catch {
print("Error saving rating: \(error)")