Module: Gslide::Concerns::Requests

Included in:
Models::Editor, Models::Presentation, Models::Spreadsheet, Models::SpreadsheetDraft
Defined in:
lib/gslide/concerns/requests.rb

Instance Method Summary collapse

Instance Method Details

#get_request(uri, auth_token: "") ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/gslide/concerns/requests.rb', line 6

def get_request(uri, auth_token: "")
  req = Net::HTTP::Get.new(uri.to_s)
  req['Authorization'] = "Bearer #{auth_token}"

  res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(req)
  end
  response_body = JSON(res.body)

  case res
  when Net::HTTPSuccess
    response_body
  when Net::HTTPUnauthorized
    msg = response_body["error"] ? response_body["error"]["message"] : "Unauthorized"
    raise Gslide::UnauthorizedError, msg
  else
    msg = response_body["error"] ? response_body["error"]["message"] : "HTTPError"
    raise Gslide::HTTPError, msg
  end
end

#post_request(uri, auth_token: "", body: {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/gslide/concerns/requests.rb', line 27

def post_request(uri, auth_token: "", body: {})
  req = Net::HTTP::Post.new(uri.to_s)
  req.initialize_http_header 'Content-Type' => 'application/json'
  req['Authorization'] = "Bearer #{auth_token}"

  req.body = body

  res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(req)
  end

  response_body = JSON(res.body)

  case res
  when Net::HTTPSuccess
    response_body
  when Net::HTTPUnauthorized
    msg = response_body["error"] ? response_body["error"]["message"] : "Unauthorized"
    raise Gslide::UnauthorizedError, msg
  when Net::HTTPTooManyRequests
    # "Quota exceeded for quota metric 'Write requests' and limit 'Write requests per minute per user' of service 'slides.googleapis.com' for consumer 'project_number:012345678901'."
    if response_body["error"] && response_body["error"]["message"] =~ /Quota exceeded/
      raise Gslide::QuotaExceededError, msg
    else
      raise Gslide::HTTPError, msg || "TooManyRequests"
    end
  else
    msg = response_body["error"] ? response_body["error"]["message"] : "HTTPError"
    raise Gslide::HTTPError, msg
  end
end