Module: SendGmail::MailList
- Included in:
- Client
- Defined in:
- lib/send_gmail/mail_list.rb
Instance Method Summary collapse
- #mail_detail(mail_id, user_id = 'me') ⇒ Object
- #mail_id_list(query, _user_id = 'me', next_page_token = nil) ⇒ Object
- #mail_list(query, user_id = 'me', next_page_token = nil) ⇒ Object
- #pickup_contents(headers, name) ⇒ Object
Instance Method Details
#mail_detail(mail_id, user_id = 'me') ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/send_gmail/mail_list.rb', line 33 def mail_detail(mail_id, user_id = 'me') results = @client.execute!( api_method: @gmail_api.users..get, parameters: { userId: user_id, id: mail_id } ) obj = JSON.parse(results.response.body, symbolize_names: true) base64url_data = obj[:payload][:body][:data] base64url_data ||= obj[:payload][:parts].first[:body][:data] base64url_data ||= obj[:payload][:parts].first[:parts].first[:body][:data] headers = obj[:payload][:headers] mail = SendGmail::Objects::Mail.new mail.subject = pickup_contents(headers, 'Subject') mail.from = pickup_contents(headers, 'From') mail.date = Time.parse(pickup_contents(headers, 'Date')) mail.body = Base64.urlsafe_decode64(base64url_data).force_encoding('UTF-8') mail end |
#mail_id_list(query, _user_id = 'me', next_page_token = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/send_gmail/mail_list.rb', line 3 def mail_id_list(query, _user_id = 'me', next_page_token = nil) parameters = { userId: 'me', q: query } parameters[:pageToken] = next_page_token unless next_page_token.nil? results = @client.execute!( api_method: @gmail_api.users..list, parameters: parameters ) { mail_id_list: results.data..map(&:id), next_page_token: results.data.nextPageToken } end |
#mail_list(query, user_id = 'me', next_page_token = nil) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/send_gmail/mail_list.rb', line 18 def mail_list(query, user_id = 'me', next_page_token = nil) parameters = { userId: 'me', q: query } parameters[:pageToken] = next_page_token unless next_page_token.nil? results = @client.execute!( api_method: @gmail_api.users..list, parameters: parameters ) { mail_list: results.data..map { |m| mail_detail(m.id, user_id) }, next_page_token: results.data.nextPageToken } end |
#pickup_contents(headers, name) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/send_gmail/mail_list.rb', line 52 def pickup_contents(headers, name) content = headers.select { |e| e[:name] == name } return nil if content.nil? return nil if content.first.nil? content.first[:value] end |