No description
Find a file
2015-03-03 01:00:21 -05:00
lib prioritize response body errors over response codes 2015-03-03 01:00:21 -05:00
spec cleanup whitespace 2015-03-03 00:13:24 -05:00
.gemtest initial commit 2011-12-01 23:07:24 -05:00
.gitignore initial commit 2011-12-01 23:07:24 -05:00
.rspec use the standard rspec formatter 2015-02-09 00:14:54 -05:00
.rubocop.yml fix all remaining rubocops 2015-02-09 07:10:23 -05:00
.travis.yml update travis config 2015-02-09 00:43:00 -05:00
.yardopts initial commit 2011-12-01 23:07:24 -05:00
Gemfile timecop isn't used 2015-02-14 00:25:15 -05:00
instapaper.gemspec switch from values to virtus objects 2015-02-17 13:39:49 -05:00
LICENSE.md 2015 2015-02-09 00:43:49 -05:00
Rakefile run rubocop as part of default CI tests 2015-02-09 00:42:52 -05:00
README.md readme edits for 1.0.0 2015-02-28 18:25:56 -05:00

Instapaper Build Status Dependency Status

Instapaper is a ruby wrapper for interacting with Instapaper's Full API. Note that access to the Full API is restricted to Instapaper subscribers only.

Installation

gem install instapaper

Usage

This library offers full support for all methods exposed through Instapaper's Full API. Note that Instapaper's API does not support the request-token/authorize workflow. To obtain an access token, use the access_token method.

Changes in 1.0.0

If you've used earlier versions of this library, a lot has changed in version 1.x. While not a total rewrite, I've changed a number of things based on my experience writing API libraries:

  • swapped out Faraday for http.rb
  • responses now return custom classes instead of Hashie::Rash objects
  • most API methods are more clear as to their behavior (i.e., #star_bookmark instead of just #star)
  • module-based configuration and invocation has been removed, you'll now need to instantiate an Instapaper::Client instead (see usage below)
  • Improved error handling
  • Updates for version 1.1 of Instapaper's API
  • Support for Highlights API

Configuration

client = Instapaper::Client.new do |client|
  client.consumer_key = YOUR_CONSUMER_KEY
  client.consumer_secret = YOUR_CONSUMER_SECRET
  client.oauth_token = YOUR_OAUTH_TOKEN
  client.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end

Authentication

To obtain an access token via xAuth:

client.token(username, password)

You can also verify credentials once you have received tokens:

client.verify_credentials

Bookmark Operations

Retrieve a list of bookmarks:

client.bookmarks

Add a new bookmark:

client.add_bookmark('http://someurl.com', :title => 'This is the title', :description => 'This is the description')

Remove a bookmark:

client.delete_bookmark(bookmark_id)

Update read progress:

client.update_read_progress(bookmark_id, 0.5)

Star/Un-star a bookmark:

client.star_bookmark(bookmark_id)
client.unstar_bookmark(bookmark_id)

Archive/Un-archive a bookmark:

client.archive_bookmark(bookmark_id)
client.unarchive_bookmark(bookmark_id)

Move a bookmark to a folder:

client.move_bookmark(bookmark_id, folder_id)

Obtain the text of a bookmark:

client.get_text(bookmark_id)

Folder Operations

To obtain the list of folders:

client.folders

You can add by passing a name:

client.add_folder('eventmachine')

And remove folders by referencing a folder by it's id.

client.delete_folder(folder_id)

Lastly, the folders can be reordered:

client.set_order(['folder_id1:2','folder_id2:1'])

Documentation

http://rdoc.info/gems/instapaper

Contributing

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with Rakefile, gem version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright (c) 2015 Steve Agalloco. See LICENSE for details.