class Tumugi::Plugin::GoogleDriveFolderTarget

Attributes

folder_id[R]
name[R]
parents[R]

Public Class Methods

new(folder_id: nil, name:, parents: nil, fs: nil) click to toggle source
# File lib/tumugi/plugin/target/google_drive_folder.rb, line 12
def initialize(folder_id: nil, name:, parents: nil, fs: nil)
  @fs = fs unless fs.nil?
  @folder_id = folder_id
  @name = name
  @parents = parents
end

Public Instance Methods

exist?() click to toggle source
# File lib/tumugi/plugin/target/google_drive_folder.rb, line 23
def exist?
  if folder_id
    fs.exist?(folder_id)
  else
    !find_by_name(name).nil?
  end
end
fs() click to toggle source
# File lib/tumugi/plugin/target/google_drive_folder.rb, line 19
def fs
  @fs ||= Tumugi::Plugin::GoogleDrive::FileSystem.new(Tumugi.config.section('google_drive'))
end
mkdir() click to toggle source
# File lib/tumugi/plugin/target/google_drive_folder.rb, line 31
def mkdir
  fid = folder_id || fs.generate_file_id
  fs.mkdir(name, folder_id: fid, parents: parents)
  @folder_id = fid
end
to_s() click to toggle source
# File lib/tumugi/plugin/target/google_drive_folder.rb, line 37
def to_s
  s = "folder_id: #{folder_id}, name: #{name}"
  s += ", parents: #{parents}" if parents
  s
end
url() click to toggle source
# File lib/tumugi/plugin/target/google_drive_folder.rb, line 43
def url
  return nil if folder_id.nil?
  folder = fs.get_file_metadata(folder_id)
  folder.web_view_link
end

Private Instance Methods

find_by_name(n) click to toggle source
# File lib/tumugi/plugin/target/google_drive_folder.rb, line 51
def find_by_name(n)
  query =  "name='#{n}'"
  ps = parents
  if parents.is_a?(String)
    ps = [parents]
  end
  if parents
    query += " and ("
    query += "#{ps.map{|p| "'#{p}' in parents"}.join(" or ")}"
    query += ") and mime_type = '#{Tumugi::Plugin::GoogleDrive::MimeTypes::DRIVE_FOLDER}'"
  end
  files = fs.list_files(query: query, page_size: 2).files
  if files.size == 0
    nil
  elsif files.size == 1
    files.first
  else
    raise Tumugi::TumugiError.new("Multiple files find for query: #{query}")
  end
end