instapaper_full 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5cac752e322aa9aab3bd5ef4991218f1060eb8e7
4
+ data.tar.gz: 0762e53da6b808ccec3e07407b98055ff8479bd7
5
+ SHA512:
6
+ metadata.gz: 302604d7241c5b98bdcebd5b0ee25af93e98bcdf0d5093d4bd6088dbcd7b54f82888804764876b5b27ccec2a492e84b448139af7ae4d5ee1915874dd7d022efe
7
+ data.tar.gz: cca48a568c3058bc5f067433f1acf26e4724c3bbe4ee93d0b34525c3cc02650a9f49d8853e0fdd811c25f816ff5b0e40ec2171623133fad6c311f819132a4008
@@ -19,11 +19,9 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency("faraday", "~> 0.7.5")
23
- s.add_dependency("faraday_middleware", "~> 0.7.0")
22
+ s.add_dependency("faraday")
23
+ s.add_dependency("faraday_middleware")
24
24
  s.add_dependency("simple_oauth", "~> 0.1")
25
- s.add_dependency("multi_json", "~> 1.0.4")
26
- s.add_dependency("yajl-ruby", "~> 1.1.0")
27
25
 
28
26
  s.add_development_dependency("rake")
29
27
  s.add_development_dependency("test-unit", "~> 2.4.2")
@@ -1,3 +1,3 @@
1
1
  module InstapaperFull
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  require 'errors'
2
2
  require 'json'
3
- require 'faraday/request/oauth'
4
- require 'faraday/response/parse_json'
3
+ require 'faraday'
4
+ require 'faraday_middleware'
5
5
 
6
6
  module InstapaperFull
7
7
  class API
@@ -13,8 +13,8 @@ module InstapaperFull
13
13
  def connection(options = {})
14
14
  options.merge!({
15
15
  :proxy => @options[:proxy],
16
- :ssl => {:verify => false},
17
- :url => "https://www.instapaper.com/api/1/"
16
+ :ssl => { :verify => @options.fetch(:verify, true) },
17
+ :url => "https://www.instapaper.com/api/1.1/"
18
18
  })
19
19
 
20
20
  oauth_params = {
@@ -28,6 +28,7 @@ module InstapaperFull
28
28
  end
29
29
 
30
30
  Faraday.new(options) do |builder|
31
+ builder.use Faraday::Request::Multipart
31
32
  builder.use Faraday::Request::OAuth, oauth_params
32
33
  builder.use Faraday::Request::UrlEncoded
33
34
  builder.adapter Faraday.default_adapter
@@ -64,13 +65,16 @@ module InstapaperFull
64
65
  r.body = params unless params.empty?
65
66
  end
66
67
 
67
- if result.headers['content-type'] == 'application/json'
68
+ begin
68
69
  JSON.parse(result.body).tap do |d|
69
- if error = d.find { |e| e['type'] == 'error' }
70
+ # Errors are always returned as an array with a single element.
71
+ # bookmarks/list is the only method which returns a Hash, not an
72
+ # Array.
73
+ if d.kind_of?(Array) && error = d.find { |e| e['type'] == 'error' }
70
74
  raise InstapaperFull::API::Error.new(error['error_code'], error['message'])
71
75
  end
72
76
  end
73
- else
77
+ rescue JSON::ParserError
74
78
  raise InstapaperFull::API::Error.new(-1, result.body) if result.status != 200
75
79
  result.body
76
80
  end
@@ -1,14 +1,12 @@
1
1
  HTTP/1.1 200 OK
2
- Date: Thu, 01 Dec 2011 16:33:47 GMT
3
- Server: Apache
4
- P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"
5
- X-Robots-Tag: noindex
6
2
  Cache-Control: no-cache
3
+ Content-Encoding: gzip
4
+ Content-Type: text/html; charset=UTF-8
5
+ Date: Wed, 16 Jul 2014 12:05:08 GMT
7
6
  Pragma: no-cache
7
+ Server: nginx/1.4.7
8
8
  X-Powered-By: a lot of coffee and Phish
9
- Vary: Accept-Encoding
10
- Connection: close
11
- Transfer-Encoding: chunked
12
- Content-Type: application/json
9
+ Content-Length: 2920
10
+ Connection: Close
13
11
 
14
- [{"type":"meta"},{"type":"user","user_id":140230,"username":"tom@tomtaylor.co.uk","subscription_is_active":"1"},{"type":"bookmark","bookmark_id":222945036,"url":"http:\/\/joemoransblog.blogspot.com\/2011\/11\/quiet-pleas.html","title":"Quiet pleas","description":"","time":1321217383,"starred":"0","private_source":"","hash":"cSyver1h","progress":"0","progress_timestamp":1321222208},{"type":"bookmark","bookmark_id":222697290,"url":"http:\/\/potlatch.typepad.com\/weblog\/2011\/11\/poppies-as-national-cultural-audit.html","title":"poppies as national cultural audit","description":"","time":1321119220,"starred":"0","private_source":"","hash":"n7Ic8ADA","progress":"0","progress_timestamp":1321212733},{"type":"bookmark","bookmark_id":222036793,"url":"http:\/\/dashes.com\/anil\/2011\/11\/how-the-99-and-the-tea-party-can-occupy-whitehousegov.html","title":"How the 99% and the Tea Party can Occupy WhiteHouse.gov","description":"","time":1320919525,"starred":"0","private_source":"","hash":"4PGtE6DR","progress":"0","progress_timestamp":1321099791},{"type":"bookmark","bookmark_id":221679923,"url":"http:\/\/blog.pinboard.in\/2011\/11\/the_social_graph_is_neither\/","title":"The Social Graph is Neither","description":"","time":1320825317,"starred":"0","private_source":"","hash":"JlTb3HiL","progress":"0","progress_timestamp":1321099791},{"type":"bookmark","bookmark_id":221194670,"url":"http:\/\/potlatch.typepad.com\/weblog\/2011\/11\/the-post-speculative-olympics.html","title":"the post-speculative Olympics","description":"","time":1320700650,"starred":"0","private_source":"","hash":"JY4hOv1h","progress":"0.655525","progress_timestamp":1322300394},{"type":"bookmark","bookmark_id":221193800,"url":"http:\/\/www.vanityfair.com\/hollywood\/features\/2011\/12\/david-fincher-201112","title":"V.F. Portrait: David Fincher | Hollywood | Vanity Fair","description":"","time":1320700460,"starred":"0","private_source":"","hash":"TQWRqpPd","progress":"0.694745","progress_timestamp":1321431332},{"type":"bookmark","bookmark_id":220538037,"url":"http:\/\/nymag.com\/print\/?\/news\/media\/elisabeth-murdoch-2011-11\/","title":"Elisabeth of the Murdochs","description":"","time":1320483738,"starred":"0","private_source":"","hash":"7EnvQLNi","progress":"0","progress_timestamp":1320613297},{"type":"bookmark","bookmark_id":220537972,"url":"http:\/\/www.vanityfair.com\/business\/features\/2011\/12\/murdoch-kids-201112.print","title":"The Rules of Succession | Business | Vanity Fair","description":"","time":1320483700,"starred":"0","private_source":"","hash":"LR7xzrgT","progress":"0","progress_timestamp":1320613300},{"type":"bookmark","bookmark_id":219761486,"url":"http:\/\/www.theparisreview.org\/interviews\/6089\/the-art-of-fiction-no-211-william-gibson","title":"Paris Review - The Art of Fiction No. 211, William Gibson","description":"","time":1320262786,"starred":"0","private_source":"","hash":"2zPjDydh","progress":"0.721902","progress_timestamp":1320597912},{"type":"bookmark","bookmark_id":218916491,"url":"http:\/\/www.bbc.co.uk\/blogs\/adamcurtis\/2011\/10\/dream_on.html","title":"DREAM ON","description":"","time":1320044972,"starred":"0","private_source":"","hash":"g6KlbVIC","progress":"0","progress_timestamp":1320309552},{"type":"bookmark","bookmark_id":202971816,"url":"http:\/\/www.wired.com\/wired\/archive\/4.12\/ffglass_pr.html","title":"4.12: Mother Earth Mother Board","description":"","time":1319928054,"starred":"0","private_source":"","hash":"ZguEiZ00","progress":"0.0743572","progress_timestamp":1321227679},{"type":"bookmark","bookmark_id":217988594,"url":"http:\/\/www.monbiot.com\/2011\/10\/27\/its-the-rich-wot-gets-the-pleasure\/","title":"It\u2019s the Rich Wot Gets the Pleasure","description":"","time":1319742534,"starred":"0","private_source":"","hash":"KjYD4hen","progress":"0","progress_timestamp":1319961988},{"type":"bookmark","bookmark_id":217124108,"url":"http:\/\/economicsintelligence.com\/2011\/03\/11\/the-economics-of-bike-lanes-%E2%80%93-how-can-john-cassidy-get-it-so-wrong\/","title":"The Economics of Bike Lanes \u2013 How can John Cassidy get it so wrong? | Economics Intelligence","description":"","time":1319535770,"starred":"0","private_source":"","hash":"hPpLAMzZ","progress":"0","progress_timestamp":1319961991},{"type":"bookmark","bookmark_id":216402077,"url":"http:\/\/theeuropean-magazine.com\/352-dyson-george\/353-evolution-and-innovation","title":"George Dyson | Evolution and Innovation - Information Is Cheap, Meaning Is Expensive | The European Magazine","description":"","time":1319326029,"starred":"0","private_source":"","hash":"jfzPj89D","progress":"0","progress_timestamp":1319534414},{"type":"bookmark","bookmark_id":216295911,"url":"http:\/\/www.antipope.org\/charlie\/blog-static\/2011\/10\/a-cultural-experiment.html","title":"A cultural thought experiment","description":"","time":1319294676,"starred":"0","private_source":"","hash":"S9RqWztN","progress":"0","progress_timestamp":1319534424},{"type":"bookmark","bookmark_id":216141787,"url":"http:\/\/blog.wk.com\/2011\/10\/21\/why-we-are-not-hiring-creative-technologists\/","title":"Wieden+Kennedy \u00bb Why We\u2019re Not Hiring Creative Technologists","description":"","time":1319235364,"starred":"0","private_source":"","hash":"mWKHh9eT","progress":"0","progress_timestamp":1319534425},{"type":"bookmark","bookmark_id":215927373,"url":"http:\/\/earlyretirementextreme.com\/how-i-live-on-7000-per-year.html","title":"\u00bb How I live on $7,000 per year Early Retirement Extreme: \u2014 The choice nobody ever told you about","description":"","time":1319181501,"starred":"0","private_source":"","hash":"DuQSUQ5U","progress":"0","progress_timestamp":1319534436},{"type":"bookmark","bookmark_id":215927355,"url":"http:\/\/earlyretirementextreme.com\/peak-oil-next-kondratiev-cycle-turningsand-ere.html","title":"\u00bb Peak oil, the next Kondratiev cycle, generational turnings, and ERE Early Retirement Extreme: \u2014 The choice nobody ever told you about","description":"","time":1319181495,"starred":"0","private_source":"","hash":"V4tGRMj7","progress":"0","progress_timestamp":1319534438},{"type":"bookmark","bookmark_id":215927269,"url":"http:\/\/www.economist.com\/node\/21533400","title":"Capitalism and its critics: Rage against the machine | The Economist","description":"","time":1319181457,"starred":"0","private_source":"","hash":"tk3W7aXn","progress":"0","progress_timestamp":1319534439},{"type":"bookmark","bookmark_id":215201984,"url":"http:\/\/online.wsj.com\/article\/SB10001424052970203914304576627252381486880.html?mod=WSJ_hps_editorsPicks_1","title":"A Future for Pay Phones? - WSJ.com","description":"","time":1319006861,"starred":"0","private_source":"","hash":"BY3la9rz","progress":"0","progress_timestamp":1319007125},{"type":"bookmark","bookmark_id":214644989,"url":"http:\/\/www.monbiot.com\/2011\/10\/17\/show-me-the-money\/","title":"George Monbiot \u2013 Show Me The Money","description":"","time":1318881511,"starred":"0","private_source":"","hash":"aYYsaIpT","progress":"0","progress_timestamp":1319007128},{"type":"bookmark","bookmark_id":213000484,"url":"http:\/\/caravanmagazine.in\/Story.aspx?StoryId=1095","title":"Mind the Gap","description":"","time":1318400657,"starred":"0","private_source":"","hash":"AGxX4SrJ","progress":"0","progress_timestamp":1318521885},{"type":"bookmark","bookmark_id":213000080,"url":"http:\/\/code.flickr.com\/blog\/2011\/10\/11\/talk-real-time-updates-on-the-cheap-for-fun-and-profit\/","title":"Talk: Real-time Updates on the Cheap for Fun and Profit","description":"","time":1318400552,"starred":"0","private_source":"","hash":"lXv7Dujf","progress":"0","progress_timestamp":1318521895},{"type":"bookmark","bookmark_id":212091573,"url":"http:\/\/www.guardian.co.uk\/world\/2011\/oct\/08\/amanda-knox-facial-expressions","title":"Amanda Knox: What's in a face? | World news | The Guardian","description":"","time":1318148366,"starred":"0","private_source":"","hash":"LJ0N8IeG","progress":"0","progress_timestamp":1318521896},{"type":"bookmark","bookmark_id":211853230,"url":"http:\/\/www.engineyard.com\/podcast\/s01e43-chris-nelson","title":"Ruby Cloud | Ruby Support | Engine Yard","description":"","time":1318058840,"starred":"0","private_source":"","hash":"Js779Psg","progress":"0","progress_timestamp":1318521902}]
12
+ {"highlights": [], "bookmarks": [{"hash": "Oem9Y0ss", "description": "", "bookmark_id": 490545991, "private_source": "", "title": "Instapaper", "url": "https://www.instapaper.com/save", "progress_timestamp": 0, "time": 1403122533, "progress": 0.0, "starred": "0", "type": "bookmark"}, {"hash": "aRf4tjQu", "description": "", "bookmark_id": 365382704, "private_source": "", "title": "http://www.aeonmagazine.com/world-views/ross-andersen-human-extinction/", "url": "http://www.aeonmagazine.com/world-views/ross-andersen-human-extinction/", "progress_timestamp": 1363614925, "time": 1384157323, "progress": 0.184269, "starred": "0", "type": "bookmark"}], "user": {"username": "tom@tomtaylor.co.uk", "user_id": 1, "type": "user", "subscription_is_active": "0"}}
@@ -5,43 +5,43 @@ class InstapaperAPITest < Test::Unit::TestCase
5
5
  include AssetHelpers
6
6
 
7
7
  def stub_successful_authentication
8
- stub_request(:post, "https://www.instapaper.com/api/1/oauth/access_token").to_return(
8
+ stub_request(:post, "https://www.instapaper.com/api/1.1/oauth/access_token").to_return(
9
9
  http_response('access_token_success')
10
10
  )
11
11
  end
12
12
 
13
13
  def stub_failed_authentication
14
- stub_request(:post, "https://www.instapaper.com/api/1/oauth/access_token").to_return(
14
+ stub_request(:post, "https://www.instapaper.com/api/1.1/oauth/access_token").to_return(
15
15
  http_response('access_token_failure')
16
16
  )
17
17
  end
18
18
 
19
19
  def stub_successful_verify_credentials
20
- stub_request(:post, "https://www.instapaper.com/api/1/account/verify_credentials").to_return(
20
+ stub_request(:post, "https://www.instapaper.com/api/1.1/account/verify_credentials").to_return(
21
21
  http_response('verify_credentials_success')
22
22
  )
23
23
  end
24
24
 
25
25
  def stub_successful_bookmarks_list
26
- stub_request(:post, "https://www.instapaper.com/api/1/bookmarks/list").to_return(
26
+ stub_request(:post, "https://www.instapaper.com/api/1.1/bookmarks/list").to_return(
27
27
  http_response('bookmarks_list_success')
28
28
  )
29
29
  end
30
30
 
31
31
  def stub_failed_bookmarks_add
32
- stub_request(:post, "https://www.instapaper.com/api/1/bookmarks/add").to_return(
32
+ stub_request(:post, "https://www.instapaper.com/api/1.1/bookmarks/add").to_return(
33
33
  http_response('bookmarks_add_failure')
34
34
  )
35
35
  end
36
36
 
37
37
  def stub_successful_bookmarks_get_text
38
- stub_request(:post, "https://www.instapaper.com/api/1/bookmarks/get_text").
38
+ stub_request(:post, "https://www.instapaper.com/api/1.1/bookmarks/get_text").
39
39
  with(:body => {"bookmark_id"=>"1"}).
40
40
  to_return(http_response('bookmarks_get_text_success'))
41
41
  end
42
42
 
43
43
  def stub_failed_bookmarks_get_text
44
- stub_request(:post, "https://www.instapaper.com/api/1/bookmarks/get_text").
44
+ stub_request(:post, "https://www.instapaper.com/api/1.1/bookmarks/get_text").
45
45
  with(:body => {"bookmark_id"=>"2"}).
46
46
  to_return(http_response('bookmarks_get_text_failure'))
47
47
  end
@@ -75,7 +75,9 @@ class InstapaperAPITest < Test::Unit::TestCase
75
75
  def test_successful_bookmarks_list
76
76
  stub_successful_bookmarks_list
77
77
  list = authenticated_client.bookmarks_list
78
- assert_equal 27, list.length # 25 + 1 user element + 1 meta element
78
+ assert list.has_key?('user')
79
+ assert list.has_key?('bookmarks')
80
+ assert list.has_key?('highlights')
79
81
  end
80
82
 
81
83
  def test_failed_bookmarks_add
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: instapaper_full
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Matt Biddulph
@@ -10,96 +9,92 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2011-12-02 00:00:00.000000000Z
12
+ date: 2014-07-16 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: faraday
17
- requirement: &70362390471600 !ruby/object:Gem::Requirement
18
- none: false
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  requirements:
20
- - - ~>
18
+ - - ">="
21
19
  - !ruby/object:Gem::Version
22
- version: 0.7.5
20
+ version: '0'
23
21
  type: :runtime
24
22
  prerelease: false
25
- version_requirements: *70362390471600
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
26
28
  - !ruby/object:Gem::Dependency
27
29
  name: faraday_middleware
28
- requirement: &70362390470240 !ruby/object:Gem::Requirement
29
- none: false
30
+ requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - ~>
32
+ - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: 0.7.0
34
+ version: '0'
34
35
  type: :runtime
35
36
  prerelease: false
36
- version_requirements: *70362390470240
37
- - !ruby/object:Gem::Dependency
38
- name: simple_oauth
39
- requirement: &70362390468680 !ruby/object:Gem::Requirement
40
- none: false
37
+ version_requirements: !ruby/object:Gem::Requirement
41
38
  requirements:
42
- - - ~>
39
+ - - ">="
43
40
  - !ruby/object:Gem::Version
44
- version: '0.1'
45
- type: :runtime
46
- prerelease: false
47
- version_requirements: *70362390468680
41
+ version: '0'
48
42
  - !ruby/object:Gem::Dependency
49
- name: multi_json
50
- requirement: &70362390468040 !ruby/object:Gem::Requirement
51
- none: false
43
+ name: simple_oauth
44
+ requirement: !ruby/object:Gem::Requirement
52
45
  requirements:
53
- - - ~>
46
+ - - "~>"
54
47
  - !ruby/object:Gem::Version
55
- version: 1.0.4
48
+ version: '0.1'
56
49
  type: :runtime
57
50
  prerelease: false
58
- version_requirements: *70362390468040
59
- - !ruby/object:Gem::Dependency
60
- name: yajl-ruby
61
- requirement: &70362390467080 !ruby/object:Gem::Requirement
62
- none: false
51
+ version_requirements: !ruby/object:Gem::Requirement
63
52
  requirements:
64
- - - ~>
53
+ - - "~>"
65
54
  - !ruby/object:Gem::Version
66
- version: 1.1.0
67
- type: :runtime
68
- prerelease: false
69
- version_requirements: *70362390467080
55
+ version: '0.1'
70
56
  - !ruby/object:Gem::Dependency
71
57
  name: rake
72
- requirement: &70362390466520 !ruby/object:Gem::Requirement
73
- none: false
58
+ requirement: !ruby/object:Gem::Requirement
74
59
  requirements:
75
- - - ! '>='
60
+ - - ">="
76
61
  - !ruby/object:Gem::Version
77
62
  version: '0'
78
63
  type: :development
79
64
  prerelease: false
80
- version_requirements: *70362390466520
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
81
70
  - !ruby/object:Gem::Dependency
82
71
  name: test-unit
83
- requirement: &70362390465540 !ruby/object:Gem::Requirement
84
- none: false
72
+ requirement: !ruby/object:Gem::Requirement
85
73
  requirements:
86
- - - ~>
74
+ - - "~>"
87
75
  - !ruby/object:Gem::Version
88
76
  version: 2.4.2
89
77
  type: :development
90
78
  prerelease: false
91
- version_requirements: *70362390465540
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 2.4.2
92
84
  - !ruby/object:Gem::Dependency
93
85
  name: webmock
94
- requirement: &70362390463180 !ruby/object:Gem::Requirement
95
- none: false
86
+ requirement: !ruby/object:Gem::Requirement
96
87
  requirements:
97
- - - ~>
88
+ - - "~>"
98
89
  - !ruby/object:Gem::Version
99
90
  version: 1.7.8
100
91
  type: :development
101
92
  prerelease: false
102
- version_requirements: *70362390463180
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 1.7.8
103
98
  description: See http://www.instapaper.com/api/full
104
99
  email:
105
100
  - mb@hackdiary.com
@@ -108,7 +103,7 @@ executables: []
108
103
  extensions: []
109
104
  extra_rdoc_files: []
110
105
  files:
111
- - .gitignore
106
+ - ".gitignore"
112
107
  - Gemfile
113
108
  - LICENSE
114
109
  - README.md
@@ -129,33 +124,26 @@ files:
129
124
  - test/test_helper.rb
130
125
  homepage: https://github.com/mattb/instapaper_full
131
126
  licenses: []
127
+ metadata: {}
132
128
  post_install_message:
133
129
  rdoc_options: []
134
130
  require_paths:
135
131
  - lib
136
132
  required_ruby_version: !ruby/object:Gem::Requirement
137
- none: false
138
133
  requirements:
139
- - - ! '>='
134
+ - - ">="
140
135
  - !ruby/object:Gem::Version
141
136
  version: '0'
142
- segments:
143
- - 0
144
- hash: 3203290908794437357
145
137
  required_rubygems_version: !ruby/object:Gem::Requirement
146
- none: false
147
138
  requirements:
148
- - - ! '>='
139
+ - - ">="
149
140
  - !ruby/object:Gem::Version
150
141
  version: '0'
151
- segments:
152
- - 0
153
- hash: 3203290908794437357
154
142
  requirements: []
155
143
  rubyforge_project: instapaper_full
156
- rubygems_version: 1.8.10
144
+ rubygems_version: 2.2.2
157
145
  signing_key:
158
- specification_version: 3
146
+ specification_version: 4
159
147
  summary: Wrapper for the Instapaper Full Developer API
160
148
  test_files:
161
149
  - test/asset_helpers.rb