inbox 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -2
- data/README.md +38 -34
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/inbox.gemspec +7 -196
- data/lib/calendar.rb +16 -0
- data/lib/draft.rb +2 -2
- data/lib/event.rb +14 -0
- data/lib/file.rb +1 -1
- data/lib/inbox.rb +10 -10
- data/lib/message.rb +2 -9
- data/lib/restful_model.rb +4 -4
- data/lib/restful_model_collection.rb +7 -6
- data/lib/thread.rb +2 -8
- data/spec/inbox_spec.rb +3 -3
- data/spec/restful_model_spec.rb +3 -2
- metadata +6 -668
- data/example/Gemfile +0 -39
- data/example/README.rdoc +0 -28
- data/example/Rakefile +0 -6
- data/example/app/assets/images/.keep +0 -0
- data/example/app/assets/javascripts/application.js +0 -16
- data/example/app/assets/javascripts/welcome.js.coffee +0 -3
- data/example/app/assets/stylesheets/application.css +0 -15
- data/example/app/assets/stylesheets/welcome.css.scss +0 -3
- data/example/app/controllers/application_controller.rb +0 -61
- data/example/app/controllers/concerns/.keep +0 -0
- data/example/app/helpers/application_helper.rb +0 -2
- data/example/app/helpers/welcome_helper.rb +0 -2
- data/example/app/mailers/.keep +0 -0
- data/example/app/models/.keep +0 -0
- data/example/app/models/concerns/.keep +0 -0
- data/example/app/views/layouts/application.html.erb +0 -14
- data/example/app/views/welcome/index.html.erb +0 -2
- data/example/bin/bundle +0 -3
- data/example/bin/rails +0 -8
- data/example/bin/rake +0 -8
- data/example/bin/spring +0 -18
- data/example/config/application.rb +0 -23
- data/example/config/boot.rb +0 -4
- data/example/config/database.yml +0 -25
- data/example/config/environment.rb +0 -5
- data/example/config/environments/development.rb +0 -39
- data/example/config/environments/production.rb +0 -82
- data/example/config/environments/test.rb +0 -41
- data/example/config/initializers/assets.rb +0 -8
- data/example/config/initializers/backtrace_silencers.rb +0 -7
- data/example/config/initializers/cookies_serializer.rb +0 -3
- data/example/config/initializers/filter_parameter_logging.rb +0 -4
- data/example/config/initializers/inflections.rb +0 -16
- data/example/config/initializers/mime_types.rb +0 -4
- data/example/config/initializers/session_store.rb +0 -3
- data/example/config/initializers/wrap_parameters.rb +0 -14
- data/example/config/locales/en.yml +0 -23
- data/example/config/routes.rb +0 -59
- data/example/config/secrets.yml +0 -22
- data/example/config.ru +0 -4
- data/example/db/seeds.rb +0 -7
- data/example/lib/assets/.keep +0 -0
- data/example/lib/tasks/.keep +0 -0
- data/example/log/.keep +0 -0
- data/example/public/404.html +0 -67
- data/example/public/422.html +0 -67
- data/example/public/500.html +0 -66
- data/example/public/favicon.ico +0 -0
- data/example/public/robots.txt +0 -5
- data/example/test/controllers/.keep +0 -0
- data/example/test/controllers/welcome_controller_test.rb +0 -9
- data/example/test/fixtures/.keep +0 -0
- data/example/test/fixtures/users.yml +0 -11
- data/example/test/helpers/.keep +0 -0
- data/example/test/helpers/welcome_helper_test.rb +0 -4
- data/example/test/integration/.keep +0 -0
- data/example/test/mailers/.keep +0 -0
- data/example/test/models/.keep +0 -0
- data/example/test/models/user_test.rb +0 -7
- data/example/test/test_helper.rb +0 -10
- data/example/vendor/assets/javascripts/.keep +0 -0
- data/example/vendor/assets/stylesheets/.keep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 066c3c8d975efa84261f5a3662b9b5edbac20720
|
4
|
+
data.tar.gz: 8e3a86ca4e62a8283c260f62172823c8fd595457
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbf83648e4b7ecd211713d393164108e0a71af6a41a4cc278d750f147e871d02e94f5c9d3f6031a01b7f3b9cd89808bce81b9be6903032e31b1bbe2f464364de
|
7
|
+
data.tar.gz: d88e9c6ac927ca0d4726c558d97c9381fb2d56c1f15dbbd2d5acda276718468c02b76d09282810d3d92e999f87b70172fb5821befbbe6cd0f53b708f13e3c285
|
data/Gemfile
CHANGED
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
|
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
|
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
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
69
|
-
|
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
|
-
|
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
|
-
|
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!(
|
138
|
+
thread.update_tags!(tagsToAdd, tagsToRemove)
|
141
139
|
|
142
140
|
# List messages
|
143
141
|
thread.messages.each do |message|
|
144
|
-
|
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
|
-
|
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
|
-
|
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.
|
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.
|
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
|
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
|
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
|
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
|
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 :
|
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/#{@
|
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
data/lib/file.rb
CHANGED
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 :
|
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,
|
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
|
-
@
|
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 @
|
59
|
+
raise NoAuthToken.new if @access_token == nil
|
60
60
|
protocol, domain = @api_server.split('//')
|
61
|
-
"#{protocol}//#{@
|
61
|
+
"#{protocol}//#{@access_token}:@#{domain}#{path}"
|
62
62
|
end
|
63
63
|
|
64
64
|
def url_for_authentication(redirect_uri, login_hint = '')
|
65
|
-
"https://
|
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
|
69
|
-
@
|
68
|
+
def set_access_token(token)
|
69
|
+
@access_token = token
|
70
70
|
end
|
71
71
|
|
72
|
-
def
|
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
|
-
@
|
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, @
|
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 :
|
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,
|
12
|
+
def initialize(api, namespace_id = nil)
|
13
13
|
raise StandardError.new unless api.class <= Inbox::API
|
14
|
-
@
|
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/#{@
|
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,
|
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
|
-
@
|
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
|
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, @
|
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/#{@
|
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(
|
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
|
}
|