inbox 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +18 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +162 -74
  5. data/Rakefile +35 -30
  6. data/VERSION +1 -0
  7. data/example/.gitignore +16 -0
  8. data/example/Gemfile +39 -0
  9. data/example/README.rdoc +28 -0
  10. data/{test/dummy → example}/Rakefile +1 -2
  11. data/{app/views/inbox/emails/index.html.erb → example/app/assets/images/.keep} +0 -0
  12. data/example/app/assets/javascripts/application.js +16 -0
  13. data/example/app/assets/javascripts/welcome.js.coffee +3 -0
  14. data/example/app/assets/stylesheets/application.css +15 -0
  15. data/example/app/assets/stylesheets/welcome.css.scss +3 -0
  16. data/example/app/controllers/application_controller.rb +61 -0
  17. data/{test/dummy/db/development.sqlite3 → example/app/controllers/concerns/.keep} +0 -0
  18. data/{test/dummy → example}/app/helpers/application_helper.rb +0 -0
  19. data/example/app/helpers/welcome_helper.rb +2 -0
  20. data/{test/dummy/db/production.sqlite3 → example/app/mailers/.keep} +0 -0
  21. data/{test/dummy/db/test.sqlite3 → example/app/models/.keep} +0 -0
  22. data/{test/dummy/log/test.log → example/app/models/concerns/.keep} +0 -0
  23. data/example/app/views/layouts/application.html.erb +14 -0
  24. data/example/app/views/welcome/index.html.erb +2 -0
  25. data/example/bin/bundle +3 -0
  26. data/example/bin/rails +8 -0
  27. data/example/bin/rake +8 -0
  28. data/example/bin/spring +18 -0
  29. data/{test/dummy → example}/config.ru +1 -1
  30. data/example/config/application.rb +23 -0
  31. data/example/config/boot.rb +4 -0
  32. data/{test/dummy → example}/config/database.yml +8 -8
  33. data/example/config/environment.rb +5 -0
  34. data/example/config/environments/development.rb +39 -0
  35. data/example/config/environments/production.rb +82 -0
  36. data/example/config/environments/test.rb +41 -0
  37. data/example/config/initializers/assets.rb +8 -0
  38. data/{test/dummy → example}/config/initializers/backtrace_silencers.rb +1 -1
  39. data/example/config/initializers/cookies_serializer.rb +3 -0
  40. data/example/config/initializers/filter_parameter_logging.rb +4 -0
  41. data/example/config/initializers/inflections.rb +16 -0
  42. data/{test/dummy → example}/config/initializers/mime_types.rb +0 -1
  43. data/example/config/initializers/session_store.rb +3 -0
  44. data/{test/dummy → example}/config/initializers/wrap_parameters.rb +6 -6
  45. data/example/config/locales/en.yml +23 -0
  46. data/example/config/routes.rb +59 -0
  47. data/example/config/secrets.yml +22 -0
  48. data/example/db/seeds.rb +7 -0
  49. data/{test/dummy/public/favicon.ico → example/lib/assets/.keep} +0 -0
  50. data/example/lib/tasks/.keep +0 -0
  51. data/example/log/.keep +0 -0
  52. data/example/public/404.html +67 -0
  53. data/example/public/422.html +67 -0
  54. data/example/public/500.html +66 -0
  55. data/example/public/favicon.ico +0 -0
  56. data/example/public/robots.txt +5 -0
  57. data/example/test/controllers/.keep +0 -0
  58. data/example/test/controllers/welcome_controller_test.rb +9 -0
  59. data/example/test/fixtures/.keep +0 -0
  60. data/example/test/fixtures/users.yml +11 -0
  61. data/example/test/helpers/.keep +0 -0
  62. data/example/test/helpers/welcome_helper_test.rb +4 -0
  63. data/example/test/integration/.keep +0 -0
  64. data/example/test/mailers/.keep +0 -0
  65. data/example/test/models/.keep +0 -0
  66. data/{test/integration/navigation_test.rb → example/test/models/user_test.rb} +1 -4
  67. data/example/test/test_helper.rb +10 -0
  68. data/example/vendor/assets/javascripts/.keep +0 -0
  69. data/example/vendor/assets/stylesheets/.keep +0 -0
  70. data/inbox.gemspec +327 -0
  71. data/lib/contact.rb +10 -0
  72. data/lib/draft.rb +28 -0
  73. data/lib/file.rb +31 -0
  74. data/lib/inbox.rb +81 -20
  75. data/lib/message.rb +37 -0
  76. data/lib/namespace.rb +51 -0
  77. data/lib/restful_model.rb +76 -0
  78. data/lib/restful_model_collection.rb +131 -0
  79. data/lib/tag.rb +9 -0
  80. data/lib/thread.rb +60 -0
  81. data/lib/version.rb +3 -0
  82. data/spec/inbox_spec.rb +79 -0
  83. data/spec/restful_model_spec.rb +18 -0
  84. data/spec/spec_helper.rb +1 -0
  85. data/tasks/rspec.rake +3 -0
  86. metadata +1038 -181
  87. data/MIT-LICENSE +0 -20
  88. data/app/assets/images/inbox/results_bg.png +0 -0
  89. data/app/assets/images/inbox/tree_bg.png +0 -0
  90. data/app/assets/javascripts/inbox/application.js +0 -8
  91. data/app/assets/javascripts/inbox/emails.js +0 -2
  92. data/app/assets/stylesheets/inbox/application.css +0 -7
  93. data/app/assets/stylesheets/inbox/emails.css +0 -59
  94. data/app/assets/stylesheets/inbox/panel.css.erb +0 -229
  95. data/app/assets/stylesheets/inbox/reset.css +0 -53
  96. data/app/controllers/inbox/application_controller.rb +0 -4
  97. data/app/controllers/inbox/emails_controller.rb +0 -52
  98. data/app/helpers/inbox/application_helper.rb +0 -4
  99. data/app/helpers/inbox/emails_helper.rb +0 -4
  100. data/app/mailers/inbox/email_mailer.rb +0 -11
  101. data/app/models/inbox/email.rb +0 -51
  102. data/app/views/inbox/emails/new.html.erb +0 -9
  103. data/app/views/inbox/emails/show.html.erb +0 -48
  104. data/app/views/layouts/inbox/application.html.erb +0 -15
  105. data/app/views/layouts/inbox/inbox.html.erb +0 -25
  106. data/config/routes.rb +0 -6
  107. data/lib/inbox/engine.rb +0 -9
  108. data/lib/inbox/version.rb +0 -3
  109. data/lib/tasks/inbox_tasks.rake +0 -4
  110. data/test/dummy/app/assets/javascripts/application.js +0 -9
  111. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  112. data/test/dummy/app/controllers/application_controller.rb +0 -3
  113. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  114. data/test/dummy/config/application.rb +0 -45
  115. data/test/dummy/config/boot.rb +0 -10
  116. data/test/dummy/config/environment.rb +0 -5
  117. data/test/dummy/config/environments/development.rb +0 -32
  118. data/test/dummy/config/environments/production.rb +0 -60
  119. data/test/dummy/config/environments/test.rb +0 -42
  120. data/test/dummy/config/initializers/inflections.rb +0 -10
  121. data/test/dummy/config/initializers/secret_token.rb +0 -7
  122. data/test/dummy/config/initializers/session_store.rb +0 -8
  123. data/test/dummy/config/locales/en.yml +0 -5
  124. data/test/dummy/config/routes.rb +0 -4
  125. data/test/dummy/log/development.log +0 -3641
  126. data/test/dummy/public/404.html +0 -26
  127. data/test/dummy/public/422.html +0 -26
  128. data/test/dummy/public/500.html +0 -26
  129. data/test/dummy/script/rails +0 -6
  130. data/test/dummy/tmp/cache/assets/C4D/8B0/sprockets%2F5e1b589842222e2ea0043890c2c84539 +0 -0
  131. data/test/dummy/tmp/cache/assets/C6F/5C0/sprockets%2F259fb59d511a70d46436201b6770a04a +0 -0
  132. data/test/dummy/tmp/cache/assets/CF2/F90/sprockets%2F5378bb2470df984ccf2643991a6e476d +0 -0
  133. data/test/dummy/tmp/cache/assets/D0B/330/sprockets%2F582a2b19d6be92a0393afa63894d721a +0 -0
  134. data/test/dummy/tmp/cache/assets/D1B/CE0/sprockets%2F09c9c18794df089e62443d3debb117e5 +0 -0
  135. data/test/dummy/tmp/cache/assets/D1D/BA0/sprockets%2F29888f599d35bb11e4a8183d6dc5e23a +0 -0
  136. data/test/dummy/tmp/cache/assets/D1F/600/sprockets%2Fdd3578c9bd0719efe092c59655a25c55 +0 -0
  137. data/test/dummy/tmp/cache/assets/D21/920/sprockets%2F85fd59fe11746a33f5f917a923d84be3 +0 -0
  138. data/test/dummy/tmp/cache/assets/D4D/FB0/sprockets%2Fd5743837e8babdab4825364c4ee86f73 +0 -0
  139. data/test/dummy/tmp/cache/assets/D4F/520/sprockets%2F88ecb483df9e177ee775202ba0691ec7 +0 -0
  140. data/test/dummy/tmp/cache/assets/D6E/300/sprockets%2Fcc54b61039f74d6b8a2a7d04ad9d77f0 +0 -0
  141. data/test/dummy/tmp/cache/assets/D74/390/sprockets%2F5eda33e637dd54ff6a27bb76c482a473 +0 -0
  142. data/test/dummy/tmp/cache/assets/D76/170/sprockets%2Ffa5e461b362e11c80d5fd9e877fb63e2 +0 -0
  143. data/test/dummy/tmp/cache/assets/D7F/2D0/sprockets%2F141c2c9cb5235c8d21a00fbc8d7a2ab1 +0 -0
  144. data/test/dummy/tmp/cache/assets/D84/AA0/sprockets%2F5e841fe9d79e3ebf4333be8842b77bc5 +0 -0
  145. data/test/dummy/tmp/cache/assets/DA0/520/sprockets%2Fb8e93a54478c1f1a0e750ef2cbf74f3c +0 -0
  146. data/test/dummy/tmp/cache/assets/DC1/520/sprockets%2Feb8cea402f0bf04560adcd0cb8807b88 +0 -0
  147. data/test/dummy/tmp/mails/1345541756.4616725 +0 -11
  148. data/test/functional/inbox/email_test.rb +0 -9
  149. data/test/functional/inbox/emails_controller_test.rb +0 -16
  150. data/test/inbox_test.rb +0 -7
  151. data/test/test_helper.rb +0 -10
  152. data/test/unit/helpers/inbox/emails_helper_test.rb +0 -6
File without changes
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class WelcomeHelperTest < ActionView::TestCase
4
+ end
File without changes
File without changes
File without changes
@@ -1,10 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
- class NavigationTest < ActionDispatch::IntegrationTest
4
- fixtures :all
5
-
3
+ class UserTest < ActiveSupport::TestCase
6
4
  # test "the truth" do
7
5
  # assert true
8
6
  # end
9
7
  end
10
-
@@ -0,0 +1,10 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
7
+ fixtures :all
8
+
9
+ # Add more helper methods to be used by all tests here...
10
+ end
File without changes
File without changes
data/inbox.gemspec ADDED
@@ -0,0 +1,327 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "inbox"
8
+ s.version = "0.3.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Ben Gotow"]
12
+ s.date = "2014-08-19"
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
+ s.email = "ben@inboxapp.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "LICENSE.txt",
22
+ "README.md",
23
+ "Rakefile",
24
+ "VERSION",
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
+ "inbox.gemspec",
89
+ "lib/contact.rb",
90
+ "lib/draft.rb",
91
+ "lib/file.rb",
92
+ "lib/inbox.rb",
93
+ "lib/message.rb",
94
+ "lib/namespace.rb",
95
+ "lib/restful_model.rb",
96
+ "lib/restful_model_collection.rb",
97
+ "lib/tag.rb",
98
+ "lib/thread.rb",
99
+ "lib/version.rb",
100
+ "spec/inbox_spec.rb",
101
+ "spec/restful_model_spec.rb",
102
+ "spec/spec_helper.rb",
103
+ "tasks/rspec.rake"
104
+ ]
105
+ s.homepage = "http://github.com/inboxapp/inbox-ruby"
106
+ s.licenses = ["MIT"]
107
+ s.require_paths = ["lib"]
108
+ s.rubygems_version = "2.0.14"
109
+ s.summary = "Gem for interacting with the Inbox API"
110
+
111
+ if s.respond_to? :specification_version then
112
+ s.specification_version = 4
113
+
114
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
115
+ 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"])
160
+ s.add_development_dependency(%q<rspec>, [">= 0"])
161
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
162
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
163
+ s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
164
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
165
+ s.add_development_dependency(%q<pry>, [">= 0"])
166
+ s.add_development_dependency(%q<pry-nav>, [">= 0"])
167
+ s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
168
+ s.add_development_dependency(%q<rspec>, [">= 0"])
169
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
170
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
171
+ s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
172
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
173
+ s.add_development_dependency(%q<pry>, [">= 0"])
174
+ s.add_development_dependency(%q<pry-nav>, [">= 0"])
175
+ s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
176
+ s.add_development_dependency(%q<rspec>, [">= 0"])
177
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
178
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
179
+ s.add_development_dependency(%q<bundler>, [">= 1.3.5"])
180
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
181
+ s.add_development_dependency(%q<pry>, [">= 0"])
182
+ s.add_development_dependency(%q<pry-nav>, [">= 0"])
183
+ s.add_development_dependency(%q<pry-stack_explorer>, [">= 0"])
184
+ else
185
+ 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"])
230
+ s.add_dependency(%q<rspec>, [">= 0"])
231
+ s.add_dependency(%q<shoulda>, [">= 0"])
232
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
233
+ s.add_dependency(%q<bundler>, [">= 1.3.5"])
234
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
235
+ s.add_dependency(%q<pry>, [">= 0"])
236
+ s.add_dependency(%q<pry-nav>, [">= 0"])
237
+ s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
238
+ s.add_dependency(%q<rspec>, [">= 0"])
239
+ s.add_dependency(%q<shoulda>, [">= 0"])
240
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
241
+ s.add_dependency(%q<bundler>, [">= 1.3.5"])
242
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
243
+ s.add_dependency(%q<pry>, [">= 0"])
244
+ s.add_dependency(%q<pry-nav>, [">= 0"])
245
+ s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
246
+ s.add_dependency(%q<rspec>, [">= 0"])
247
+ s.add_dependency(%q<shoulda>, [">= 0"])
248
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
249
+ s.add_dependency(%q<bundler>, [">= 1.3.5"])
250
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
251
+ s.add_dependency(%q<pry>, [">= 0"])
252
+ s.add_dependency(%q<pry-nav>, [">= 0"])
253
+ s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
254
+ end
255
+ else
256
+ 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"])
301
+ s.add_dependency(%q<rspec>, [">= 0"])
302
+ s.add_dependency(%q<shoulda>, [">= 0"])
303
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
304
+ s.add_dependency(%q<bundler>, [">= 1.3.5"])
305
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
306
+ s.add_dependency(%q<pry>, [">= 0"])
307
+ s.add_dependency(%q<pry-nav>, [">= 0"])
308
+ s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
309
+ s.add_dependency(%q<rspec>, [">= 0"])
310
+ s.add_dependency(%q<shoulda>, [">= 0"])
311
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
312
+ s.add_dependency(%q<bundler>, [">= 1.3.5"])
313
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
314
+ s.add_dependency(%q<pry>, [">= 0"])
315
+ s.add_dependency(%q<pry-nav>, [">= 0"])
316
+ s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
317
+ s.add_dependency(%q<rspec>, [">= 0"])
318
+ s.add_dependency(%q<shoulda>, [">= 0"])
319
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
320
+ s.add_dependency(%q<bundler>, [">= 1.3.5"])
321
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
322
+ s.add_dependency(%q<pry>, [">= 0"])
323
+ s.add_dependency(%q<pry-nav>, [">= 0"])
324
+ s.add_dependency(%q<pry-stack_explorer>, [">= 0"])
325
+ end
326
+ end
327
+
data/lib/contact.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'restful_model'
2
+
3
+ module Inbox
4
+ class Contact < RestfulModel
5
+
6
+ attr_accessor :name
7
+ attr_accessor :email
8
+
9
+ end
10
+ end
data/lib/draft.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'restful_model'
2
+
3
+ module Inbox
4
+ class Draft < Message
5
+
6
+ attr_accessor :reply_to_thread
7
+ attr_accessor :state
8
+
9
+ def attach(file)
10
+ file.save! unless file.id
11
+ @file_ids.push(file.id)
12
+ end
13
+
14
+ def send!
15
+ save! unless @id
16
+
17
+ url = @_api.url_for_path("/n/#{@namespace}/send")
18
+ data = {:draft_id => @id}
19
+
20
+ ::RestClient.post(url, data.to_json, :content_type => :json) do |response, request, result|
21
+ Inbox.interpret_response(result, response, :expected_class => Object)
22
+ end
23
+
24
+ self
25
+ end
26
+
27
+ end
28
+ end
data/lib/file.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'restful_model'
2
+
3
+ module Inbox
4
+ class File < RestfulModel
5
+
6
+ attr_accessor :size
7
+ attr_accessor :filename
8
+ attr_accessor :content_type
9
+ attr_accessor :is_embedded
10
+ attr_accessor :message
11
+
12
+ # For uploading the file
13
+ attr_accessor :file
14
+
15
+ def inflate(json)
16
+ super
17
+ content_type = json["content-type"] if json["content-type"]
18
+ end
19
+
20
+ def save!
21
+ ::RestClient.post(url, {:file => @file}) do |response, request, result|
22
+ json = Inbox.interpret_response(result, response, :expected_class => Object)
23
+ json = json[0] if (json.class == Array)
24
+ inflate(json)
25
+ end
26
+ self
27
+ end
28
+
29
+ end
30
+ end
31
+
data/lib/inbox.rb CHANGED
@@ -1,34 +1,95 @@
1
- require "inbox/engine"
2
- require 'fileutils'
3
- require 'pathname'
1
+ require 'version'
2
+ require 'rest-client'
3
+ require 'restful_model_collection'
4
+ require 'json'
5
+ require 'namespace'
4
6
 
5
7
  module Inbox
6
- class FileDelivery
7
- attr_reader :location
8
8
 
9
- def initialize(location)
10
- @location = location.freeze
9
+ class AccessDenied < StandardError; end
10
+ class ResourceNotFound < StandardError; end
11
+ class NoAuthToken < StandardError; end
12
+ class UnexpectedResponse < StandardError; end
13
+ class APIError < StandardError
14
+ attr_accessor :error_type
15
+ def initialize(type, error)
16
+ super(error)
17
+ self.error_type = type
11
18
  end
19
+ end
20
+
21
+ def self.interpret_response(result, result_content, options = {})
22
+ # Handle HTTP errors and RestClient errors
23
+ raise ResourceNotFound.new if result.code.to_i == 404
24
+ raise AccessDenied.new if result.code.to_i == 403
25
+
26
+ # Handle content expectation errors
27
+ raise UnexpectedResponse.new if options[:expected_class] && result_content.empty?
28
+ json = JSON.parse(result_content)
29
+ raise APIError.new(json['type'], json['message']) if json.is_a?(Hash) && json['type'] == 'api_error'
30
+ raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
31
+ raise UnexpectedResponse.new if options[:expected_class] && !json.is_a?(options[:expected_class])
32
+ json
33
+
34
+ rescue JSON::ParserError => e
35
+ # Handle parsing errors
36
+ raise UnexpectedResponse.new(e.message)
37
+ end
12
38
 
13
- def deliver!(mail)
14
- FileUtils.mkdir_p location
15
- location.join(filename = Time.now.to_f.to_s).open("w") do |f|
16
- f.write mail.encoded
39
+
40
+ class API
41
+ attr_accessor :api_server
42
+ attr_reader :auth_token
43
+ attr_reader :app_id
44
+ attr_reader :app_secret
45
+
46
+ def initialize(app_id, app_secret, auth_token = nil, api_server = 'https://api.inboxapp.com')
47
+ raise "When overriding the Inbox API server address, you must include https://" unless api_server.include?('://')
48
+ @api_server = api_server
49
+ @auth_token = auth_token
50
+ @app_secret = app_secret
51
+ @app_id = app_id
52
+
53
+ ::RestClient.add_before_execution_proc do |req, params|
54
+ req.add_field('X-Inbox-API-Wrapper', 'ruby')
17
55
  end
18
56
  end
19
57
 
20
- def deliveries
21
- location.each_child(false).map do |email_pathname|
22
- Mail.read( location.join( email_pathname ) )
23
- end
58
+ def url_for_path(path)
59
+ raise NoAuthToken.new if @auth_token == nil
60
+ protocol, domain = @api_server.split('//')
61
+ "#{protocol}//#{@auth_token}:@#{domain}#{path}"
24
62
  end
25
63
 
26
- def clear
27
- location.each_child(false).map do |email_pathname|
28
- location.join(email_pathname).delete
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}"
66
+ end
67
+
68
+ def set_auth_token(token)
69
+ @auth_token = token
70
+ end
71
+
72
+ def auth_token_for_code(code)
73
+ data = {
74
+ 'client_id' => app_id,
75
+ 'client_secret' => app_secret,
76
+ 'grant_type' => 'authorization_code',
77
+ 'code' => code
78
+ }
79
+
80
+ ::RestClient.get("#{@api_server}/oauth/token", {:params => data}) do |response, request, result|
81
+ json = Inbox.interpret_response(result, response, :expected_class => Object)
82
+ return json['access_token']
29
83
  end
30
84
  end
85
+
86
+ # Convenience Methods
87
+
88
+ def namespaces
89
+ @namespaces ||= RestfulModelCollection.new(Namespace, self, nil)
90
+ @namespaces
91
+ end
92
+
31
93
  end
32
94
 
33
- ActionMailer::Base.add_delivery_method :inbox, Inbox::FileDelivery, Pathname.new("#{Dir.tmpdir}/mails")
34
- end
95
+ end