instapaper 0.3.0 → 1.0.0.pre2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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