Class: Fedipub::Utils::JsonRequest

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Singleton
Defined in:
lib/fedipub/utils/json_request.rb

Overview

Wrapper around HTTP calls which ensures signatures etc are applied.

Defined Under Namespace

Classes: UnhandledResponseStatus

Instance Method Summary collapse

Instance Method Details

#get(url:, params: {}, headers: {}, from: nil) ⇒ Object



36
37
38
# File 'lib/fedipub/utils/json_request.rb', line 36

def get(url:, params: {}, headers: {}, from: nil)
  execute_request method: :get, url: url, params: params, headers: headers, from: from || Fedipub::Actor.application_actor
end

#get_json(url, params: {}, headers: {}, expected_status: 200, from: nil) ⇒ Object

Makes a GET request and returns a Hash from the parsed body

Parameters:

  • url (String) —

    Target URL

  • params (Hash) (defaults to: {}) —

    Querystring parameters

  • headers (Hash) (defaults to: {}) —

    Additional headers

  • expected_status (Integer) (defaults to: 200) —

    Expected response status. Will raise a UnhandledResponseStatus when status is different

Returns:

  • The parsed JSON object

Raises:



29
30
31
32
33
34
# File 'lib/fedipub/utils/json_request.rb', line 29

def get_json(url, params: {}, headers: {}, expected_status: 200, from: nil)
  response = get url: url, params: params, headers: headers, from: from
  raise UnhandledResponseStatus, "Unhandled status code #{response.status} for GET #{url}" if expected_status && response.status != expected_status

  JSON.parse(response.body)
end

#post(url:, message:, headers: {}, from: nil) ⇒ Object



40
41
42
# File 'lib/fedipub/utils/json_request.rb', line 40

def post(url:, message:, headers: {}, from: nil)
  execute_request method: :post, url: url, headers: headers, message: message, from: from
end