Class: GoogleApis::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/google_apis/connection.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Connection



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

def initialize(options)
  options = options.symbolize_keys

  @client = Google::APIClient.new(
    :application_name => "rubygem:google-apis",
    :application_version => GoogleApis::VERSION
  )

  @client.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
    json_key_io: File.open(options[:private_key], "rb"),
    scope: []
  )
end

Instance Method Details

#discover_api(name, version = 1) ⇒ Object



21
22
23
# File 'lib/google_apis/connection.rb', line 21

def discover_api(name, version = 1)
  @client.discovered_api name, "v#{version}"
end

#download(api, uri, to = nil) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/google_apis/connection.rb', line 54

def download(api, uri, to = nil)
  options = Google::APIClient::Request.new(:uri => uri)

  if to.nil? || File.directory?(to) || to.match(/\/$/)
    to = File.join *[to, File.basename(CGI.unescape(URI.parse(uri).path))].compact
  end

  save! execute!(api, options), to
end

#execute(api, api_method, *params) ⇒ Object



25
26
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
# File 'lib/google_apis/connection.rb', line 25

def execute(api, api_method, *params)
  options, headers = params

  if options
    parameter_keys = (api_method.discovery_document["parameters"] || {}).keys.collect(&:to_sym)
    media = options.delete(:media)
    parameters, body_object = options.partition{|k, v| parameter_keys.include?(k)}.collect{|x| Hash[x]}
  end

  if media && media.is_a?(String)
    parameters[:uploadType] = "resumable"
    parameters[:name] ||= File.basename(media)
    if directory = body_object.delete(:directory)
      parameters[:name] = File.join(directory, parameters[:name])
    end
    content_type = options[:contentType] || options[:mimeType] if options
    content_type ||= `file --mime -b #{media}`.split(";")[0]
    media = Google::APIClient::UploadIO.new media, content_type
  end

  options = {:api_method => api_method}
  options[:parameters] = parameters unless parameters.empty?
  options[:body_object] = body_object unless body_object.empty?
  options[:media] = media if media
  options.merge!(headers) if headers

  parse! execute!(api, options)
end

#inspectObject



64
65
66
# File 'lib/google_apis/connection.rb', line 64

def inspect
  "#<#{self.class}:#{object_hexid} [#{@asserter.issuer}]>"
end