inbox 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -2
  3. data/README.md +38 -34
  4. data/Rakefile +2 -1
  5. data/VERSION +1 -1
  6. data/inbox.gemspec +7 -196
  7. data/lib/calendar.rb +16 -0
  8. data/lib/draft.rb +2 -2
  9. data/lib/event.rb +14 -0
  10. data/lib/file.rb +1 -1
  11. data/lib/inbox.rb +10 -10
  12. data/lib/message.rb +2 -9
  13. data/lib/restful_model.rb +4 -4
  14. data/lib/restful_model_collection.rb +7 -6
  15. data/lib/thread.rb +2 -8
  16. data/spec/inbox_spec.rb +3 -3
  17. data/spec/restful_model_spec.rb +3 -2
  18. metadata +6 -668
  19. data/example/Gemfile +0 -39
  20. data/example/README.rdoc +0 -28
  21. data/example/Rakefile +0 -6
  22. data/example/app/assets/images/.keep +0 -0
  23. data/example/app/assets/javascripts/application.js +0 -16
  24. data/example/app/assets/javascripts/welcome.js.coffee +0 -3
  25. data/example/app/assets/stylesheets/application.css +0 -15
  26. data/example/app/assets/stylesheets/welcome.css.scss +0 -3
  27. data/example/app/controllers/application_controller.rb +0 -61
  28. data/example/app/controllers/concerns/.keep +0 -0
  29. data/example/app/helpers/application_helper.rb +0 -2
  30. data/example/app/helpers/welcome_helper.rb +0 -2
  31. data/example/app/mailers/.keep +0 -0
  32. data/example/app/models/.keep +0 -0
  33. data/example/app/models/concerns/.keep +0 -0
  34. data/example/app/views/layouts/application.html.erb +0 -14
  35. data/example/app/views/welcome/index.html.erb +0 -2
  36. data/example/bin/bundle +0 -3
  37. data/example/bin/rails +0 -8
  38. data/example/bin/rake +0 -8
  39. data/example/bin/spring +0 -18
  40. data/example/config/application.rb +0 -23
  41. data/example/config/boot.rb +0 -4
  42. data/example/config/database.yml +0 -25
  43. data/example/config/environment.rb +0 -5
  44. data/example/config/environments/development.rb +0 -39
  45. data/example/config/environments/production.rb +0 -82
  46. data/example/config/environments/test.rb +0 -41
  47. data/example/config/initializers/assets.rb +0 -8
  48. data/example/config/initializers/backtrace_silencers.rb +0 -7
  49. data/example/config/initializers/cookies_serializer.rb +0 -3
  50. data/example/config/initializers/filter_parameter_logging.rb +0 -4
  51. data/example/config/initializers/inflections.rb +0 -16
  52. data/example/config/initializers/mime_types.rb +0 -4
  53. data/example/config/initializers/session_store.rb +0 -3
  54. data/example/config/initializers/wrap_parameters.rb +0 -14
  55. data/example/config/locales/en.yml +0 -23
  56. data/example/config/routes.rb +0 -59
  57. data/example/config/secrets.yml +0 -22
  58. data/example/config.ru +0 -4
  59. data/example/db/seeds.rb +0 -7
  60. data/example/lib/assets/.keep +0 -0
  61. data/example/lib/tasks/.keep +0 -0
  62. data/example/log/.keep +0 -0
  63. data/example/public/404.html +0 -67
  64. data/example/public/422.html +0 -67
  65. data/example/public/500.html +0 -66
  66. data/example/public/favicon.ico +0 -0
  67. data/example/public/robots.txt +0 -5
  68. data/example/test/controllers/.keep +0 -0
  69. data/example/test/controllers/welcome_controller_test.rb +0 -9
  70. data/example/test/fixtures/.keep +0 -0
  71. data/example/test/fixtures/users.yml +0 -11
  72. data/example/test/helpers/.keep +0 -0
  73. data/example/test/helpers/welcome_helper_test.rb +0 -4
  74. data/example/test/integration/.keep +0 -0
  75. data/example/test/mailers/.keep +0 -0
  76. data/example/test/models/.keep +0 -0
  77. data/example/test/models/user_test.rb +0 -7
  78. data/example/test/test_helper.rb +0 -10
  79. data/example/vendor/assets/javascripts/.keep +0 -0
  80. data/example/vendor/assets/stylesheets/.keep +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abe056c1b96943e3cddcb3b5ec95094ad07088f8
4
- data.tar.gz: 71e10c1505539c294f862265799608ec30b839aa
3
+ metadata.gz: 066c3c8d975efa84261f5a3662b9b5edbac20720
4
+ data.tar.gz: 8e3a86ca4e62a8283c260f62172823c8fd595457
5
5
  SHA512:
6
- metadata.gz: 36b4a7954a470d684038e56992795608fa244ca9a121b07b7d064aa60e76e689970ef270b34c7357a1c1bb21fb1aaeeb53ce5700dbfecd7bfd4e973c0b519a82
7
- data.tar.gz: 42224c275e7beff0a84543729f49c82b102728599c5660a6132b91af541e4f0a78884dd286b55b98ccf1bde40156a39ca511ea62a5ed0d16df94b4e2fad3a300
6
+ metadata.gz: dbf83648e4b7ecd211713d393164108e0a71af6a41a4cc278d750f147e871d02e94f5c9d3f6031a01b7f3b9cd89808bce81b9be6903032e31b1bbe2f464364de
7
+ data.tar.gz: d88e9c6ac927ca0d4726c558d97c9381fb2d56c1f15dbbd2d5acda276718468c02b76d09282810d3d92e999f87b70172fb5821befbbe6cd0f53b708f13e3c285
data/Gemfile CHANGED
@@ -1,8 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
- gem 'rest-client', '~> 1.6.8'
5
- gem 'activesupport', '~> 4.1.4'
4
+ gem 'rest-client', '~> 1.6'
6
5
 
7
6
  # Add dependencies to develop your gem here.
8
7
  # Include everything needed to run rake, tests, features, etc.
data/README.md CHANGED
@@ -22,7 +22,7 @@ You don't need to use this repo unless you're planning to modify the gem. If you
22
22
  - rest-client, json
23
23
 
24
24
 
25
- ## Example
25
+ ## Example Rails App
26
26
 
27
27
  A small example Rails app is included in the `example` directory. You can run the sample app to see how an authentication flow might be implemented.
28
28
 
@@ -36,46 +36,46 @@ A small example Rails app is included in the `example` directory. You can run th
36
36
 
37
37
  ### App ID and Secret
38
38
 
39
- Before you can interact with the Inbox API, you need to register for the Inbox developer program at [http://www.inboxapp.com/](http://www.inboxapp.com/). After you've created a developer account, you can create a new application to generate an App ID / Secret pair.
39
+ Before you can interact with the Inbox API, you need to register for the Inbox Developer Program at [http://www.inboxapp.com/](http://www.inboxapp.com/). After you've created a developer account, you can create a new application to generate an App ID / Secret pair.
40
+
41
+ Generally, you should store your App ID and Secret into environment variables to avoid adding them to source control. That said, in the example project and code snippets below, the values were added to `config/environments/development.rb` for convenience.
42
+
40
43
 
41
44
  ### Authentication
42
45
 
43
- The Inbox API uses server-side (three-legged) OAuth, and the Ruby gem provides a convenience methods that simplify the OAuth process. For more information about authenticating with Inbox, visit the [Developer Documentation](https://www.inboxapp.com/docs/gettingstarted-hosted#authenticating).
46
+ The Inbox API uses server-side (three-legged) OAuth, and the Ruby gem provides convenience methods that simplify the OAuth process. For more information about authenticating with Inbox, visit the [Developer Documentation](https://www.inboxapp.com/docs/gettingstarted-hosted#authenticating).
44
47
 
45
48
  **Step 1: Redirect the user to Inbox:**
46
49
 
47
- ```
48
- :::ruby
50
+ ```ruby
49
51
  require 'inbox'
50
52
 
51
53
  def login
52
- inbox = Inbox::API.new(config.inbox_app_id, config.inbox_app_secret, nil)
53
- # The email address of the user you want to authenticate
54
- user_email = 'ben@inboxapp.com'
55
-
56
- # This URL must be registered with your application in the developer portal
57
- callback_url = url_for(:action => 'login_callback')
58
-
59
- redirect_to inbox.url_for_authentication(callback_url, user_email)
54
+ inbox = Inbox::API.new(config.inbox_app_id, config.inbox_app_secret, nil)
55
+ # The email address of the user you want to authenticate
56
+ user_email = 'ben@inboxapp.com'
57
+
58
+ # This URL must be registered with your application in the developer portal
59
+ callback_url = url_for(:action => 'login_callback')
60
+
61
+ redirect_to inbox.url_for_authentication(callback_url, user_email)
60
62
  end
61
63
  ```
62
64
 
63
65
  **Step 2: Handle the Authentication Response:**
64
66
 
65
- ```
66
- :::ruby
67
+ ```ruby
67
68
  def login_callback
68
- inbox = Inbox::API.new(config.inbox_app_id, config.inbox_app_secret, nil)
69
- inbox_token = inbox.auth_token_for_code(params[:code])
69
+ inbox = Inbox::API.new(config.inbox_app_id, config.inbox_app_secret, nil)
70
+ inbox_token = inbox.token_for_code(params[:code])
70
71
 
71
- # Save the inbox_token to the current session, save it to the user model, etc.
72
+ # Save the inbox_token to the current session, save it to the user model, etc.
72
73
  end
73
74
  ```
74
75
 
75
76
  ### Fetching Namespaces
76
77
 
77
- ```
78
- :::ruby
78
+ ```ruby
79
79
  inbox = Inbox::API.new(config.inbox_app_id, config.inbox_app_secret, inbox_token)
80
80
 
81
81
  # Get the first namespace
@@ -89,8 +89,7 @@ puts namespace.provider
89
89
 
90
90
  ### Fetching Threads
91
91
 
92
- ```
93
- :::ruby
92
+ ```ruby
94
93
  # Fetch the first thread
95
94
  thread = namespace.threads.first
96
95
 
@@ -121,11 +120,10 @@ threads = namespace.threads.where(:any_email => 'ben@inboxapp.com').all
121
120
 
122
121
  ### Working with Threads
123
122
 
124
- ```
125
- :::ruby
123
+ ```ruby
126
124
  # List thread participants
127
125
  thread.participants.each do |participant|
128
- puts participant['email']
126
+ puts participant['email']
129
127
  end
130
128
 
131
129
  # Mark as read
@@ -137,22 +135,21 @@ thread.archive!
137
135
  # Add or remove arbitrary tags
138
136
  tagsToAdd = ['inbox', 'cfa1233ef123acd12']
139
137
  tagsToRemove = []
140
- thread.update_tags!(tagsToAd, tagsToRemove)
138
+ thread.update_tags!(tagsToAdd, tagsToRemove)
141
139
 
142
140
  # List messages
143
141
  thread.messages.each do |message|
144
- puts message.subject
142
+ puts message.subject
145
143
  end
146
144
  ```
147
145
 
148
146
 
149
147
  ### Working with Files
150
148
 
151
- ```
152
- :::ruby
149
+ ```ruby
153
150
  # List files
154
151
  namespace.files.each do |file|
155
- puts file.filename
152
+ puts file.filename
156
153
  end
157
154
 
158
155
  # Create a new file
@@ -164,8 +161,7 @@ file.save!
164
161
 
165
162
  Each of the primary collections (contacts, messages, etc.) behave the same way as `threads`. For example, finding messages with a filter is similar to finding threads:
166
163
 
167
- ```
168
- :::ruby
164
+ ```ruby
169
165
  messages = namespace.messages.where(:to => 'ben@inboxapp.com`).all
170
166
  ```
171
167
 
@@ -173,8 +169,7 @@ The `where` method accepts a hash of filters, as documented in the [Inbox Filter
173
169
 
174
170
  ### Creating and Sending Drafts
175
171
 
176
- ```
177
- :::ruby
172
+ ```ruby
178
173
  # Create a new draft
179
174
  draft = namespace.drafts.build(
180
175
  :to => [{:name => 'Ben Gotow', :email => 'ben@inboxapp.com'}],
@@ -196,6 +191,15 @@ draft.save!
196
191
  draft.send!
197
192
  ```
198
193
 
194
+ ## Open-Source Sync Engine
195
+
196
+ The [Inbox Sync Engine](http://github.com/inboxapp/inbox) is open-source, and you can also use the Ruby gem with the open-source API. Since the open-source API provides no authentication or security, connecting to it is simple. When you instantiate the Inbox object, provide nil for the App ID, App Secret, and API Token, and pass the fully-qualified address to your copy of the sync engine:
197
+
198
+ ```ruby
199
+ require 'inbox'
200
+ inbox = Inbox::API.new(nil, nil, nil, 'http://localhost:5555/')
201
+ ```
202
+
199
203
 
200
204
  ## Contributing
201
205
 
data/Rakefile CHANGED
@@ -21,7 +21,8 @@ Jeweler::Tasks.new do |gem|
21
21
  gem.description = %Q{Gem for interacting with the Inbox API that allows you to create and publish one-page websites, subscribe to web hooks and receive events when those pages are interacted with. Visit http://www.populr.me/ for more information. }
22
22
  gem.email = "ben@inboxapp.com"
23
23
  gem.authors = ["Ben Gotow"]
24
- # dependencies defined in Gemfile
24
+ gem.files.exclude 'example/**/.keep'
25
+ gem.files.exclude 'example/**/*'
25
26
  end
26
27
  Jeweler::RubygemsDotOrgTasks.new
27
28
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
data/inbox.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "inbox"
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ben Gotow"]
12
- s.date = "2014-08-19"
12
+ s.date = "2014-09-08"
13
13
  s.description = "Gem for interacting with the Inbox API that allows you to create and publish one-page websites, subscribe to web hooks and receive events when those pages are interacted with. Visit http://www.populr.me/ for more information. "
14
14
  s.email = "ben@inboxapp.com"
15
15
  s.extra_rdoc_files = [
@@ -23,71 +23,11 @@ Gem::Specification.new do |s|
23
23
  "Rakefile",
24
24
  "VERSION",
25
25
  "example/.gitignore",
26
- "example/Gemfile",
27
- "example/README.rdoc",
28
- "example/Rakefile",
29
- "example/app/assets/images/.keep",
30
- "example/app/assets/javascripts/application.js",
31
- "example/app/assets/javascripts/welcome.js.coffee",
32
- "example/app/assets/stylesheets/application.css",
33
- "example/app/assets/stylesheets/welcome.css.scss",
34
- "example/app/controllers/application_controller.rb",
35
- "example/app/controllers/concerns/.keep",
36
- "example/app/helpers/application_helper.rb",
37
- "example/app/helpers/welcome_helper.rb",
38
- "example/app/mailers/.keep",
39
- "example/app/models/.keep",
40
- "example/app/models/concerns/.keep",
41
- "example/app/views/layouts/application.html.erb",
42
- "example/app/views/welcome/index.html.erb",
43
- "example/bin/bundle",
44
- "example/bin/rails",
45
- "example/bin/rake",
46
- "example/bin/spring",
47
- "example/config.ru",
48
- "example/config/application.rb",
49
- "example/config/boot.rb",
50
- "example/config/database.yml",
51
- "example/config/environment.rb",
52
- "example/config/environments/development.rb",
53
- "example/config/environments/production.rb",
54
- "example/config/environments/test.rb",
55
- "example/config/initializers/assets.rb",
56
- "example/config/initializers/backtrace_silencers.rb",
57
- "example/config/initializers/cookies_serializer.rb",
58
- "example/config/initializers/filter_parameter_logging.rb",
59
- "example/config/initializers/inflections.rb",
60
- "example/config/initializers/mime_types.rb",
61
- "example/config/initializers/session_store.rb",
62
- "example/config/initializers/wrap_parameters.rb",
63
- "example/config/locales/en.yml",
64
- "example/config/routes.rb",
65
- "example/config/secrets.yml",
66
- "example/db/seeds.rb",
67
- "example/lib/assets/.keep",
68
- "example/lib/tasks/.keep",
69
- "example/log/.keep",
70
- "example/public/404.html",
71
- "example/public/422.html",
72
- "example/public/500.html",
73
- "example/public/favicon.ico",
74
- "example/public/robots.txt",
75
- "example/test/controllers/.keep",
76
- "example/test/controllers/welcome_controller_test.rb",
77
- "example/test/fixtures/.keep",
78
- "example/test/fixtures/users.yml",
79
- "example/test/helpers/.keep",
80
- "example/test/helpers/welcome_helper_test.rb",
81
- "example/test/integration/.keep",
82
- "example/test/mailers/.keep",
83
- "example/test/models/.keep",
84
- "example/test/models/user_test.rb",
85
- "example/test/test_helper.rb",
86
- "example/vendor/assets/javascripts/.keep",
87
- "example/vendor/assets/stylesheets/.keep",
88
26
  "inbox.gemspec",
27
+ "lib/calendar.rb",
89
28
  "lib/contact.rb",
90
29
  "lib/draft.rb",
30
+ "lib/event.rb",
91
31
  "lib/file.rb",
92
32
  "lib/inbox.rb",
93
33
  "lib/message.rb",
@@ -113,50 +53,7 @@ Gem::Specification.new do |s|
113
53
 
114
54
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
115
55
  s.add_runtime_dependency(%q<inbox>, [">= 0"])
116
- s.add_runtime_dependency(%q<rest-client>, ["~> 1.6.8"])
117
- s.add_runtime_dependency(%q<activesupport>, ["~> 4.1.4"])
118
- s.add_development_dependency(%q<rspec>, [">= 0"])
119
- s.add_development_dependency(%q<rake>, [">= 0"])
120
- s.add_development_dependency(%q<rspec>, [">= 0"])
121
- s.add_development_dependency(%q<shoulda>, [">= 0"])
122
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
123
- s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
124
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
125
- s.add_development_dependency(%q<pry>, [">= 0"])
126
- s.add_development_dependency(%q<pry-nav>, [">= 0"])
127
- s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
128
- s.add_development_dependency(%q<rspec>, [">= 0"])
129
- s.add_development_dependency(%q<shoulda>, [">= 0"])
130
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
131
- s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
132
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
133
- s.add_development_dependency(%q<pry>, [">= 0"])
134
- s.add_development_dependency(%q<pry-nav>, [">= 0"])
135
- s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
136
- s.add_development_dependency(%q<rspec>, [">= 0"])
137
- s.add_development_dependency(%q<shoulda>, [">= 0"])
138
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
139
- s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
140
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
141
- s.add_development_dependency(%q<pry>, [">= 0"])
142
- s.add_development_dependency(%q<pry-nav>, [">= 0"])
143
- s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
144
- s.add_development_dependency(%q<rspec>, [">= 0"])
145
- s.add_development_dependency(%q<shoulda>, [">= 0"])
146
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
147
- s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
148
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
149
- s.add_development_dependency(%q<pry>, [">= 0"])
150
- s.add_development_dependency(%q<pry-nav>, [">= 0"])
151
- s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
152
- s.add_development_dependency(%q<rspec>, [">= 0"])
153
- s.add_development_dependency(%q<shoulda>, [">= 0"])
154
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
155
- s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
156
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
157
- s.add_development_dependency(%q<pry>, [">= 0"])
158
- s.add_development_dependency(%q<pry-nav>, [">= 0"])
159
- s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
56
+ s.add_runtime_dependency(%q<rest-client>, ["~> 1.6"])
160
57
  s.add_development_dependency(%q<rspec>, [">= 0"])
161
58
  s.add_development_dependency(%q<shoulda>, [">= 0"])
162
59
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
@@ -183,50 +80,7 @@ Gem::Specification.new do |s|
183
80
  s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
184
81
  else
185
82
  s.add_dependency(%q<inbox>, [">= 0"])
186
- s.add_dependency(%q<rest-client>, ["~> 1.6.8"])
187
- s.add_dependency(%q<activesupport>, ["~> 4.1.4"])
188
- s.add_dependency(%q<rspec>, [">= 0"])
189
- s.add_dependency(%q<rake>, [">= 0"])
190
- s.add_dependency(%q<rspec>, [">= 0"])
191
- s.add_dependency(%q<shoulda>, [">= 0"])
192
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
193
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
194
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
195
- s.add_dependency(%q<pry>, [">= 0"])
196
- s.add_dependency(%q<pry-nav>, [">= 0"])
197
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
198
- s.add_dependency(%q<rspec>, [">= 0"])
199
- s.add_dependency(%q<shoulda>, [">= 0"])
200
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
201
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
202
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
203
- s.add_dependency(%q<pry>, [">= 0"])
204
- s.add_dependency(%q<pry-nav>, [">= 0"])
205
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
206
- s.add_dependency(%q<rspec>, [">= 0"])
207
- s.add_dependency(%q<shoulda>, [">= 0"])
208
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
209
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
210
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
211
- s.add_dependency(%q<pry>, [">= 0"])
212
- s.add_dependency(%q<pry-nav>, [">= 0"])
213
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
214
- s.add_dependency(%q<rspec>, [">= 0"])
215
- s.add_dependency(%q<shoulda>, [">= 0"])
216
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
217
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
218
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
219
- s.add_dependency(%q<pry>, [">= 0"])
220
- s.add_dependency(%q<pry-nav>, [">= 0"])
221
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
222
- s.add_dependency(%q<rspec>, [">= 0"])
223
- s.add_dependency(%q<shoulda>, [">= 0"])
224
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
225
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
226
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
227
- s.add_dependency(%q<pry>, [">= 0"])
228
- s.add_dependency(%q<pry-nav>, [">= 0"])
229
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
83
+ s.add_dependency(%q<rest-client>, ["~> 1.6"])
230
84
  s.add_dependency(%q<rspec>, [">= 0"])
231
85
  s.add_dependency(%q<shoulda>, [">= 0"])
232
86
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
@@ -254,50 +108,7 @@ Gem::Specification.new do |s|
254
108
  end
255
109
  else
256
110
  s.add_dependency(%q<inbox>, [">= 0"])
257
- s.add_dependency(%q<rest-client>, ["~> 1.6.8"])
258
- s.add_dependency(%q<activesupport>, ["~> 4.1.4"])
259
- s.add_dependency(%q<rspec>, [">= 0"])
260
- s.add_dependency(%q<rake>, [">= 0"])
261
- s.add_dependency(%q<rspec>, [">= 0"])
262
- s.add_dependency(%q<shoulda>, [">= 0"])
263
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
264
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
265
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
266
- s.add_dependency(%q<pry>, [">= 0"])
267
- s.add_dependency(%q<pry-nav>, [">= 0"])
268
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
269
- s.add_dependency(%q<rspec>, [">= 0"])
270
- s.add_dependency(%q<shoulda>, [">= 0"])
271
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
272
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
273
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
274
- s.add_dependency(%q<pry>, [">= 0"])
275
- s.add_dependency(%q<pry-nav>, [">= 0"])
276
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
277
- s.add_dependency(%q<rspec>, [">= 0"])
278
- s.add_dependency(%q<shoulda>, [">= 0"])
279
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
280
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
281
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
282
- s.add_dependency(%q<pry>, [">= 0"])
283
- s.add_dependency(%q<pry-nav>, [">= 0"])
284
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
285
- s.add_dependency(%q<rspec>, [">= 0"])
286
- s.add_dependency(%q<shoulda>, [">= 0"])
287
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
288
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
289
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
290
- s.add_dependency(%q<pry>, [">= 0"])
291
- s.add_dependency(%q<pry-nav>, [">= 0"])
292
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
293
- s.add_dependency(%q<rspec>, [">= 0"])
294
- s.add_dependency(%q<shoulda>, [">= 0"])
295
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
296
- s.add_dependency(%q<bundler>, [">= 1.3.5"])
297
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
298
- s.add_dependency(%q<pry>, [">= 0"])
299
- s.add_dependency(%q<pry-nav>, [">= 0"])
300
- s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
111
+ s.add_dependency(%q<rest-client>, ["~> 1.6"])
301
112
  s.add_dependency(%q<rspec>, [">= 0"])
302
113
  s.add_dependency(%q<shoulda>, [">= 0"])
303
114
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
data/lib/calendar.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'restful_model'
2
+ require 'event'
3
+
4
+ module Inbox
5
+ class Calendar < RestfulModel
6
+
7
+ attr_accessor :name
8
+ attr_accessor :description
9
+ attr_accessor :event_ids
10
+
11
+ def events
12
+ @events ||= RestfulModelCollection.new(Event, @_api, @namespace, {:calendar_id=>@id})
13
+ end
14
+
15
+ end
16
+ end
data/lib/draft.rb CHANGED
@@ -3,7 +3,7 @@ require 'restful_model'
3
3
  module Inbox
4
4
  class Draft < Message
5
5
 
6
- attr_accessor :reply_to_thread
6
+ attr_accessor :thread_id
7
7
  attr_accessor :state
8
8
 
9
9
  def attach(file)
@@ -14,7 +14,7 @@ module Inbox
14
14
  def send!
15
15
  save! unless @id
16
16
 
17
- url = @_api.url_for_path("/n/#{@namespace}/send")
17
+ url = @_api.url_for_path("/n/#{@namespace_id}/send")
18
18
  data = {:draft_id => @id}
19
19
 
20
20
  ::RestClient.post(url, data.to_json, :content_type => :json) do |response, request, result|
data/lib/event.rb ADDED
@@ -0,0 +1,14 @@
1
+ require 'restful_model'
2
+
3
+ module Inbox
4
+ class Event < RestfulModel
5
+
6
+ attr_accessor :title
7
+ attr_accessor :description
8
+ attr_accessor :location
9
+ attr_accessor :read_only
10
+ attr_accessor :participants
11
+ attr_accessor :when
12
+
13
+ end
14
+ end
data/lib/file.rb CHANGED
@@ -7,7 +7,7 @@ module Inbox
7
7
  attr_accessor :filename
8
8
  attr_accessor :content_type
9
9
  attr_accessor :is_embedded
10
- attr_accessor :message
10
+ attr_accessor :message_id
11
11
 
12
12
  # For uploading the file
13
13
  attr_accessor :file
data/lib/inbox.rb CHANGED
@@ -39,14 +39,14 @@ module Inbox
39
39
 
40
40
  class API
41
41
  attr_accessor :api_server
42
- attr_reader :auth_token
42
+ attr_reader :access_token
43
43
  attr_reader :app_id
44
44
  attr_reader :app_secret
45
45
 
46
- def initialize(app_id, app_secret, auth_token = nil, api_server = 'https://api.inboxapp.com')
46
+ def initialize(app_id, app_secret, access_token = nil, api_server = 'https://api.inboxapp.com')
47
47
  raise "When overriding the Inbox API server address, you must include https://" unless api_server.include?('://')
48
48
  @api_server = api_server
49
- @auth_token = auth_token
49
+ @access_token = access_token
50
50
  @app_secret = app_secret
51
51
  @app_id = app_id
52
52
 
@@ -56,20 +56,20 @@ module Inbox
56
56
  end
57
57
 
58
58
  def url_for_path(path)
59
- raise NoAuthToken.new if @auth_token == nil
59
+ raise NoAuthToken.new if @access_token == nil
60
60
  protocol, domain = @api_server.split('//')
61
- "#{protocol}//#{@auth_token}:@#{domain}#{path}"
61
+ "#{protocol}//#{@access_token}:@#{domain}#{path}"
62
62
  end
63
63
 
64
64
  def url_for_authentication(redirect_uri, login_hint = '')
65
- "https://beta.inboxapp.com/oauth/authorize?client_id=#{@app_id}&response_type=code&scope=email&login_hint=#{login_hint}&redirect_uri=#{redirect_uri}"
65
+ "https://api.inboxapp.com/oauth/authorize?client_id=#{@app_id}&response_type=code&scope=email&login_hint=#{login_hint}&redirect_uri=#{redirect_uri}"
66
66
  end
67
67
 
68
- def set_auth_token(token)
69
- @auth_token = token
68
+ def set_access_token(token)
69
+ @access_token = token
70
70
  end
71
71
 
72
- def auth_token_for_code(code)
72
+ def token_for_code(code)
73
73
  data = {
74
74
  'client_id' => app_id,
75
75
  'client_secret' => app_secret,
@@ -92,4 +92,4 @@ module Inbox
92
92
 
93
93
  end
94
94
 
95
- end
95
+ end
data/lib/message.rb CHANGED
@@ -16,21 +16,14 @@ module Inbox
16
16
 
17
17
  def inflate(json)
18
18
  super
19
- @thread_id = json[:thread]
20
- @file_ids = json[:files] || []
19
+ @file_ids ||= []
21
20
  @to ||= []
22
21
  @cc ||= []
23
22
  @bcc ||= []
24
23
  end
25
24
 
26
- def as_json()
27
- json = super
28
- json[:files] = json[:file_ids]
29
- json
30
- end
31
-
32
25
  def files
33
- @files ||= RestfulModelCollection.new(File, @_api, @namespace, {:message=>@id})
26
+ @files ||= RestfulModelCollection.new(File, @_api, @namespace_id, {:message_id=>@id})
34
27
  end
35
28
 
36
29
  end
data/lib/restful_model.rb CHANGED
@@ -2,16 +2,16 @@ module Inbox
2
2
  class RestfulModel
3
3
 
4
4
  attr_accessor :id
5
- attr_accessor :namespace
5
+ attr_accessor :namespace_id
6
6
  attr_accessor :created_at
7
7
 
8
8
  def self.collection_name
9
9
  "#{self.to_s.downcase}s".split('::').last
10
10
  end
11
11
 
12
- def initialize(api, namespace = nil)
12
+ def initialize(api, namespace_id = nil)
13
13
  raise StandardError.new unless api.class <= Inbox::API
14
- @namespace = namespace
14
+ @namespace_id = namespace_id
15
15
  @_api = api
16
16
  end
17
17
 
@@ -37,7 +37,7 @@ module Inbox
37
37
 
38
38
  def url(action = "")
39
39
  action = "/#{action}" unless action.empty?
40
- @_api.url_for_path("/n/#{@namespace}/#{self.class.collection_name}/#{id}#{action}")
40
+ @_api.url_for_path("/n/#{@namespace_id}/#{self.class.collection_name}/#{id}#{action}")
41
41
  end
42
42
 
43
43
  def as_json(options = {})
@@ -5,11 +5,11 @@ module Inbox
5
5
 
6
6
  attr_accessor :filters
7
7
 
8
- def initialize(model_class, api, namespace, filters = {})
8
+ def initialize(model_class, api, namespace_id, filters = {})
9
9
  raise StandardError.new unless api.class <= Inbox::API
10
10
  @model_class = model_class
11
11
  @filters = filters
12
- @namespace = namespace
12
+ @namespace_id = namespace_id
13
13
  @_api = api
14
14
  end
15
15
 
@@ -36,7 +36,8 @@ module Inbox
36
36
 
37
37
  def where(filters)
38
38
  collection = self.clone
39
- collection.filters = filters
39
+ collection.filters ||= {}
40
+ collection.filters.merge!(filters)
40
41
  collection
41
42
  end
42
43
 
@@ -71,7 +72,7 @@ module Inbox
71
72
  for key in args.keys
72
73
  args[key.to_s] = args[key]
73
74
  end
74
- model = @model_class.new(@_api, @namespace)
75
+ model = @model_class.new(@_api, @namespace_id)
75
76
  model.inflate(args)
76
77
  model
77
78
  end
@@ -95,7 +96,7 @@ module Inbox
95
96
  private
96
97
 
97
98
  def url
98
- prefix = "/n/#{@namespace}" if @namespace
99
+ prefix = "/n/#{@namespace_id}" if @namespace_id
99
100
  @_api.url_for_path("#{prefix}/#{@model_class.collection_name}")
100
101
  end
101
102
 
@@ -120,7 +121,7 @@ module Inbox
120
121
  filters[:limit] = limit
121
122
  models = []
122
123
 
123
- RestClient.get("#{url}?#{filters.to_query}"){ |response,request,result|
124
+ RestClient.get(url, :params => filters){ |response,request,result|
124
125
  items = Inbox.interpret_response(result, response, {:expected_class => Array})
125
126
  models = inflate_collection(items)
126
127
  }