Skip to content

Instantly share code, notes, and snippets.

@shaps80
Last active August 15, 2024 09:46
Show Gist options
  • Save shaps80/ba6a1e2d477af0383e8f19b87f53661d to your computer and use it in GitHub Desktop.
Save shaps80/ba6a1e2d477af0383e8f19b87f53661d to your computer and use it in GitHub Desktop.
Generates a cURL command representation of a URLRequest in Swift.
import Foundation
extension URLRequest {
/**
Returns a cURL command representation of this URL request.
*/
public var curlString: String {
guard let url = url else { return "" }
var baseCommand = #"curl "\#(url.absoluteString)""#
if httpMethod == "HEAD" {
baseCommand += " --head"
}
var command = [baseCommand]
if let method = httpMethod, method != "GET" && method != "HEAD" {
command.append("-X \(method)")
}
if let headers = allHTTPHeaderFields {
for (key, value) in headers where key != "Cookie" {
command.append("-H '\(key): \(value)'")
}
}
if let data = httpBody, let body = String(data: data, encoding: .utf8) {
command.append("-d '\(body)'")
}
return command.joined(separator: " \\\n\t")
}
}
@shaps80
Copy link
Author

shaps80 commented Jul 3, 2023

@AlvaroOlave I love this! No need to include the code in every project! Amazing :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment