2016-03-29 10 views
0

Gibt es eine Möglichkeit, eine httparty-Anfrage in eine Curl-Anfrage umzuwandeln? Ich würde gerne in der Lage sein, einem anderen Entwickler meine fehlgeschlagene Anfrage in einem Curl-Format zu senden.Httparty-Anforderung an Curl

Ich war so etwas wie dieses Denken:

web_caller = HTTPartyClass.new 
web_caller.hit_api 
web_caller.last_request_as_curl 

Wo last_request_as_curl die vorherige Anforderung in eine Locke String verwandeln würde, die ich an den Eigentümer der API geben kann beim Debuggen.

Idealerweise last_request_as_curl wäre so etwas wie zurückgeben: "curl -X POST ....."

+0

Können Sie das Bit des Codes anzeigen, der die Anfrage explizit macht? – Caillou

+0

Die ursprüngliche Frage war ziemlich offen. Ich habe die Frage mit einigen Präzisierungen aktualisiert und meine Lösung hinzugefügt. Wenn jemand einen besseren gefunden hat, teilen Sie uns bitte mit, dass es eine bestehende Lösung gibt. – unflores

Antwort

1

ich eine Methode in meiner HTTParty Basisklasse schrieb:

def capture_curl(request) 
    options = request.options 
    method = request.http_method.to_s.split(':').last.upcase 
    curl_str = "curl -k -X #{method} " 
    if(options[:basic_auth].present?) 
    curl_str += "-u #{options[:basic_auth].values.join(':')} " 
    end 
    curl_str += 
    "-d " + 
    options[:body] 
     .merge(options[:default_params]) 
     .map{|a,k| "#{a}=#{k}"} 
     .join('&') + " " 
    curl_str += "#{options[:base_uri]}#{request.path.path}" 
    @curl_str = curl_str 
end 

def last_curl 
    @curl_str 
end 

Ich habe eine Methode, die immer behandelt das Antwortobjekt und bei dieser Methode gebe ich die response.request an capture_curl weiter.