class Immobilienscout::Request

Public Class Methods

new(url, params = {}) click to toggle source
# File lib/immobilienscout/request.rb, line 8
def initialize(url, params = {})
  @url = url
  @params = params

  raise ArgumentError unless valid?
end

Public Instance Methods

delete() click to toggle source
# File lib/immobilienscout/request.rb, line 66
def delete
  auth_header = generate_auth_header('DELETE')
  headers = generate_headers(auth_header)

  uri = URI.parse(@url)

  request = Net::HTTP::Delete.new(uri)
  request.initialize_http_header(headers)

  execute_request(uri, request)
end
get() click to toggle source
# File lib/immobilienscout/request.rb, line 15
def get
  auth_header = generate_auth_header('GET', @params)
  headers = generate_headers(auth_header)

  url_with_query = "#{@url}?#{@params.to_query}"
  uri = URI.parse(url_with_query)

  request = Net::HTTP::Get.new(uri)
  request.initialize_http_header(headers)

  execute_request(uri, request)
end
post() click to toggle source
# File lib/immobilienscout/request.rb, line 28
def post
  auth_header = generate_auth_header('POST')
  headers = generate_headers(auth_header)

  uri = URI.parse(@url)

  request = Net::HTTP::Post.new(uri)
  request.body = @params.to_json
  request.initialize_http_header(headers)

  execute_request(uri, request)
end
post_with_multipart() click to toggle source
# File lib/immobilienscout/request.rb, line 41
def post_with_multipart
  auth_header = generate_auth_header('POST')

  uri = URI.parse(@url)

  request = Net::HTTP::Post::Multipart.new(uri, @params)
  request.add_field('Authorization', auth_header)
  request.add_field('Accept', 'application/json')

  execute_request(uri, request)
end
put() click to toggle source
# File lib/immobilienscout/request.rb, line 53
def put
  auth_header = generate_auth_header('PUT')
  headers = generate_headers(auth_header)

  uri = URI.parse(@url)

  request = Net::HTTP::Put.new(uri)
  request.body = @params.to_json
  request.initialize_http_header(headers)

  execute_request(uri, request)
end

Private Instance Methods

execute_request(uri, request) click to toggle source
# File lib/immobilienscout/request.rb, line 96
def execute_request(uri, request)
  response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request request }
  Immobilienscout::ResponseParser.new(response).call
end
generate_auth_header(method_type, query_params = nil) click to toggle source
# File lib/immobilienscout/request.rb, line 84
def generate_auth_header(method_type, query_params = nil)
  Immobilienscout::Authenticator.new(@url, method_type, query_params).call
end
generate_headers(auth_header) click to toggle source
# File lib/immobilienscout/request.rb, line 88
def generate_headers(auth_header)
  {
    'Authorization' => auth_header,
    'Content-Type' => 'application/json',
    'Accept' => 'application/json'
  }
end
valid?() click to toggle source
# File lib/immobilienscout/request.rb, line 80
def valid?
  @url.present?
end