Method: Effective::Http.delete

Defined in:
app/models/effective/http.rb

.delete(endpoint, params: nil, headers: nil) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'app/models/effective/http.rb', line 71

def self.delete(endpoint, params: nil, headers: nil)
  headers = { 'Content-Type': 'application/json' }.merge(headers || {})
  query = ('?' + params.compact.map { |k, v| "$#{k}=#{v}" }.join('&')) if params.present?

  uri = URI.parse(endpoint + query.to_s)

  http = Net::HTTP.new(uri.host, uri.port)
  http.read_timeout = 10
  http.use_ssl = true if endpoint.start_with?('https')

  response = with_retries do
    puts "[DELETE] #{uri}" if Rails.env.development?
    http.delete(uri, headers)
  end

  unless ['200', '204'].include?(response.code.to_s)
    puts("Response code: #{response.code} #{response.body}")
    return false
  end

  JSON.parse(response.body)
end