class Arbetsformedlingen::API::Request
API
request object
Attributes
base_url[R]
locale[R]
Public Class Methods
new(base_url: '', locale: 'sv')
click to toggle source
Initialize request
# File lib/arbetsformedlingen/api/request.rb, line 15 def initialize(base_url: '', locale: 'sv') @base_url = base_url @locale = locale end
Public Instance Methods
get(url, query: {})
click to toggle source
Perform GET request @param [String] url to be fetched @param [Hash, Array<Array<#to_s>>] query params @return [Response] response object
# File lib/arbetsformedlingen/api/request.rb, line 24 def get(url, query: {}) uri = to_uri(url, query: query) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri) request['Content-Type'] = 'application/json' request['Accept-Language'] = locale response = http.request(request) # AFs APIs somtimes redirects with HTTP 303 if response.code == '303' && response.header['Location'] return get(response.header['Location'], query: query) end Response.new(response, uri) end
post(url, data: {})
click to toggle source
Perform POST request @param [String] url to be fetched @param [Hash] data params @return [Response] response object
# File lib/arbetsformedlingen/api/request.rb, line 45 def post(url, data: {}) uri = to_uri(url) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Post.new(uri) request['Content-Type'] = 'application/json' request['Accept-Language'] = locale request['cache-control'] = 'no-cache' request.body = JSON.dump(data) response = http.request(request) Response.new(response, uri) end
Private Instance Methods
to_uri(url, query: {})
click to toggle source
# File lib/arbetsformedlingen/api/request.rb, line 62 def to_uri(url, query: {}) full_url = URI(url.to_s).absolute ? url : "#{base_url}#{url}" URI("#{full_url}?#{URI.encode_www_form(query.to_a)}") end