module Mobilize::Gdrive

Public Class Methods

admin_group_name() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 63
def Gdrive.admin_group_name
  Gdrive.config['admin_group_name']
end
admins() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 40
def Gdrive.admins
  Gdrive.config['admins']
end
books(gdrive_slot=nil,params={}) click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 103
def Gdrive.books(gdrive_slot=nil,params={})
  Gdrive.files(gdrive_slot,params).select{|f| f.class==GoogleDrive::Spreadsheet}
end
config() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 3
def Gdrive.config
  Base.config('gdrive')
end
domain() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 7
def Gdrive.domain
  Gdrive.config['domain']
end
file_write_retry_delay() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 36
def Gdrive.file_write_retry_delay
  Gdrive.config['file_write_retry_delay']
end
files(gdrive_slot=nil,params={}) click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 98
def Gdrive.files(gdrive_slot=nil,params={})
  root = Gdrive.root(gdrive_slot)
  root.files(params)
end
max_api_retries() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 28
def Gdrive.max_api_retries
  Gdrive.config['max_api_retries']
end
max_file_write_retries() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 32
def Gdrive.max_file_write_retries
  Gdrive.config['max_file_write_retries']
end
owner_email() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 11
def Gdrive.owner_email
  [Gdrive.config['owner']['name'],Gdrive.domain].join("@")
end
owner_name() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 15
def Gdrive.owner_name
  Gdrive.config['owner']['name']
end
password(email) click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 19
def Gdrive.password(email)
  if email == Gdrive.owner_email
    Gdrive.config['owner']['pw']
  else
    worker = Gdrive.workers(email)
    return worker['pw'] if worker
  end
end
root(gdrive_slot=nil) click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 93
def Gdrive.root(gdrive_slot=nil)
  pw = Gdrive.password(gdrive_slot)
  GoogleDrive.login(gdrive_slot,pw)
end
slot_worker_by_path(path) click to toggle source

email management - used to make sure not too many emails get used at the same time

# File lib/mobilize-base/handlers/google/gdrive.rb, line 72
def Gdrive.slot_worker_by_path(path)
  working_slots = Mobilize::Resque.jobs.map{|j| begin j['args'][1]['gdrive_slot'];rescue;nil;end}.compact.uniq
  Gdrive.workers.sort_by{rand}.each do |w|
    unless working_slots.include?([w['name'],Gdrive.domain].join("@"))
      Mobilize::Resque.set_worker_args_by_path(path,{'gdrive_slot'=>[w['name'],Gdrive.domain].join("@")})
      return [w['name'],Gdrive.domain].join("@")
    end
  end
  #return false if none are available
  return false
end
unslot_worker_by_path(path) click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 84
def Gdrive.unslot_worker_by_path(path)
  begin
    Mobilize::Resque.set_worker_args_by_path(path,{'gdrive_slot'=>nil})
    return true
  rescue
    return false
  end
end
worker_emails() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 67
def Gdrive.worker_emails
  Gdrive.workers.map{|w| [w['name'],Gdrive.domain].join("@")}
end
worker_group_name() click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 59
def Gdrive.worker_group_name
  Gdrive.config['worker_group_name']
end
workers(email=nil) click to toggle source
# File lib/mobilize-base/handlers/google/gdrive.rb, line 44
def Gdrive.workers(email=nil)
  if email.nil?
    #divide worker array into equal number of parts
    #as there are deploy servers
    servers = Jobtracker.deploy_servers
    workers = Gdrive.config['workers']
    current_server = Jobtracker.current_server || servers.first
    server_i = servers.index(current_server)
    server_workers = workers.in_groups(servers.length,false)[server_i]
    return server_workers
  else
    Gdrive.workers.select{|w| [w['name'],Gdrive.domain].join("@") == email}.first
  end
end