gmail-api-ruby 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca0dec5a93a2fea9ba7f123a754223fd95223927
4
- data.tar.gz: 960c0557eb25285f20ef32604fe9b2edbdb65089
3
+ metadata.gz: ddd910aaa7588db1a4e5c11e8987373c7a5ec105
4
+ data.tar.gz: d0bff8547f5c158b11b27bdc1b8850b3a9b6ab41
5
5
  SHA512:
6
- metadata.gz: 8356e4f896b379832668a19d8298314010c717ed6b4501b79f5acba90e808b66bf707e1125dc00fe230b99bc38f895a91db60aede0297e0d4d909936ec4fcd04
7
- data.tar.gz: 500aa55382e68a673a5149b8718ef1e5ac1e12ce9cec14d0c4fe3630fcf9bc6ae5982ef35b0f546150954f691d072a249ef462fffa61ce51f62d68504aed06f5
6
+ metadata.gz: 02b011d121cf6f8479f526ea45df0d89d2b04487eb0fdb0e20e9f22d2fabbc3cf78d5f5eea716caea16035958b4a588951f4074ae95dcde7485cb5e49b891093
7
+ data.tar.gz: 1d4a289c6f538b19426b5baa5bd7682ab34e00cd96621236351673bf93de7621f4076dde1b4b5e6db9e4b6b17b59fd0d7322430da458aaf96f58522550138fca
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.2.0
5
+ - 2.0.0
6
+ - 2.1.0
7
+ - 2.1.2
data/CHANGELOG.md CHANGED
@@ -11,3 +11,7 @@
11
11
 
12
12
  * No change, only gem description
13
13
 
14
+ ## 0.0.5 / 2015-01-15
15
+
16
+ * updated dependencies
17
+
data/README.md CHANGED
@@ -1,8 +1,13 @@
1
- # GMail for Ruby
1
+ # Gmail for Ruby
2
2
 
3
- A Rubyesque interface to Google's GMail, with all the tools you'll need. Search,
3
+ A Ruby interface to Gmail API: Search,
4
4
  read and send multipart emails, archive, mark as read/unread, delete emails,
5
- and manage labels. Everything goes through Gmail API (and not throught IMAP or SMTP protocols)
5
+ and manage labels. Everything goes through Gmail API (and not through IMAP or SMTP protocols)
6
+
7
+ [![Gem Version](https://badge.fury.io/rb/gmail-api-ruby.svg)](http://badge.fury.io/rb/gmail-api-ruby)
8
+ [![Build Status](https://travis-ci.org/jhk753/gmail-ruby-api.svg)](https://travis-ci.org/jhk753/gmail-ruby-api)
9
+ [![Dependency Status](https://gemnasium.com/jhk753/gmail-ruby-api.svg)](https://gemnasium.com/jhk753/gmail-ruby-api)
10
+
6
11
 
7
12
  # Notice
8
13
 
data/gmail.gemspec CHANGED
@@ -16,17 +16,18 @@ Gem::Specification.new do |s|
16
16
  s.homepage = "http://github.com/jhk753/gmail-ruby-api"
17
17
 
18
18
  # runtime dependencies
19
+ s.required_ruby_version = '>= 1.9.3'
19
20
  s.add_dependency "mime", ">= 0.1"
20
21
  s.add_dependency "mail", ">= 2.2.1"
21
22
  s.add_dependency 'google-api-client'
22
- s.add_dependency "hooks"
23
- s.add_dependency "hashie"
23
+ s.add_dependency "hooks", ">=0.4.0"
24
+ s.add_dependency "hashie", ">=3.3.2"
24
25
 
25
26
  # development dependencies
26
27
  s.add_development_dependency "rake"
27
28
  s.add_development_dependency "test-unit"
28
- s.add_development_dependency('mocha', '~> 0.13.2')
29
- s.add_development_dependency('shoulda', '~> 3.4.0')
29
+ s.add_development_dependency('mocha', '~> 1.0.0')
30
+ s.add_development_dependency('shoulda', '~> 3.5.0')
30
31
  s.add_development_dependency "gem-release"
31
32
 
32
33
  s.files = `git ls-files`.split("\n")
data/lib/gmail.rb CHANGED
@@ -107,7 +107,7 @@ module Gmail
107
107
  raise "error code: #{response.error},body: #{response.body})"
108
108
  end
109
109
 
110
- r = Util.symbolize_names(response)
110
+ r = Gmail::Util.symbolize_names(response)
111
111
  if r[:error]
112
112
  raise "#{r[:error]}"
113
113
  end
data/lib/gmail/draft.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  module Gmail
2
2
  class Draft < APIResource
3
- include Gmail::Base::List
4
- include Gmail::Base::Create
5
- include Gmail::Base::Delete
6
- include Gmail::Base::Get
7
- include Gmail::Base::Update
3
+ include Base::List
4
+ include Base::Create
5
+ include Base::Delete
6
+ include Base::Get
7
+ include Base::Update
8
8
 
9
9
  def message
10
- if @values.message.is_a?(Gmail::Message)
10
+ if @values.message.is_a?(Message)
11
11
  @values.message
12
12
  else
13
13
  @values.message = Util.convert_to_gmail_object(to_hash[:message], key="message")
@@ -45,7 +45,7 @@ module Gmail
45
45
 
46
46
  def deliver
47
47
  response = Gmail.request(self.class.base_method.to_h['gmail.users.drafts.send'],{},{id: id})
48
- Gmail::Message.get(response[:id])
48
+ Message.get(response[:id])
49
49
  end
50
50
 
51
51
 
@@ -40,7 +40,7 @@ module Gmail
40
40
  end
41
41
 
42
42
  def detailed
43
- if self.class == Gmail::GmailObject
43
+ if self.class == GmailObject
44
44
  raise "Can't detail a generic GmailObject. It needs to be a Thread, Message, Draft or Label"
45
45
  end
46
46
 
@@ -48,7 +48,7 @@ module Gmail
48
48
  end
49
49
 
50
50
  def refresh
51
- if self.class == Gmail::GmailObject
51
+ if self.class == GmailObject
52
52
  raise "Can't refresh a generic GmailObject. It needs to be a Thread, Message, Draft or Label"
53
53
  end
54
54
  @values = self.class.get(id).values
data/lib/gmail/label.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  module Gmail
2
2
  class Label < APIResource
3
- include Gmail::Base::List
4
- include Gmail::Base::Create
5
- include Gmail::Base::Delete
6
- include Gmail::Base::Get
7
- include Gmail::Base::Update
3
+ include Base::List
4
+ include Base::Create
5
+ include Base::Delete
6
+ include Base::Get
7
+ include Base::Update
8
8
 
9
9
  def save
10
10
  update(to_hash)
@@ -20,32 +20,32 @@ module Gmail
20
20
 
21
21
  boxes.each do |method|
22
22
  define_singleton_method method do
23
- Gmail::Label.get(method.to_s.upcase)
23
+ Label.get(method.to_s.upcase)
24
24
  end
25
25
  end
26
26
 
27
27
  def messages filters={}
28
28
  filters = {labelIds: [id]}.merge(filters)
29
29
  filters[:labelIds] = filters[:labelIds] | [id]
30
- Gmail::Message.all(filters)
30
+ Message.all(filters)
31
31
  end
32
32
 
33
33
  def unread_messages
34
34
  if messagesUnread == 0
35
35
  []
36
36
  else
37
- Gmail::Message.all({labelIds: [id, "UNREAD"]})
37
+ Message.all({labelIds: [id, "UNREAD"]})
38
38
  end
39
39
  end
40
40
 
41
41
  def threads filters={}
42
42
  filters = {labelIds: [id]}.merge(filters)
43
43
  filters[:labelIds] = filters[:labelIds] | [id]
44
- Gmail::Thread.all(filters)
44
+ Thread.all(filters)
45
45
  end
46
46
 
47
47
  def unread_threads
48
- Gmail::Thread.all({labelIds: [id, "UNREAD"]})
48
+ Thread.all({labelIds: [id, "UNREAD"]})
49
49
  end
50
50
 
51
51
  end
data/lib/gmail/message.rb CHANGED
@@ -1,31 +1,31 @@
1
1
  # encoding: utf-8
2
2
  module Gmail
3
3
  class Message < APIResource
4
- include Gmail::Base::List
5
- include Gmail::Base::Delete
6
- include Gmail::Base::Get
7
- include Gmail::Base::Modify
8
- include Gmail::Base::Trash
4
+ include Base::List
5
+ include Base::Delete
6
+ include Base::Get
7
+ include Base::Modify
8
+ include Base::Trash
9
9
 
10
10
  after_initialize :set_basics
11
11
 
12
12
  def thread
13
- Gmail::Thread.get(threadId)
13
+ Thread.get(threadId)
14
14
  end
15
15
 
16
16
  def create_draft
17
- Gmail::Draft.create(message: msg_parameters)
17
+ Draft.create(message: msg_parameters)
18
18
  end
19
19
 
20
20
  def deliver!
21
21
  response = Gmail.request(self.class.base_method.to_h['gmail.users.messages.send'],{}, msg_parameters)
22
- @values = Gmail::Message.get(response[:id]).values
22
+ @values = Message.get(response[:id]).values
23
23
  self
24
24
  end
25
25
 
26
26
  def deliver
27
27
  response = Gmail.request(self.class.base_method.to_h['gmail.users.messages.send'],{}, msg_parameters)
28
- Gmail::Message.get(response[:id])
28
+ Message.get(response[:id])
29
29
  end
30
30
 
31
31
  def reply_all_with msg
data/lib/gmail/thread.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  module Gmail
2
2
  class Thread < APIResource
3
- include Gmail::Base::List
4
- include Gmail::Base::Delete
5
- include Gmail::Base::Get
6
- include Gmail::Base::Modify
7
- include Gmail::Base::Trash
3
+ include Base::List
4
+ include Base::Delete
5
+ include Base::Get
6
+ include Base::Modify
7
+ include Base::Trash
8
8
 
9
9
  def messages
10
10
 
11
11
  if @values.messages.is_a? Array
12
- if @values.messages.first.is_a? Gmail::Message
12
+ if @values.messages.first.is_a? Message
13
13
  @values.messages
14
14
  else
15
15
  @values.messages = Util.convert_to_gmail_object(to_hash[:messages], key="message")
data/lib/gmail/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gmail
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end # Gmail
@@ -27,19 +27,13 @@ module Gmail
27
27
 
28
28
  end
29
29
 
30
- should "not recursively call to_hash on GmailObject" do
30
+ should "recursively call to_hash on GmailObject" do
31
31
  nested = Gmail::GmailObject.new({ :id => 7, :foo => 'bar' })
32
- obj = Gmail::GmailObject.new({ :id => 1, :nested => nested })
33
- expected_hash = { :id => 1, :nested => nested }
32
+ obj = Gmail::GmailObject.new({ :id => 1})
33
+ obj.nested = nested
34
+ expected_hash = { :id => 1, :nested => {:id => 7, :foo => 'bar'} }
34
35
  assert_equal expected_hash, obj.to_hash
35
36
  end
36
37
 
37
- should "recursively call to_hash on its value" do
38
- nested = { :id => 7, :foo => 'bar' }
39
- obj = Gmail::GmailObject.new({ :id => 1, :nested => nested })
40
- expected_hash = { :id => 1, :nested => nested }
41
- assert_equal 7, obj.nested.id
42
- assert_equal expected_hash, obj.to_hash
43
- end
44
38
  end
45
39
  end
@@ -5,11 +5,11 @@ module Gmail
5
5
  class UtilTest < Test::Unit::TestCase
6
6
 
7
7
  should "Symbolize Name should work properly" do
8
- assert_equal(({test1: "test"}), Gmail::Util.symbolize_names({"test1": "test"}))
8
+ assert_equal(({:test1=> "test"}), Gmail::Util.symbolize_names({"test1"=>'test'}))
9
9
  m =Gmail::Message.new test_message
10
10
  assert_equal m, Gmail::Util.symbolize_names(m)
11
- assert_equal(({test: {nested:[{coucou: "1", coucou2: "2"}]}}), Gmail::Util.symbolize_names({"test": {"nested":[{"coucou": "1", "coucou2": "2"}]}}))
12
- assert_equal [{coucou: "1", coucou2: "2"}], Gmail::Util.symbolize_names([{"coucou": "1", "coucou2": "2"}])
11
+ assert_equal(({test: {nested:[{coucou: "1", coucou2: "2"}]}}), Gmail::Util.symbolize_names({"test"=>{"nested"=>[{"coucou"=>"1","coucou2"=>"2"}]}}))
12
+ assert_equal [{coucou: "1", coucou2: "2"}], Gmail::Util.symbolize_names([{"coucou"=>"1", "coucou2"=>"2"}])
13
13
  end
14
14
 
15
15
  #testing of convert_to_gmail_object is not necessary as it is tested through all other test files
data/test/test_data.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  module Gmail
2
3
  module TestData
3
4
  def test_response(body, code=200)
@@ -12,88 +13,7 @@ module Gmail
12
13
  end
13
14
 
14
15
  def test_draft(params={})
15
- {
16
- "id": "1490204870554280932",
17
- "message": {
18
- "id": "14ae456f2ff1e3e4",
19
- "threadId": "14ae456f2ff1e3e4",
20
- "labelIds": [
21
- "DRAFT"
22
- ],
23
- "snippet": "sd Cordialement, Julie",
24
- "historyId": "227960",
25
- "payload": {
26
- "mimeType": "multipart/alternative",
27
- "filename": "",
28
- "headers": [
29
- {
30
- "name": "MIME-Version",
31
- "value": "1.0"
32
- },
33
- {
34
- "name": "Received",
35
- "value": "by 10.64.21.4 with HTTP; Tue, 13 Jan 2015 09:28:31 -0800 (PST)"
36
- },
37
- {
38
- "name": "Date",
39
- "value": "Tue, 13 Jan 2015 18:28:31 +0100"
40
- },
41
- {
42
- "name": "Message-ID",
43
- "value": "<CAFXNVWSNjE652y4nau3nbWeoJ7RD_UsybHWa9-L6vvRi9j3nFQ@mail.gmail.com>"
44
- },
45
- {
46
- "name": "Subject",
47
- "value": ""
48
- },
49
- {
50
- "name": "From",
51
- "value": "Julie Desk <julie@juliedesk.com>"
52
- },
53
- {
54
- "name": "Content-Type",
55
- "value": "multipart/alternative; boundary=f46d042abf34a36bd9050c8bf335"
56
- }
57
- ],
58
- "body": {
59
- "size": 0
60
- },
61
- "parts": [
62
- {
63
- "partId": "0",
64
- "mimeType": "text/plain",
65
- "filename": "",
66
- "headers": [
67
- {
68
- "name": "Content-Type",
69
- "value": "text/plain; charset=UTF-8"
70
- }
71
- ],
72
- "body": {
73
- "size": 28,
74
- "data": "c2QNCkNvcmRpYWxlbWVudCwNCg0KSnVsaWUNCg=="
75
- }
76
- },
77
- {
78
- "partId": "1",
79
- "mimeType": "text/html",
80
- "filename": "",
81
- "headers": [
82
- {
83
- "name": "Content-Type",
84
- "value": "text/html; charset=UTF-8"
85
- }
86
- ],
87
- "body": {
88
- "size": 154,
89
- "data": "PGRpdiBkaXI9Imx0ciI-c2Q8YnIgY2xlYXI9ImFsbCI-PGRpdj48ZGl2IGNsYXNzPSJnbWFpbF9zaWduYXR1cmUiPjxkaXYgZGlyPSJsdHIiPkNvcmRpYWxlbWVudCw8ZGl2Pjxicj48L2Rpdj48ZGl2Pkp1bGllPC9kaXY-PC9kaXY-PC9kaXY-PC9kaXY-DQo8L2Rpdj4NCg=="
90
- }
91
- }
92
- ]
93
- },
94
- "sizeEstimate": 710
95
- }
96
- }.merge(params)
16
+ {:id=>"1490204870554280932", :message=>{:id=>"14ae456f2ff1e3e4", :threadId=>"14ae456f2ff1e3e4", :labelIds=>["DRAFT"], :snippet=>"sd Cordialement, Julie", :historyId=>"227960", :payload=>{:mimeType=>"multipart/alternative", :filename=>"", :headers=>[{:name=>"MIME-Version", :value=>"1.0"}, {:name=>"Received", :value=>"by 10.64.21.4 with HTTP; Tue, 13 Jan 2015 09:28:31 -0800 (PST)"}, {:name=>"Date", :value=>"Tue, 13 Jan 2015 18:28:31 +0100"}, {:name=>"Message-ID", :value=>"<CAFXNVWSNjE652y4nau3nbWeoJ7RD_UsybHWa9-L6vvRi9j3nFQ@mail.gmail.com>"}, {:name=>"Subject", :value=>""}, {:name=>"From", :value=>"Julie Desk <julie@juliedesk.com>"}, {:name=>"Content-Type", :value=>"multipart/alternative; boundary=f46d042abf34a36bd9050c8bf335"}], :body=>{:size=>0}, :parts=>[{:partId=>"0", :mimeType=>"text/plain", :filename=>"", :headers=>[{:name=>"Content-Type", :value=>"text/plain; charset=UTF-8"}], :body=>{:size=>28, :data=>"c2QNCkNvcmRpYWxlbWVudCwNCg0KSnVsaWUNCg=="}}, {:partId=>"1", :mimeType=>"text/html", :filename=>"", :headers=>[{:name=>"Content-Type", :value=>"text/html; charset=UTF-8"}], :body=>{:size=>154, :data=>"PGRpdiBkaXI9Imx0ciI-c2Q8YnIgY2xlYXI9ImFsbCI-PGRpdj48ZGl2IGNsYXNzPSJnbWFpbF9zaWduYXR1cmUiPjxkaXYgZGlyPSJsdHIiPkNvcmRpYWxlbWVudCw8ZGl2Pjxicj48L2Rpdj48ZGl2Pkp1bGllPC9kaXY-PC9kaXY-PC9kaXY-PC9kaXY-DQo8L2Rpdj4NCg=="}}]}, :sizeEstimate=>710}} .merge(params)
97
17
 
98
18
  end
99
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gmail-api-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julien Hobeika
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.4.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.4.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashie
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 3.3.2
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 3.3.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -114,28 +114,28 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.13.2
117
+ version: 1.0.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.13.2
124
+ version: 1.0.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: shoulda
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 3.4.0
131
+ version: 3.5.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 3.4.0
138
+ version: 3.5.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: gem-release
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +160,7 @@ extensions: []
160
160
  extra_rdoc_files: []
161
161
  files:
162
162
  - ".gitignore"
163
+ - ".travis.yml"
163
164
  - CHANGELOG.md
164
165
  - Gemfile
165
166
  - LICENSE
@@ -205,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
206
  requirements:
206
207
  - - ">="
207
208
  - !ruby/object:Gem::Version
208
- version: '0'
209
+ version: 1.9.3
209
210
  required_rubygems_version: !ruby/object:Gem::Requirement
210
211
  requirements:
211
212
  - - ">="