214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
# File 'lib/github_pivotal_flow/github_api.rb', line 214
def obtain_oauth_token host, user, two_factor_code = nil
auth_url = URI.parse("https://%s@%s/authorizations" % [CGI.escape(user), host])
post(auth_url) if !two_factor_code
res = get(auth_url) do |req|
req['X-GitHub-OTP'] = two_factor_code if two_factor_code
end
unless res.success?
if !two_factor_code && res['X-GitHub-OTP'].to_s.include?('required')
two_factor_code = config.ask_auth_code
return obtain_oauth_token(host, user, two_factor_code)
else
res.error!
end
end
if found = res.data.find {|auth| auth['app']['url'] == oauth_app_url }
found['token']
else
res = post auth_url,
:scopes => %w[repo], :note => 'github-pivotal-flow', :note_url => oauth_app_url do |req|
req['X-GitHub-OTP'] = two_factor_code if two_factor_code
end
res.error! unless res.success?
res.data['token']
end
end
|