Method: Snooze::Post.execute!

Defined in:
lib/snooze/post.rb

.execute!(action, post_body, retries = 4) ⇒ Object

Execute an HTTP post



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/snooze/post.rb', line 14

def self.execute!(action, post_body, retries = 4)
  uri = self.generate_uri_from_action(action)
  response = nil

  begin
    connection = self.setup_connection(uri)

    response = connection.post uri.path do |request|
      request.headers['Content-Type'] = 'application/json'
      request.options[:timeout] = 5
      request.options[:open_timeout] = 2
      request.body = post_body
    end

    raise Faraday::Error::ConnectionFailed.new('') if response.status == 500
  rescue Faraday::Error::TimeoutError, Faraday::Error::ConnectionFailed, Faraday::Error::ClientError, Faraday::Error => e
    raise Snooze::ConnectionError if retries <= 0
    sleep_for_a_while(5 - retries)
    response = self.execute!(action, post_body, retries-1)
  end

  response
end