readit 0.0.1
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.
- data/.gitignore +18 -0
- data/Gemfile +20 -0
- data/Guardfile +8 -0
- data/Rakefile +2 -0
- data/Readme.md +36 -0
- data/lib/readit/railtie.rb +11 -0
- data/lib/readit/version.rb +3 -0
- data/lib/readit.rb +131 -0
- data/readability.yml.sample +3 -0
- data/readit.gemspec +21 -0
- data/spec/cases/api_spec.rb +36 -0
- data/spec/spec_helper.rb +7 -0
- metadata +81 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            source 'http://rubygems.org'
         | 
| 2 | 
            +
            gem 'multi_json'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            group :development, :test do
         | 
| 5 | 
            +
            	gem 'rspec'
         | 
| 6 | 
            +
              # Testing infrastructure
         | 
| 7 | 
            +
              gem 'guard'
         | 
| 8 | 
            +
              gem 'guard-rspec'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              # if RUBY_PLATFORM =~ /darwin/
         | 
| 11 | 
            +
              #   # OS X integration
         | 
| 12 | 
            +
              #   gem "ruby_gntp"
         | 
| 13 | 
            +
              #   gem "rb-fsevent", "~> 0.4.3.1"
         | 
| 14 | 
            +
              # end
         | 
| 15 | 
            +
            end
         | 
| 16 | 
            +
            gem 'oauth'
         | 
| 17 | 
            +
             | 
| 18 | 
            +
             | 
| 19 | 
            +
            # Specify your gem's dependencies in readit.gemspec
         | 
| 20 | 
            +
            gemspec
         | 
    
        data/Guardfile
    ADDED
    
    
    
        data/Rakefile
    ADDED
    
    
    
        data/Readme.md
    ADDED
    
    | @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            ### Simple api client of [readability](http://www.readability.com)
         | 
| 2 | 
            +
            not ready to use
         | 
| 3 | 
            +
            ### Configuration
         | 
| 4 | 
            +
            #### Rails
         | 
| 5 | 
            +
            config/readability.yml
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ``` ruby
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            development:
         | 
| 10 | 
            +
            	consumer_key: some_key
         | 
| 11 | 
            +
            	consumer_secret: some_secret
         | 
| 12 | 
            +
            ```
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            #### or in your code
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            ``` ruby
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            Readit::Config.consumer_key = some_key
         | 
| 19 | 
            +
            Readit::Config.consumer_secret = some_value
         | 
| 20 | 
            +
            ```
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ### API use
         | 
| 23 | 
            +
            ``` ruby 
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            @api = Readit::API.new 'access_token','access_token_secret'
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            # get user info
         | 
| 28 | 
            +
            @api.me
         | 
| 29 | 
            +
            # get all bookmarks
         | 
| 30 | 
            +
            @api.bookmarks
         | 
| 31 | 
            +
            # get one artile by article_id
         | 
| 32 | 
            +
            @api.article 'article_id'
         | 
| 33 | 
            +
            # add bookmark
         | 
| 34 | 
            +
            @api.add_bookmark :url=>'http://some_article_url.html'
         | 
| 35 | 
            +
            ```
         | 
| 36 | 
            +
             | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            module Readit
         | 
| 2 | 
            +
              class Railtie < Rails::Railtie
         | 
| 3 | 
            +
                config.after_initialize do
         | 
| 4 | 
            +
                  if File.exists?('config/readability.yml')
         | 
| 5 | 
            +
                    consumer_info = YAML.load_file(File.join(Rails.root.to_s, 'config', 'readability.yml'))[Rails.env || "development"]
         | 
| 6 | 
            +
                    Readit::Config.consumer_key = consumer_info["consumer_key"]
         | 
| 7 | 
            +
                    Readit::Config.consumer_secret = consumer_info["consumer_secret"]
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         | 
    
        data/lib/readit.rb
    ADDED
    
    | @@ -0,0 +1,131 @@ | |
| 1 | 
            +
            require "readit/version"
         | 
| 2 | 
            +
            require 'multi_json'
         | 
| 3 | 
            +
            require 'oauth'
         | 
| 4 | 
            +
            # plugin railtie hook when using rails
         | 
| 5 | 
            +
            require 'readit/railtie' if defined?(Rails)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module Readit
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            	class ReaditError < StandardError;end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            	module Config
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            		def self.consumer_key
         | 
| 14 | 
            +
            			@@consumer_key
         | 
| 15 | 
            +
            		end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            		def self.consumer_key=(val)
         | 
| 18 | 
            +
            			@@consumer_key = val
         | 
| 19 | 
            +
            		end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            		def self.consumer_secret
         | 
| 22 | 
            +
            			@@consumer_secret
         | 
| 23 | 
            +
            		end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            		def self.consumer_secret=(val)
         | 
| 26 | 
            +
            			@@consumer_secret = val
         | 
| 27 | 
            +
            		end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            	end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            	class API
         | 
| 32 | 
            +
            		# Create a new Readit API client
         | 
| 33 | 
            +
            		def initialize(access_token='',access_token_secret='')
         | 
| 34 | 
            +
            			@access_token = access_token
         | 
| 35 | 
            +
            			@access_token_secret = access_token_secret
         | 
| 36 | 
            +
            			load_config
         | 
| 37 | 
            +
            		end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            		attr_reader :access_token
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            		SITE_URL = 'https://www.readability.com/'
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            		# Retrieve the base API URI - information about subresources.
         | 
| 44 | 
            +
            		# /
         | 
| 45 | 
            +
            		def resource_info
         | 
| 46 | 
            +
            			request(:get,'/')
         | 
| 47 | 
            +
            		end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            		# Retrieve a single Article, including its content. 
         | 
| 50 | 
            +
            		# /articles/{article_id}
         | 
| 51 | 
            +
            		def article(article_id)
         | 
| 52 | 
            +
            			request(:get,"/articles/#{article_id}")
         | 
| 53 | 
            +
            		end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            		# Retrieve the bookmarks collection. Automatically filtered to the current user.
         | 
| 56 | 
            +
            		# bookmark_id support
         | 
| 57 | 
            +
            		#
         | 
| 58 | 
            +
            		# /bookmarks?archive&favorite&domain&added_since&added_until&opened_since&opened_until&
         | 
| 59 | 
            +
            		# archived_since&archived_until&favorited_since&favorited_until&updated_since&updated_until&
         | 
| 60 | 
            +
            		# order&page&per_page&exclude_accessibility&only_deleted
         | 
| 61 | 
            +
            		#
         | 
| 62 | 
            +
            		# /bookmarks/{bookmark_id}
         | 
| 63 | 
            +
            		def bookmarks(args={})
         | 
| 64 | 
            +
            			if args[:bookmark_id] and args[:bookmark_id]!=''
         | 
| 65 | 
            +
            				request(:get,"/bookmarks/#{args[:bookmark_id]}")
         | 
| 66 | 
            +
            			else
         | 
| 67 | 
            +
            				params = args.map{|k,v| "#{k}=#{v}"}.join('&')
         | 
| 68 | 
            +
            				request(:get,'/bookmarks',args)
         | 
| 69 | 
            +
            			end
         | 
| 70 | 
            +
            		end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            		# Add a bookmark. Returns 202 Accepted, meaning that the bookmark has been added but no guarantees are made as 
         | 
| 73 | 
            +
            		# to whether the article proper has yet been parsed.
         | 
| 74 | 
            +
            		#
         | 
| 75 | 
            +
            		# /bookmarks?archive&favorite&domain&added_since&added_until&opened_since&opened_until&
         | 
| 76 | 
            +
            		# archived_since&archived_until&favorited_since&favorited_until&updated_since&updated_until&
         | 
| 77 | 
            +
            		# order&page&per_page&exclude_accessibility&only_deleted
         | 
| 78 | 
            +
            		def add_bookmark(args={})
         | 
| 79 | 
            +
            			request(:post,'/bookmarks',args)
         | 
| 80 | 
            +
            		end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            		# Update a bookmark. Returns 200 on successful update.
         | 
| 83 | 
            +
            		# /bookmarks/{bookmark_id}
         | 
| 84 | 
            +
            		def update_bookmark(bookmark_id,args={})
         | 
| 85 | 
            +
            			request(:post,"/bookmarks/#{bookmark_id}",args)
         | 
| 86 | 
            +
            		end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            		def archive(bookmark_id)
         | 
| 89 | 
            +
            			update_bookmark(bookmark_id,:archive=>1)
         | 
| 90 | 
            +
            		end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            		# Remove a single bookmark from this user's history. 
         | 
| 93 | 
            +
            		# NOTE: THIS IS PROBABLY NOT WHAT YOU WANT. This is particularly for the case where a user accidentally bookmarks
         | 
| 94 | 
            +
            		# something they have no intention of reading or supporting. 
         | 
| 95 | 
            +
            		# In almost all cases, you'll probably want to use archive by POSTing archive=1 to this bookmark.
         | 
| 96 | 
            +
            		# If you use DELETE and this months bookmarks have not yet been tallied, 
         | 
| 97 | 
            +
            		# the site associated with this bookmark will not receive any contributions for this bookmark.
         | 
| 98 | 
            +
            		# Use archive! It's better.
         | 
| 99 | 
            +
            		# Returns a 204 on successful remove.
         | 
| 100 | 
            +
            		def delete_bookmark(bookmark_id)
         | 
| 101 | 
            +
            			request(:delete,"/bookmarks/#{bookmark_id}")
         | 
| 102 | 
            +
            		end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
            		# Retrieve the contributions collection, which is a set of payments by a user to a specific domain. Automatically filtered to the current user.
         | 
| 105 | 
            +
            		#
         | 
| 106 | 
            +
            		# /contributions?since&until&domain&page&per_page
         | 
| 107 | 
            +
            		def contributions(args={})
         | 
| 108 | 
            +
            			request(:get,"/contributions",args)
         | 
| 109 | 
            +
            		end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            		# Retrieve the current user's information.
         | 
| 112 | 
            +
            		# /users/_current
         | 
| 113 | 
            +
            		def me
         | 
| 114 | 
            +
            			request(:get,"/users/_current")
         | 
| 115 | 
            +
            		end
         | 
| 116 | 
            +
             | 
| 117 | 
            +
            		private 
         | 
| 118 | 
            +
            		def request(method,url,args={})
         | 
| 119 | 
            +
            			consumer = ::OAuth::Consumer.new(Readit::Config.consumer_key,Readit::Config.consumer_secret,:site=>SITE_URL)
         | 
| 120 | 
            +
            			atoken = ::OAuth::AccessToken.new(consumer, @access_token, @access_token_secret)
         | 
| 121 | 
            +
            			#response = client.send(method,"/api/rest/v1#{url}",args.merge!('oauth_token'=>@access_token,'oauth_token_secret'=>'5VEnMNPr7Q4393wxAYdnTWnpWwn7bHm4','oauth_consumer_key'=>'lidongbin','oauth_consumer_secret'=>'gvjSYqH4PLWQtQG8Ywk7wKZnEgd4xf2C'))
         | 
| 122 | 
            +
            			response = atoken.send(method,"/api/rest/v1#{url}",args)
         | 
| 123 | 
            +
            			if response.body==nil or response.body==''
         | 
| 124 | 
            +
            				{:status => response.code}
         | 
| 125 | 
            +
            			else
         | 
| 126 | 
            +
            				MultiJson.decode response.body
         | 
| 127 | 
            +
            			end
         | 
| 128 | 
            +
            		end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            	end
         | 
| 131 | 
            +
            end
         | 
    
        data/readit.gemspec
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            require File.expand_path('../lib/readit/version', __FILE__)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Gem::Specification.new do |gem|
         | 
| 5 | 
            +
              gem.authors       = ["dongbin.li"]
         | 
| 6 | 
            +
              gem.email         = ["mike.d.1984@gmail.com"]
         | 
| 7 | 
            +
              gem.description   = %q{a simple readability api client}
         | 
| 8 | 
            +
              gem.summary       = %q{a simple readability api client}
         | 
| 9 | 
            +
              gem.homepage      = "https://github.com/29decibel/readit"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            	gem.rubyforge_project = "readit"
         | 
| 12 | 
            +
            	gem.add_dependency 'multi_json'
         | 
| 13 | 
            +
            	gem.add_dependency 'oauth'
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              gem.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 16 | 
            +
              gem.files         = `git ls-files`.split("\n")
         | 
| 17 | 
            +
              gem.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 18 | 
            +
              gem.name          = "readit"
         | 
| 19 | 
            +
              gem.require_paths = ["lib"]
         | 
| 20 | 
            +
              gem.version       = Readit::VERSION
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "Readit::API" do
         | 
| 4 | 
            +
            	before do
         | 
| 5 | 
            +
            		# load consumer infos
         | 
| 6 | 
            +
                consumer_info = YAML.load_file(File.join(File.dirname(__FILE__),'../readability.yml'))["development"]
         | 
| 7 | 
            +
            		puts consumer_info
         | 
| 8 | 
            +
            		Readit::Config.consumer_key = consumer_info['consumer_key']
         | 
| 9 | 
            +
            		Readit::Config.consumer_secret = consumer_info['consumer_secret']
         | 
| 10 | 
            +
            		@api = Readit::API.new 'zQuzAzVW4Ark7VZvm2','5VEnMNPr7Q4393wxAYdnTWnpWwn7bHm4'
         | 
| 11 | 
            +
            	end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              it "should get user infos" do
         | 
| 14 | 
            +
            		@api.me.should_not == nil
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            	it "should get user's bookmarks" do
         | 
| 18 | 
            +
            		@api.bookmarks.should_not == nil
         | 
| 19 | 
            +
            	end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            	it "should add bookmark" do
         | 
| 22 | 
            +
            		url = 'http://www.mihuwa.com/article/5073/'
         | 
| 23 | 
            +
            		url = 'http://leewindy.blogbus.com/logs/188360549.html'
         | 
| 24 | 
            +
            		resp = @api.add_bookmark :url=>url
         | 
| 25 | 
            +
            		puts resp.inspect
         | 
| 26 | 
            +
            		resp.should_not == nil
         | 
| 27 | 
            +
            	end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            	it "should get the article content" do
         | 
| 30 | 
            +
            		article = @api.article 'eg60dxbv'
         | 
| 31 | 
            +
            		#puts article
         | 
| 32 | 
            +
            		article.should_not == nil
         | 
| 33 | 
            +
            	end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            end
         | 
| 36 | 
            +
             | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | @@ -0,0 +1,81 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: readit
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
            platform: ruby
         | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - dongbin.li
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2012-01-22 00:00:00.000000000Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: multi_json
         | 
| 16 | 
            +
              requirement: &2157022360 !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '0'
         | 
| 22 | 
            +
              type: :runtime
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: *2157022360
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 26 | 
            +
              name: oauth
         | 
| 27 | 
            +
              requirement: &2157021940 !ruby/object:Gem::Requirement
         | 
| 28 | 
            +
                none: false
         | 
| 29 | 
            +
                requirements:
         | 
| 30 | 
            +
                - - ! '>='
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: '0'
         | 
| 33 | 
            +
              type: :runtime
         | 
| 34 | 
            +
              prerelease: false
         | 
| 35 | 
            +
              version_requirements: *2157021940
         | 
| 36 | 
            +
            description: a simple readability api client
         | 
| 37 | 
            +
            email:
         | 
| 38 | 
            +
            - mike.d.1984@gmail.com
         | 
| 39 | 
            +
            executables: []
         | 
| 40 | 
            +
            extensions: []
         | 
| 41 | 
            +
            extra_rdoc_files: []
         | 
| 42 | 
            +
            files:
         | 
| 43 | 
            +
            - .gitignore
         | 
| 44 | 
            +
            - Gemfile
         | 
| 45 | 
            +
            - Guardfile
         | 
| 46 | 
            +
            - Rakefile
         | 
| 47 | 
            +
            - Readme.md
         | 
| 48 | 
            +
            - lib/readit.rb
         | 
| 49 | 
            +
            - lib/readit/railtie.rb
         | 
| 50 | 
            +
            - lib/readit/version.rb
         | 
| 51 | 
            +
            - readability.yml.sample
         | 
| 52 | 
            +
            - readit.gemspec
         | 
| 53 | 
            +
            - spec/cases/api_spec.rb
         | 
| 54 | 
            +
            - spec/spec_helper.rb
         | 
| 55 | 
            +
            homepage: https://github.com/29decibel/readit
         | 
| 56 | 
            +
            licenses: []
         | 
| 57 | 
            +
            post_install_message: 
         | 
| 58 | 
            +
            rdoc_options: []
         | 
| 59 | 
            +
            require_paths:
         | 
| 60 | 
            +
            - lib
         | 
| 61 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 62 | 
            +
              none: false
         | 
| 63 | 
            +
              requirements:
         | 
| 64 | 
            +
              - - ! '>='
         | 
| 65 | 
            +
                - !ruby/object:Gem::Version
         | 
| 66 | 
            +
                  version: '0'
         | 
| 67 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 68 | 
            +
              none: false
         | 
| 69 | 
            +
              requirements:
         | 
| 70 | 
            +
              - - ! '>='
         | 
| 71 | 
            +
                - !ruby/object:Gem::Version
         | 
| 72 | 
            +
                  version: '0'
         | 
| 73 | 
            +
            requirements: []
         | 
| 74 | 
            +
            rubyforge_project: readit
         | 
| 75 | 
            +
            rubygems_version: 1.8.11
         | 
| 76 | 
            +
            signing_key: 
         | 
| 77 | 
            +
            specification_version: 3
         | 
| 78 | 
            +
            summary: a simple readability api client
         | 
| 79 | 
            +
            test_files:
         | 
| 80 | 
            +
            - spec/cases/api_spec.rb
         | 
| 81 | 
            +
            - spec/spec_helper.rb
         |