class Commands::Share

Attributes

email_list[R]

Public Class Methods

new(client, params) click to toggle source
Calls superclass method Commands::Command::new
# File lib/gdsh/share.rb, line 11
def initialize(client, params)
  super(client, params)
  @email_list = []
  @file_id = @params[1]
  @params.drop(2).each do |email|
    @email_list << email
  end
end
parameters() click to toggle source
# File lib/gdsh/share.rb, line 7
def self.parameters
  '(<file_id>[, <email_1>, <email_2>, ...])'
end

Public Instance Methods

puts_shared_notification(email, role) click to toggle source
# File lib/gdsh/share.rb, line 33
def puts_shared_notification(email, role)
  puts "Shared ".colorize(:cyan) + @file_id.colorize(:light_yellow) +
  " with ".colorize(:cyan) + email.colorize(:light_yellow) +
  " with ".colorize(:cyan) + role_with_colours(role) + 
  " permissions.".colorize(:cyan)
end
role_with_colours(role) click to toggle source
# File lib/gdsh/share.rb, line 20
def role_with_colours(role)
  case role
  when 'reader'
    'read-only'.colorize(:green)
  when 'writer'
    'read-write'.colorize(:blue)
  when 'owner'
    'owner'.colorize(:magenta)
  else
    'error'.colorize(:red)
  end
end
share_with_email(email, role) click to toggle source
# File lib/gdsh/share.rb, line 40
def share_with_email(email, role)
  drive = @client.discovered_api('drive', 'v2')
  new_permission = drive.permissions.insert.request_schema.new(
    value: email,
    type: 'user',
    role: role)
  result = @client.execute(
    api_method: drive.permissions.insert,
    body_object: new_permission,
    parameters: { fileId: @file_id })
  if result.status == 200
    puts_shared_notification(email, role)
    return result.data
  else
    puts drive_error_string
  end
end
share_with_email_list(role) click to toggle source
# File lib/gdsh/share.rb, line 58
def share_with_email_list(role)
  return if @email_list.empty?
  @email_list.each do |email|
    share_with_email(email, role)
  end
end