Est-ce que quelqu'un sait comment faire l'authentification de base avec RestClient ?
J'ai besoin de créer un référentiel privé sur GitHub via leur API RESTful.
De la source il semble que vous pouvez simplement spécifier l'utilisateur et le mot de passe dans le cadre de votre objet de demande.
Avez-vous essayé quelque chose comme:
r = Request.new({:user => "username", :password => "password"})
De plus, si vous regardez vers le bas dans la section Shell de ReadMe , il contient un exemple de spécification dans le cadre de restshell
.
$ restclient https://example.com user pass
>> delete '/private/resource'
Le moyen le plus simple consiste à intégrer les détails dans l'URL:
RestClient.get "http://username:[email protected]"
Voici un exemple de code de travail où je supporte basicauth facultatif mais ne nécessite pas que l'utilisateur et le mot de passe soient intégrés dans l'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
Notez si @my_user
et @mypass
ne sont pas instanciés, cela fonctionne bien sans basicauth.
Cela fonctionne et suit RFC 7617 pour l'authentification de base Http :
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