Fix issue where uploaded images were from someone else

Changelog-Fixed: Fix issue where uploaded images were from someone else
This commit is contained in:
Swift
2023-04-24 11:55:01 -04:00
committed by William Casarin
parent 624d9662d7
commit 2048e68d67

View File

@@ -63,12 +63,7 @@ func create_upload_request(mediaToUpload: MediaUpload, mediaUploader: MediaUploa
do { do {
let (data, _) = try await URLSession.shared.data(for: request, delegate: progress) let (data, _) = try await URLSession.shared.data(for: request, delegate: progress)
guard let responseString = String(data: data, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) else { guard let url = mediaUploader.getMediaURL(from: data) else {
print("Upload failed getting response string")
return .failed(nil)
}
guard let url = mediaUploader.getMediaURL(from: responseString, mediaIsImage: mediaToUpload.is_image) else {
print("Upload failed getting media url") print("Upload failed getting media url")
return .failed(nil) return .failed(nil)
} }
@@ -144,28 +139,27 @@ enum MediaUploader: String, CaseIterable, Identifiable, StringCodable {
var postAPI: String { var postAPI: String {
switch self { switch self {
case .nostrBuild: case .nostrBuild:
return "https://nostr.build/upload.php" return "https://nostr.build/api/upload/ios.php"
case .nostrImg: case .nostrImg:
return "https://nostrimg.com/api/upload" return "https://nostrimg.com/api/upload"
} }
} }
func getMediaURL(from responseString: String, mediaIsImage: Bool) -> String? { func getMediaURL(from data: Data) -> String? {
switch self { switch self {
case .nostrBuild: case .nostrBuild:
guard let startIndex = responseString.range(of: "nostr.build_")?.lowerBound else { do {
return try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? String
} catch {
print("Failed JSONSerialization")
return nil return nil
} }
let stringContainingName = responseString[startIndex..<responseString.endIndex]
guard let endIndex = stringContainingName.range(of: "<")?.lowerBound else {
return nil
}
let nostrBuildImageName = responseString[startIndex..<endIndex]
let nostrBuildURL = mediaIsImage ? "https://nostr.build/i/\(nostrBuildImageName)" : "https://nostr.build/av/\(nostrBuildImageName)"
return nostrBuildURL
case .nostrImg: case .nostrImg:
guard let responseString = String(data: data, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) else {
print("Upload failed getting response string")
return nil
}
guard let startIndex = responseString.range(of: "https://i.nostrimg.com/")?.lowerBound else { guard let startIndex = responseString.range(of: "https://i.nostrimg.com/")?.lowerBound else {
return nil return nil
} }