Module: GoogleReviews::ApiRequest

Defined in:
lib/google_reviews/api_request.rb

Overview

Make API request to fetch google reviews

Class Method Summary collapse

Class Method Details

.build_http_client(url) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/google_reviews/api_request.rb', line 22

def build_http_client(url)
  uri = URI(url)
  https = Net::HTTP.new(uri.host, uri.port)
  https.use_ssl = true

  https
end

.build_request(url) ⇒ Object



30
31
32
33
34
# File 'lib/google_reviews/api_request.rb', line 30

def build_request(url)
  uri = URI(url)

  Net::HTTP::Get.new(uri.request_uri)
end

.error_message(response) ⇒ Object



42
43
44
# File 'lib/google_reviews/api_request.rb', line 42

def error_message(response)
  I18n.t("messages.failed_request", code: response.code, message: response.message)
end

.execute(url) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/google_reviews/api_request.rb', line 7

def execute(url)
  http_request = build_request(url)
  request_client = build_http_client(url)

  response = request_client.request(http_request)

  raise ApiError, error_message unless response.is_a?(Net::HTTPSuccess)

  parsed_response(response)
rescue StandardError => e
  raise ApiError, I18n.t("messages.api_request_error", exception: e)
end

.parsed_response(response) ⇒ Object



36
37
38
39
40
# File 'lib/google_reviews/api_request.rb', line 36

def parsed_response(response)
  JSON.parse(response.body)
rescue JSON::ParserError
  raise ApiError, I18n.t("messages.parser_error")
end