class OrbitActivities::HTTP

Public Class Methods

delete(url:, user_agent:, api_key:) click to toggle source
# File lib/orbit_activities/http.rb, line 49
def self.delete(url:, user_agent:, api_key:)
  url = URI(url)

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true

  req = Net::HTTP::Delete.new(url)
  req["Authorization"] = "Bearer #{api_key}"
  req["User-Agent"] = user_agent

  response = http.request(req)

  return "Deletion successful" if response.code == "204" || response.code == "200"

  raise ArgumentError, response.message if response.code != "204" || response.code != "200"
end
get(url:, user_agent:, api_key:, filters: nil) click to toggle source
# File lib/orbit_activities/http.rb, line 33
def self.get(url:, user_agent:, api_key:, filters: nil)
  url = URI(url)
  url.query = URI.encode_www_form(filters) if filters

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  req = Net::HTTP::Get.new(url)
  req["Accept"] = "application/json"
  req["Authorization"] = "Bearer #{api_key}"
  req["User-Agent"] = user_agent

  response = http.request(req)

  validate_payload(response.body)
end
post(url:, user_agent:, api_key:, body:) click to toggle source
# File lib/orbit_activities/http.rb, line 9
def self.post(url:, user_agent:, api_key:, body:)
  url = URI(url)

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  req = Net::HTTP::Post.new(url)
  req["Accept"] = "application/json"
  req["Content-Type"] = "application/json"
  req["Authorization"] = "Bearer #{api_key}"
  req["User-Agent"] = user_agent

  req.body = body

  response = http.request(req)

  if response.class == Net::HTTPTooManyRequests
    puts "Reached rate limitation in API, retrying in 60 seconds..."
    sleep(60)
    response = http.request(req)
  end

  validate_payload(response.body)
end
put(url:, user_agent:, api_key:, body:) click to toggle source
# File lib/orbit_activities/http.rb, line 66
def self.put(url:, user_agent:, api_key:, body:)
  url = URI(url)

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true
  req = Net::HTTP::Put.new(url)
  req["Accept"] = "application/json"
  req["Content-Type"] = "application/json"
  req["Authorization"] = "Bearer #{api_key}"
  req["User-Agent"] = user_agent

  req.body = body

  response = http.request(req)

  return "Update successful" if response.code == "204" || response.code == "200"

  raise ArgumentError, response.message if response.code != "204" || response.code != "200"
end
validate_payload(payload) click to toggle source
# File lib/orbit_activities/http.rb, line 86
def self.validate_payload(payload)
  JSON.parse(payload) if OrbitActivities::Utils.valid_json?(payload)
end