class GoogleAPIMiddleMan::Agent
Attributes
client[R]
Public Class Methods
new(config)
click to toggle source
# File lib/google-api-middle_man.rb, line 11 def initialize(config) [:application_name, :key_location, :google_service_email].each do |key| unless config.has_key?(key) || config.has_key?(key.to_s) raise MissingConfigOptions, "config is missing #{key}" end end @application_name = config[:application_name] || config['application_name'] @key_location = config[:key_location] || config['key_location'] @google_service_email = config[:google_service_email] || config['google_service_email'] @client = Google::APIClient.new(application_name: @application_name) end
Public Instance Methods
calendar_events(calendar_id)
click to toggle source
# File lib/google-api-middle_man.rb, line 25 def calendar_events(calendar_id) @client.authorization = service_account.authorize options = events_list_options_hash.merge('calendarId' => calendar_id) result = @client.execute(api_method: calendar_service.events.list, parameters: options) result.data end
Private Instance Methods
api_key()
click to toggle source
# File lib/google-api-middle_man.rb, line 52 def api_key @api_key ||= Google::APIClient::PKCS12.load_key(@key_location, 'notasecret') end
calendar_scope()
click to toggle source
# File lib/google-api-middle_man.rb, line 41 def calendar_scope 'https://www.googleapis.com/auth/calendar.readonly' end
calendar_service()
click to toggle source
# File lib/google-api-middle_man.rb, line 60 def calendar_service @client.discovered_api('calendar', 'v3') end
default_scope()
click to toggle source
# File lib/google-api-middle_man.rb, line 37 def default_scope 'https://www.googleapis.com/auth/prediction' end
events_list_options_hash()
click to toggle source
# File lib/google-api-middle_man.rb, line 64 def events_list_options_hash { 'singleEvents' => 'true', 'orderBy' => 'startTime', 'timeMax' => DateTime.now + 1, 'timeMin' => DateTime.now, 'fields' => 'description,items(colorId,created,creator(displayName,email),description,end,endTimeUnspecified,id,kind,location,start,status,summary),kind,summary,updated' } end
scopes()
click to toggle source
# File lib/google-api-middle_man.rb, line 45 def scopes s = [] s << default_scope s << calendar_scope s end
service_account()
click to toggle source
# File lib/google-api-middle_man.rb, line 56 def service_account Google::APIClient::JWTAsserter.new(@google_service_email, scopes, api_key) end