instapaper 0.3.0 → 1.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +1 -1
  3. data/README.md +62 -38
  4. data/instapaper.gemspec +21 -30
  5. data/lib/instapaper.rb +0 -25
  6. data/lib/instapaper/api.rb +15 -0
  7. data/lib/instapaper/{client/account.rb → api/accounts.rb} +5 -5
  8. data/lib/instapaper/api/bookmarks.rb +77 -0
  9. data/lib/instapaper/{client/folder.rb → api/folders.rb} +12 -11
  10. data/lib/instapaper/api/highlights.rb +33 -0
  11. data/lib/instapaper/api/oauth.rb +17 -0
  12. data/lib/instapaper/bookmark.rb +21 -0
  13. data/lib/instapaper/bookmark_list.rb +20 -0
  14. data/lib/instapaper/client.rb +40 -28
  15. data/lib/instapaper/credentials.rb +12 -0
  16. data/lib/instapaper/error.rb +78 -0
  17. data/lib/instapaper/folder.rb +17 -0
  18. data/lib/instapaper/highlight.rb +16 -0
  19. data/lib/instapaper/http/headers.rb +45 -0
  20. data/lib/instapaper/http/qline_parser.rb +9 -0
  21. data/lib/instapaper/http/request.rb +84 -0
  22. data/lib/instapaper/http/utils.rb +67 -0
  23. data/lib/instapaper/user.rb +14 -0
  24. data/lib/instapaper/version.rb +1 -1
  25. metadata +63 -209
  26. data/.gemtest +0 -0
  27. data/.gitignore +0 -11
  28. data/.rspec +0 -3
  29. data/.travis.yml +0 -8
  30. data/.yardopts +0 -3
  31. data/Gemfile +0 -7
  32. data/Rakefile +0 -13
  33. data/lib/faraday/response/raise_http_1xxx.rb +0 -65
  34. data/lib/instapaper/authentication.rb +0 -32
  35. data/lib/instapaper/client/bookmark.rb +0 -81
  36. data/lib/instapaper/client/user.rb +0 -19
  37. data/lib/instapaper/configuration.rb +0 -88
  38. data/lib/instapaper/connection.rb +0 -35
  39. data/lib/instapaper/request.rb +0 -22
  40. data/spec/faraday/response_spec.rb +0 -22
  41. data/spec/fixtures/access_token.qline +0 -1
  42. data/spec/fixtures/bookmarks_add.json +0 -1
  43. data/spec/fixtures/bookmarks_archive.json +0 -1
  44. data/spec/fixtures/bookmarks_get_text.txt +0 -299
  45. data/spec/fixtures/bookmarks_list.json +0 -5
  46. data/spec/fixtures/bookmarks_move.json +0 -1
  47. data/spec/fixtures/bookmarks_star.json +0 -1
  48. data/spec/fixtures/bookmarks_unarchive.json +0 -1
  49. data/spec/fixtures/bookmarks_unstar.json +0 -1
  50. data/spec/fixtures/bookmarks_update_read_progress.json +0 -1
  51. data/spec/fixtures/folders_add.json +0 -1
  52. data/spec/fixtures/folders_delete.json +0 -1
  53. data/spec/fixtures/folders_list.json +0 -1
  54. data/spec/fixtures/folders_set_order.json +0 -1
  55. data/spec/fixtures/invalid_credentials.qline +0 -1
  56. data/spec/fixtures/verify_credentials.json +0 -1
  57. data/spec/instapaper/client/account_spec.rb +0 -27
  58. data/spec/instapaper/client/bookmark_spec.rb +0 -234
  59. data/spec/instapaper/client/folder_spec.rb +0 -89
  60. data/spec/instapaper/client/user_spec.rb +0 -36
  61. data/spec/instapaper/client_spec.rb +0 -65
  62. data/spec/instapaper_spec.rb +0 -85
  63. data/spec/spec_helper.rb +0 -52
@@ -0,0 +1,67 @@
1
+ require 'instapaper/http/request'
2
+
3
+ module Instapaper
4
+ module HTTP
5
+ module Utils
6
+ private
7
+
8
+ # @param path [String]
9
+ # @param options [Hash]
10
+ # @param klass [Class]
11
+ def perform_post_with_objects(path, options, klass)
12
+ perform_request_with_objects(:post, path, options, klass)
13
+ end
14
+
15
+ # @param path [String]
16
+ # @param options [Hash]
17
+ # @param klass [Class]
18
+ def perform_get_with_objects(path, options, klass)
19
+ perform_request_with_objects(:get, path, options, klass)
20
+ end
21
+
22
+ # @param request_method [Symbol]
23
+ # @param path [String]
24
+ # @param options [Hash]
25
+ # @param klass [Class]
26
+ def perform_request_with_objects(request_method, path, options, klass)
27
+ perform_request(request_method, path, options).collect do |element|
28
+ klass.new(coerce_hash(element))
29
+ end
30
+ end
31
+
32
+ # @param path [String]
33
+ # @param options [Hash]
34
+ # @param klass [Class]
35
+ def perform_post_with_object(path, options, klass)
36
+ perform_request_with_object(:post, path, options, klass)
37
+ end
38
+
39
+ # @param request_method [Symbol]
40
+ # @param path [String]
41
+ # @param options [Hash]
42
+ # @param klass [Class]
43
+ def perform_request_with_object(request_method, path, options, klass)
44
+ response = perform_request(request_method, path, options)
45
+ response = response.is_a?(Array) ? response.first : response
46
+ klass.new(coerce_hash(response))
47
+ end
48
+
49
+ # @param path [String]
50
+ # @param options [Hash]
51
+ def perform_post_with_unparsed_response(path, options)
52
+ perform_request(:post, path, options.merge(raw: true))
53
+ end
54
+
55
+ def perform_request(method, path, options)
56
+ Instapaper::HTTP::Request.new(self, method, path, options).perform
57
+ end
58
+
59
+ def coerce_hash(response)
60
+ if response.key?('hash')
61
+ response['instapaper_hash'] = response.delete('hash')
62
+ end
63
+ response
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,14 @@
1
+ require 'virtus'
2
+
3
+ module Instapaper
4
+ class User
5
+ include Virtus.value_object
6
+
7
+ values do
8
+ attribute :username, String
9
+ attribute :user_id, Integer
10
+ attribute :type, String
11
+ attribute :subscription_is_active, Axiom::Types::Boolean
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Instapaper
2
- VERSION = "0.3.0"
2
+ VERSION = '1.0.0.pre2'
3
3
  end
metadata CHANGED
@@ -1,297 +1,151 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: instapaper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 1.0.0.pre2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Steve Agalloco
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-28 00:00:00.000000000 Z
11
+ date: 2015-10-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rake
14
+ name: addressable
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0.9'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '0.9'
30
- - !ruby/object:Gem::Dependency
31
- name: rdiscount
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: '1.6'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '1.6'
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: '2.7'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '2.7'
62
- - !ruby/object:Gem::Dependency
63
- name: simplecov
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '0.5'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '0.5'
78
- - !ruby/object:Gem::Dependency
79
- name: yard
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: '0.7'
86
- type: :development
19
+ version: '2.3'
20
+ type: :runtime
87
21
  prerelease: false
88
22
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
23
  requirements:
91
- - - ~>
24
+ - - "~>"
92
25
  - !ruby/object:Gem::Version
93
- version: '0.7'
26
+ version: '2.3'
94
27
  - !ruby/object:Gem::Dependency
95
- name: json
28
+ name: http
96
29
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
30
  requirements:
99
- - - ! '>='
31
+ - - "~>"
100
32
  - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
33
+ version: '0.9'
34
+ type: :runtime
103
35
  prerelease: false
104
36
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
37
  requirements:
107
- - - ! '>='
38
+ - - "~>"
108
39
  - !ruby/object:Gem::Version
109
- version: '0'
40
+ version: '0.9'
110
41
  - !ruby/object:Gem::Dependency
111
- name: webmock
42
+ name: multi_json
112
43
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
44
  requirements:
115
- - - ~>
45
+ - - "~>"
116
46
  - !ruby/object:Gem::Version
117
- version: '1.7'
118
- type: :development
47
+ version: '1'
48
+ type: :runtime
119
49
  prerelease: false
120
50
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
51
  requirements:
123
- - - ~>
52
+ - - "~>"
124
53
  - !ruby/object:Gem::Version
125
- version: '1.7'
54
+ version: '1'
126
55
  - !ruby/object:Gem::Dependency
127
- name: faraday_middleware
56
+ name: simple_oauth
128
57
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
58
  requirements:
131
- - - ~>
59
+ - - "~>"
132
60
  - !ruby/object:Gem::Version
133
- version: '0.7'
61
+ version: '0.3'
134
62
  type: :runtime
135
63
  prerelease: false
136
64
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
65
  requirements:
139
- - - ~>
66
+ - - "~>"
140
67
  - !ruby/object:Gem::Version
141
- version: '0.7'
68
+ version: '0.3'
142
69
  - !ruby/object:Gem::Dependency
143
- name: multi_json
70
+ name: virtus
144
71
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
72
  requirements:
147
- - - ~>
73
+ - - "~>"
148
74
  - !ruby/object:Gem::Version
149
75
  version: '1'
150
76
  type: :runtime
151
77
  prerelease: false
152
78
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
79
  requirements:
155
- - - ~>
80
+ - - "~>"
156
81
  - !ruby/object:Gem::Version
157
82
  version: '1'
158
83
  - !ruby/object:Gem::Dependency
159
- name: rash
160
- requirement: !ruby/object:Gem::Requirement
161
- none: false
162
- requirements:
163
- - - ~>
164
- - !ruby/object:Gem::Version
165
- version: '0.3'
166
- type: :runtime
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ~>
172
- - !ruby/object:Gem::Version
173
- version: '0.3'
174
- - !ruby/object:Gem::Dependency
175
- name: simple_oauth
84
+ name: bundler
176
85
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
86
  requirements:
179
- - - ~>
87
+ - - "~>"
180
88
  - !ruby/object:Gem::Version
181
- version: '0.1'
182
- type: :runtime
89
+ version: '1.0'
90
+ type: :development
183
91
  prerelease: false
184
92
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
93
  requirements:
187
- - - ~>
94
+ - - "~>"
188
95
  - !ruby/object:Gem::Version
189
- version: '0.1'
190
- description: Ruby Instapaper Client
96
+ version: '1.0'
97
+ description: Ruby Client for Instapaper's Full API
191
98
  email: steve.agalloco@gmail.com
192
99
  executables: []
193
100
  extensions: []
194
101
  extra_rdoc_files: []
195
102
  files:
196
- - .gemtest
197
- - .gitignore
198
- - .rspec
199
- - .travis.yml
200
- - .yardopts
201
- - Gemfile
202
103
  - LICENSE.md
203
104
  - README.md
204
- - Rakefile
205
105
  - instapaper.gemspec
206
- - lib/faraday/response/raise_http_1xxx.rb
207
106
  - lib/instapaper.rb
208
- - lib/instapaper/authentication.rb
107
+ - lib/instapaper/api.rb
108
+ - lib/instapaper/api/accounts.rb
109
+ - lib/instapaper/api/bookmarks.rb
110
+ - lib/instapaper/api/folders.rb
111
+ - lib/instapaper/api/highlights.rb
112
+ - lib/instapaper/api/oauth.rb
113
+ - lib/instapaper/bookmark.rb
114
+ - lib/instapaper/bookmark_list.rb
209
115
  - lib/instapaper/client.rb
210
- - lib/instapaper/client/account.rb
211
- - lib/instapaper/client/bookmark.rb
212
- - lib/instapaper/client/folder.rb
213
- - lib/instapaper/client/user.rb
214
- - lib/instapaper/configuration.rb
215
- - lib/instapaper/connection.rb
216
- - lib/instapaper/request.rb
116
+ - lib/instapaper/credentials.rb
117
+ - lib/instapaper/error.rb
118
+ - lib/instapaper/folder.rb
119
+ - lib/instapaper/highlight.rb
120
+ - lib/instapaper/http/headers.rb
121
+ - lib/instapaper/http/qline_parser.rb
122
+ - lib/instapaper/http/request.rb
123
+ - lib/instapaper/http/utils.rb
124
+ - lib/instapaper/user.rb
217
125
  - lib/instapaper/version.rb
218
- - spec/faraday/response_spec.rb
219
- - spec/fixtures/access_token.qline
220
- - spec/fixtures/bookmarks_add.json
221
- - spec/fixtures/bookmarks_archive.json
222
- - spec/fixtures/bookmarks_get_text.txt
223
- - spec/fixtures/bookmarks_list.json
224
- - spec/fixtures/bookmarks_move.json
225
- - spec/fixtures/bookmarks_star.json
226
- - spec/fixtures/bookmarks_unarchive.json
227
- - spec/fixtures/bookmarks_unstar.json
228
- - spec/fixtures/bookmarks_update_read_progress.json
229
- - spec/fixtures/folders_add.json
230
- - spec/fixtures/folders_delete.json
231
- - spec/fixtures/folders_list.json
232
- - spec/fixtures/folders_set_order.json
233
- - spec/fixtures/invalid_credentials.qline
234
- - spec/fixtures/verify_credentials.json
235
- - spec/instapaper/client/account_spec.rb
236
- - spec/instapaper/client/bookmark_spec.rb
237
- - spec/instapaper/client/folder_spec.rb
238
- - spec/instapaper/client/user_spec.rb
239
- - spec/instapaper/client_spec.rb
240
- - spec/instapaper_spec.rb
241
- - spec/spec_helper.rb
242
- homepage: https://github.com/spagalloco/instapaper
243
- licenses: []
126
+ homepage: https://github.com/stve/instapaper
127
+ licenses:
128
+ - MIT
129
+ metadata: {}
244
130
  post_install_message:
245
131
  rdoc_options: []
246
132
  require_paths:
247
133
  - lib
248
134
  required_ruby_version: !ruby/object:Gem::Requirement
249
- none: false
250
135
  requirements:
251
- - - ! '>='
136
+ - - ">="
252
137
  - !ruby/object:Gem::Version
253
- version: '0'
254
- segments:
255
- - 0
256
- hash: -4088352479337253759
138
+ version: 2.0.0
257
139
  required_rubygems_version: !ruby/object:Gem::Requirement
258
- none: false
259
140
  requirements:
260
- - - ! '>='
141
+ - - ">"
261
142
  - !ruby/object:Gem::Version
262
- version: '0'
263
- segments:
264
- - 0
265
- hash: -4088352479337253759
143
+ version: 1.3.1
266
144
  requirements: []
267
145
  rubyforge_project:
268
- rubygems_version: 1.8.23
146
+ rubygems_version: 2.4.8
269
147
  signing_key:
270
- specification_version: 3
148
+ specification_version: 4
271
149
  summary: Ruby Instapaper Client
272
- test_files:
273
- - spec/faraday/response_spec.rb
274
- - spec/fixtures/access_token.qline
275
- - spec/fixtures/bookmarks_add.json
276
- - spec/fixtures/bookmarks_archive.json
277
- - spec/fixtures/bookmarks_get_text.txt
278
- - spec/fixtures/bookmarks_list.json
279
- - spec/fixtures/bookmarks_move.json
280
- - spec/fixtures/bookmarks_star.json
281
- - spec/fixtures/bookmarks_unarchive.json
282
- - spec/fixtures/bookmarks_unstar.json
283
- - spec/fixtures/bookmarks_update_read_progress.json
284
- - spec/fixtures/folders_add.json
285
- - spec/fixtures/folders_delete.json
286
- - spec/fixtures/folders_list.json
287
- - spec/fixtures/folders_set_order.json
288
- - spec/fixtures/invalid_credentials.qline
289
- - spec/fixtures/verify_credentials.json
290
- - spec/instapaper/client/account_spec.rb
291
- - spec/instapaper/client/bookmark_spec.rb
292
- - spec/instapaper/client/folder_spec.rb
293
- - spec/instapaper/client/user_spec.rb
294
- - spec/instapaper/client_spec.rb
295
- - spec/instapaper_spec.rb
296
- - spec/spec_helper.rb
150
+ test_files: []
297
151
  has_rdoc:
data/.gemtest DELETED
File without changes