74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/b2/api_connection.rb', line 74
def send_request(request, body=nil, &block)
retries = 0
request['Authorization'] = authorization_token
request.body = (body.is_a?(String) ? body : JSON.generate(body)) if body
return_value = nil
close_connection = false
begin
connection.request(request) do |response|
close_connection = response['Connection'] == 'close'
case response
when Net::HTTPSuccess
if block_given?
return_value = yield(response)
else
return_value = JSON.parse(response.body)
end
else
body = JSON.parse(response.body)
case body['code']
when 'not_found'
raise B2::NotFound(body['message'])
when 'expired_auth_token'
raise B2::ExpiredAuthToken(body['message'])
else
raise "Error connecting to B2 API #{response.body}"
end
end
end
rescue B2::ExpiredAuthToken, EOFError
reconnect!
retries =+ 1
retry if retries < 2
end
disconnect! if close_connection
return_value
end
|