class Dug::GmailServicer
@private
Constants
- APPLICATION_NAME
- OOB_URI
- SCOPE
Public Class Methods
new()
click to toggle source
# File lib/dug/gmail_servicer.rb, line 21 def initialize @gmail = Google::Apis::GmailV1::GmailService.new @gmail.client_options.application_name = APPLICATION_NAME end
Public Instance Methods
add_labels_by_name(*args)
click to toggle source
# File lib/dug/gmail_servicer.rb, line 33 def add_labels_by_name(*args) modification_request(*args) do |request, ids| request.add_label_ids = ids end end
labels(use_cache: true)
click to toggle source
# File lib/dug/gmail_servicer.rb, line 26 def labels(use_cache: true) @labels = nil unless use_cache @labels ||= @gmail.list_user_labels('me').labels.reduce({}) do |hash, label| hash.tap { |h| h[label.name] = label } end end
remove_labels_by_name(*args)
click to toggle source
# File lib/dug/gmail_servicer.rb, line 39 def remove_labels_by_name(*args) modification_request(*args) do |request, ids| request.remove_label_ids = ids end end
Private Instance Methods
modification_request(message, label_names, entire_thread: false) { |request, ids| ... }
click to toggle source
# File lib/dug/gmail_servicer.rb, line 78 def modification_request(message, label_names, entire_thread: false) ids = [] label_names.each do |name| unless labels[name] && id = labels[name].id raise MissingLabel, "The label '#{name}' does not exist. Please add the label in Gmail first." end ids << id end request = if entire_thread Google::Apis::GmailV1::ModifyThreadRequest.new else Google::Apis::GmailV1::ModifyMessageRequest.new end yield request, ids if entire_thread modify_thread('me', message.thread_id, request) else modify_message('me', message.id, request) end end