Does anyone know how to do basic authentication with RestClient?
I need to create a private repository on GitHub through their RESTful API.
Does anyone know how to do basic authentication with RestClient?
I need to create a private repository on GitHub through their RESTful API.
From the source it looks like you can just specify user and password as part of your request object.
Have you tried something like:
r = Request.new({:user => "username", :password => "password"})
Also if you look down in the Shell section of the ReadMe it has an example of specifying it as part of restshell
.
$ restclient https://example.com user pass
>> delete '/private/resource'
The easiest way is to embed the details in the URL:
RestClient.get "http://username:[email protected]"
Here is an example of working code where I support optional basicauth but don't require the user and password be embedded in the URL:
def get_collection(path)
response = RestClient::Request.new(
:method => :get,
:url => "#{@my_url}/#{path}",
:user => @my_user,
:password => @my_pass,
:headers => { :accept => :json, :content_type => :json }
).execute
results = JSON.parse(response.to_str)
end
Do note if @my_user
and @mypass
are not instantiated, it works fine without basicauth.
From the source it looks like you can just specify user and password as part of your request object.
Have you tried something like:
r = Request.new({:user => "username", :password => "password"})
Also if you look down in the Shell section of the ReadMe it has an example of specifying it as part of restshell
.
$ restclient https://example.com user pass
>> delete '/private/resource'
RestClient::Request
and adding more context to make the example you gave fully functional –
Eichman This works and follows RFC 7617 for Http Basic Authentication:
RestClient::Request.execute(
method: :post,
url: "https://example.com",
headers: { "Authorization" => "Basic " + Base64::encode64(auth_details) },
payload: { "foo" => "bar"}
)
def auth_details
ENV.fetch("HTTP_AUTH_USERNAME") + ":" + ENV.fetch("HTTP_AUTH_PASSWORD")
end
Thanks to Kelsey Hannan:
RestClient.get("https://example.com",
{
Authorization: "Basic #{Base64::encode64('guest:guest')}"
}
)
RestClient.post("https://example.com",
{ }.to_json,
{
Authorization: "Basic #{Base64::encode64('guest:guest')}"
}
)
© 2022 - 2024 — McMap. All rights reserved.
RestClient::Request
and adding more context to make the example you gave fully functional – Eichman