| 413 | |
| 414 | private |
| 415 | def build_request(method, url, headers, body: nil) |
| 416 | need_auth = false |
| 417 | case method |
| 418 | when :head |
| 419 | request = Net::HTTP::Head.new(url, headers) |
| 420 | when :get |
| 421 | request = Net::HTTP::Get.new(url, headers) |
| 422 | when :post |
| 423 | need_auth = true |
| 424 | request = Net::HTTP::Post.new(url, headers) |
| 425 | when :put |
| 426 | need_auth = true |
| 427 | request = Net::HTTP::Put.new(url, headers) |
| 428 | when :delete |
| 429 | need_auth = true |
| 430 | request = Net::HTTP::Delete.new(url, headers) |
| 431 | else |
| 432 | raise "unsupported HTTP method: #{method.inspect}" |
| 433 | end |
| 434 | request["Connection"] = "Keep-Alive" |
| 435 | setup_auth(request) if need_auth |
| 436 | if body |
| 437 | if body.is_a?(String) |
| 438 | request.body = body |
| 439 | else |
| 440 | request.body_stream = body |
| 441 | end |
| 442 | end |
| 443 | request |
| 444 | end |
| 445 | |
| 446 | def with_retry(max_n_retries, target) |
| 447 | n_retries = 0 |