pocket-ruby-andyw8 0.0.7

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
+ SHA256:
3
+ metadata.gz: 184559f436d9a7270366507934bbf439a9f99a9eb7b4f567def2c557f0e7200f
4
+ data.tar.gz: a46cd3667e1fcf6626a8abb0aca9cc4739a6ad1a5866c5639cf8bed2e6f45630
5
+ SHA512:
6
+ metadata.gz: ee26f47f82484ab5f1ccccb91fef3ac282b0d515d2d8da0208b9cbc7b1f337807b02ab669c64a6610c385dffd9d7cb0681412b0396ec3cbf4e28732988825c9b
7
+ data.tar.gz: 6310e11534eb9ecf4df690ec093b9a0c7fb4a8f88874b27661b3ff1b4fe45e1df392e5b76ff7d234a0efb8e58afc5450164e5dab508a5b3aee06a91ce76a645b
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+ Gemfile.lock
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/.yardopts ADDED
@@ -0,0 +1,9 @@
1
+ --no-private
2
+ --protected
3
+ --tag format:"Supported formats"
4
+ --tag authenticated:"Requires Authentication"
5
+ --tag rate_limited:"Rate Limited"
6
+ --markup markdown
7
+ -
8
+ HISTORY.mkd
9
+ LICENSE.mkd
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Unreleased
2
+
3
+ # v0.0.7 (2021-03-08)
4
+
5
+ * Relax Faraday version contraint
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2012 Geknowm, Inc.
2
+ Portions Copyright (c) 2011 Instagram (Burbn, Inc.)
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ pocket-ruby
2
+ ===========
3
+
4
+ [![Code Climate](https://codeclimate.com/github/turadg/pocket-ruby.png)](https://codeclimate.com/github/turadg/pocket-ruby) [![Gem Version](https://badge.fury.io/rb/pocket-ruby.png)](http://badge.fury.io/rb/pocket-ruby)
5
+
6
+ Ruby API for v3 of the [Pocket API](http://getpocket.com/developer/docs/overview) (formerly Read It Later)
7
+
8
+ # Usage
9
+
10
+ Just clone the repo here and refer to the demo-server.rb file for examples on how to interact with the Pocket API.
11
+
12
+ ```sh
13
+ git clone
14
+ cd pocket-ruby
15
+ bundle install
16
+ ruby demo-server.rb
17
+ ```
18
+
19
+ Pocket-Ruby can be installed via the gem, ```gem install pocket-ruby```
20
+
21
+ Or via bundler, ```gem 'pocket-ruby'```
22
+
23
+ # For v0.0.5 and earlier
24
+
25
+ Using v0.0.5 and earlier may result in a ```require``` error. To fix this you may either update to a newer version of the gem or uninstall with ```gem uninstall pocket-ruby``` and try again using the method below:
26
+
27
+ Install via the gem, ```gem install pocket-ruby -v 0.0.5```
28
+
29
+ Or via bundler, ```gem 'pocket-ruby', '0.0.5', :require => 'pocket'```
30
+
31
+ Be sure to require the gem in your code with ```require 'pocket'``` not ```require 'pocket-ruby'```
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
8
+
9
+ namespace :doc do
10
+ begin
11
+ require 'yard'
12
+ rescue LoadError
13
+ # ignore
14
+ else
15
+ YARD::Rake::YardocTask.new do |task|
16
+ task.files = ['HISTORY.mkd', 'LICENSE.mkd', 'lib/**/*.rb']
17
+ task.options = [
18
+ '--protected',
19
+ '--output-dir', 'doc/yard',
20
+ '--tag', 'format:Supported formats',
21
+ '--tag', 'authenticated:Requires Authentication',
22
+ '--tag', 'rate_limited:Rate Limited',
23
+ '--markup', 'markdown',
24
+ ]
25
+ end
26
+ end
27
+ end
data/demo-server.rb ADDED
@@ -0,0 +1,72 @@
1
+ require "sinatra"
2
+
3
+ require "./lib/pocket-ruby.rb"
4
+
5
+ enable :sessions
6
+
7
+ CALLBACK_URL = "http://localhost:4567/oauth/callback"
8
+
9
+ Pocket.configure do |config|
10
+ config.consumer_key = '10188-3565cd04d1464e6d0e64b67f'
11
+ end
12
+
13
+ get '/reset' do
14
+ puts "GET /reset"
15
+ session.clear
16
+ end
17
+
18
+ get "/" do
19
+ puts "GET /"
20
+ puts "session: #{session}"
21
+
22
+ if session[:access_token]
23
+ '
24
+ <a href="/add?url=http://getpocket.com">Add Pocket Homepage</a>
25
+ <a href="/retrieve">Retrieve single item</a>
26
+ '
27
+ else
28
+ '<a href="/oauth/connect">Connect with Pocket</a>'
29
+ end
30
+ end
31
+
32
+ get "/oauth/connect" do
33
+ puts "OAUTH CONNECT"
34
+ session[:code] = Pocket.get_code(:redirect_uri => CALLBACK_URL)
35
+ new_url = Pocket.authorize_url(:code => session[:code], :redirect_uri => CALLBACK_URL)
36
+ puts "new_url: #{new_url}"
37
+ puts "session: #{session}"
38
+ redirect new_url
39
+ end
40
+
41
+ get "/oauth/callback" do
42
+ puts "OAUTH CALLBACK"
43
+ puts "request.url: #{request.url}"
44
+ puts "request.body: #{request.body.read}"
45
+ result = Pocket.get_result(session[:code], :redirect_uri => CALLBACK_URL)
46
+ session[:access_token] = result['access_token']
47
+ puts result['access_token']
48
+ puts result['username']
49
+ # Alternative method to get the access token directly
50
+ #session[:access_token] = Pocket.get_access_token(session[:code])
51
+ puts session[:access_token]
52
+ puts "session: #{session}"
53
+ redirect "/"
54
+ end
55
+
56
+ get '/add' do
57
+ client = Pocket.client(:access_token => session[:access_token])
58
+ info = client.add :url => 'http://getpocket.com'
59
+ "<pre>#{info}</pre>"
60
+ end
61
+
62
+ get "/retrieve" do
63
+ client = Pocket.client(:access_token => session[:access_token])
64
+ info = client.retrieve(:detailType => :complete, :count => 1)
65
+
66
+ # html = "<h1>#{user.username}'s recent photos</h1>"
67
+ # for media_item in client.user_recent_media
68
+ # html << "<img src='#{media_item.images.thumbnail.url}'>"
69
+ # end
70
+ # html
71
+ "<pre>#{info}</pre>"
72
+ end
@@ -0,0 +1,24 @@
1
+ require 'faraday'
2
+
3
+ # @private
4
+ module FaradayMiddleware
5
+ # @private
6
+ class PocketOAuth < Faraday::Middleware
7
+ def call(env)
8
+ env[:body] = {} if env[:body].nil?
9
+ env[:body] = env[:body].merge(:consumer_key => @consumer_key)
10
+
11
+ if @access_token
12
+ env[:body] = env[:body].merge(:access_token => @access_token)
13
+ end
14
+
15
+ @app.call env
16
+ end
17
+
18
+ def initialize(app, consumer_key, access_token=nil)
19
+ @app = app
20
+ @consumer_key = consumer_key
21
+ @access_token = access_token
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ module Faraday
2
+
3
+ # HTTP Status X-Error-Code X-Error
4
+ # 400 138 Missing consumer key.
5
+ # 403 152 Invalid consumer key.
6
+ # 400 181 Invalid redirect uri.
7
+ # 400 182 Missing code.
8
+ # 400 185 Code not found.
9
+ # 403 158 User rejected code.
10
+ # 403 159 Already used code.
11
+ # 50X 199 Pocket server issue.
12
+ #
13
+ # @see http://getpocket.com/developer/docs/authentication
14
+ class Response::RaisePocketError < Response::Middleware
15
+ ClientErrorStatuses = 400...600
16
+
17
+ def on_complete(env)
18
+ case env[:status]
19
+ when 404
20
+ raise Faraday::Error::ResourceNotFound, response_values(env)
21
+ when 400...403
22
+ raise Pocket::Error, env[:response_headers]['X-Error']
23
+ when ClientErrorStatuses
24
+ raise Faraday::Error::ClientError, response_values(env)
25
+ end
26
+ end
27
+
28
+ def response_values(env)
29
+ {:status => env[:status], :headers => env[:response_headers], :body => env[:body]}
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path('../pocket/error', __FILE__)
2
+ require File.expand_path('../pocket/configuration', __FILE__)
3
+ require File.expand_path('../pocket/api', __FILE__)
4
+ require File.expand_path('../pocket/client', __FILE__)
5
+
6
+ module Pocket
7
+ extend Configuration
8
+
9
+ # Alias for Pocket::Client.new
10
+ #
11
+ # @return [Pocket::Client]
12
+ def self.client(options={})
13
+ Pocket::Client.new(options)
14
+ end
15
+
16
+ # Delegate to Pocket::Client
17
+ def self.method_missing(method, *args, &block)
18
+ return super unless client.respond_to?(method)
19
+ client.send(method, *args, &block)
20
+ end
21
+
22
+ # Delegate to Pocket::Client
23
+ def self.respond_to?(method)
24
+ return client.respond_to?(method) || super
25
+ end
26
+ end
data/lib/pocket/api.rb ADDED
@@ -0,0 +1,21 @@
1
+ require File.expand_path('../connection', __FILE__)
2
+ require File.expand_path('../oauth', __FILE__)
3
+
4
+ module Pocket
5
+ # @private
6
+ class API
7
+ # @private
8
+ attr_accessor *Configuration::VALID_OPTIONS_KEYS
9
+
10
+ # Creates a new API
11
+ def initialize(options={})
12
+ options = Pocket.options.merge(options)
13
+ Configuration::VALID_OPTIONS_KEYS.each do |key|
14
+ send("#{key}=", options[key])
15
+ end
16
+ end
17
+
18
+ include Connection
19
+ include OAuth
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ module Pocket
2
+ # Wrapper for the Pocket REST API
3
+ #
4
+ # @note All methods have been separated into modules and follow the same grouping used in {TODO:doc_URL the Pocket API Documentation}.
5
+ # @see TODO:doc_url
6
+ class Client < API
7
+ Dir[File.expand_path('../client/*.rb', __FILE__)].each{|f| require f}
8
+
9
+ include Pocket::Client::Add
10
+ include Pocket::Client::Modify
11
+ include Pocket::Client::Retrieve
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module Pocket
2
+ class Client
3
+ # http://getpocket.com/developer/docs/v3/add
4
+ module Add
5
+ # required params: url, consumer_key, access_token
6
+ def add params
7
+ response = connection.post("/v3/add", params)
8
+ response.body
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Pocket
2
+ class Client
3
+ # http://getpocket.com/developer/docs/v3/modify
4
+ module Modify
5
+ # required params: actions, consumer_key, access_token
6
+ def modify actions
7
+ response = connection.post("/v3/send", {actions: actions})
8
+ response.body
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Pocket
2
+ class Client
3
+ # http://getpocket.com/developer/docs/v3/retrieve
4
+ module Retrieve
5
+ # required params: consumer_key, access_token
6
+ def retrieve params=[]
7
+ response = connection.post("/v3/get", params)
8
+ response.body
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,87 @@
1
+ require 'faraday'
2
+ require File.expand_path('../version', __FILE__)
3
+
4
+ module Pocket
5
+ # Defines constants and methods related to configuration
6
+ module Configuration
7
+ # An array of valid keys in the options hash when configuring a {Pocket::API}
8
+ VALID_OPTIONS_KEYS = [
9
+ :adapter,
10
+ :consumer_key,
11
+ :access_token,
12
+ :endpoint,
13
+ :redirect_uri,
14
+ :format,
15
+ :user_agent,
16
+ :proxy
17
+ ].freeze
18
+
19
+ # An array of valid request/response formats
20
+ #
21
+ # @note Not all methods support the XML format.
22
+ VALID_FORMATS = [
23
+ :json].freeze
24
+
25
+ # The adapter that will be used to connect if none is set
26
+ #
27
+ # @note The default faraday adapter is Net::HTTP.
28
+ DEFAULT_ADAPTER = Faraday.default_adapter
29
+
30
+ # By default, don't set an application ID
31
+ DEFAULT_CONSUMER_KEY = nil
32
+
33
+ # By default, don't set an application redirect uri
34
+ DEFAULT_REDIRECT_URI = nil
35
+
36
+ # By default, don't set a user access token
37
+ DEFAULT_ACCESS_TOKEN = nil
38
+
39
+ # The endpoint that will be used to connect if none is set
40
+ #
41
+ # @note There is no reason to use any other endpoint at this time
42
+ DEFAULT_ENDPOINT = 'https://getpocket.com/v3/'.freeze
43
+
44
+ # The response format appended to the path and sent in the 'Accept' header if none is set
45
+ #
46
+ # @note JSON is the only available format at this time
47
+ DEFAULT_FORMAT = :json
48
+
49
+ # By default, don't use a proxy server
50
+ DEFAULT_PROXY = nil
51
+
52
+ # The user agent that will be sent to the API endpoint if none is set
53
+ DEFAULT_USER_AGENT = "Pocket Ruby Gem #{Pocket::VERSION}".freeze
54
+
55
+ # @private
56
+ attr_accessor *VALID_OPTIONS_KEYS
57
+
58
+ # When this module is extended, set all configuration options to their default values
59
+ def self.extended(base)
60
+ base.reset
61
+ end
62
+
63
+ # Convenience method to allow configuration options to be set in a block
64
+ def configure
65
+ yield self
66
+ end
67
+
68
+ # Create a hash of options and their values
69
+ def options
70
+ VALID_OPTIONS_KEYS.inject({}) do |option, key|
71
+ option.merge!(key => send(key))
72
+ end
73
+ end
74
+
75
+ # Reset all configuration options to defaults
76
+ def reset
77
+ self.adapter = DEFAULT_ADAPTER
78
+ self.consumer_key = DEFAULT_CONSUMER_KEY
79
+ self.access_token = DEFAULT_ACCESS_TOKEN
80
+ self.endpoint = DEFAULT_ENDPOINT
81
+ self.redirect_uri = DEFAULT_REDIRECT_URI
82
+ self.format = DEFAULT_FORMAT
83
+ self.user_agent = DEFAULT_USER_AGENT
84
+ self.proxy = DEFAULT_PROXY
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,29 @@
1
+ require 'faraday_middleware'
2
+ Dir[File.expand_path('../../faraday/*.rb', __FILE__)].each{|f| require f}
3
+
4
+ module Pocket
5
+ # @private
6
+ module Connection
7
+ private
8
+
9
+ def connection(raw=false)
10
+ options = {
11
+ :headers => {'User-Agent' => user_agent},
12
+ :proxy => proxy,
13
+ :ssl => {:verify => false},
14
+ :url => endpoint,
15
+ }
16
+
17
+ Faraday::Connection.new(options) do |conn|
18
+ conn.use FaradayMiddleware::PocketOAuth, consumer_key, access_token
19
+ conn.use Faraday::Response::RaisePocketError
20
+
21
+ conn.request :json
22
+
23
+ conn.response :json, :content_type => /\bjson$/
24
+
25
+ conn.adapter Faraday.default_adapter
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ module Pocket
2
+ # Custom error class for rescuing from all Pocket errors
3
+ class Error < StandardError; end
4
+
5
+ # Raised when Pocket returns the HTTP status code 400
6
+ class BadRequest < Error; end
7
+
8
+ # Raised when Pocket returns the HTTP status code 404
9
+ class NotFound < Error; end
10
+
11
+ # Raised when Pocket returns the HTTP status code 500
12
+ class InternalServerError < Error; end
13
+
14
+ # Raised when Pocket returns the HTTP status code 503
15
+ class ServiceUnavailable < Error; end
16
+
17
+ # Raised when a subscription payload hash is invalid
18
+ class InvalidSignature < Error; end
19
+ end
@@ -0,0 +1,45 @@
1
+ module Pocket
2
+ # Defines HTTP request methods
3
+ module OAuth
4
+ # Return URL for OAuth authorization
5
+ def authorize_url(options={})
6
+ params = access_token_params.merge(options)
7
+ params.delete(:consumer_key) # shouldn't be exposed publically
8
+ # Pocket renames `code` to `request_token` for some reason in this call
9
+ params[:request_token] ||= params.delete(:code)
10
+ connection.build_url("/auth/authorize", params).to_s
11
+ end
12
+
13
+ # Return a Pocket code
14
+ def get_code(options={})
15
+ params = access_token_params.merge(options)
16
+ response = connection.post 'oauth/request', params
17
+ results = Hash[URI.decode_www_form(response.body)]
18
+ code = results['code']
19
+ end
20
+
21
+ # Return an access token from authorization
22
+ def get_access_token(code, options={})
23
+ params = access_token_params.merge(:code => code).merge(options)
24
+ response = connection.post 'oauth/authorize', params
25
+ results = Hash[URI.decode_www_form(response.body)]
26
+ access_token = results['access_token']
27
+ end
28
+
29
+ # Return result from authorization
30
+ def get_result(code, options={})
31
+ params = access_token_params.merge(:code => code).merge(options)
32
+ response = connection.post 'oauth/authorize', params
33
+ results = Hash[URI.decode_www_form(response.body)]
34
+ end
35
+
36
+ private
37
+
38
+ def access_token_params
39
+ {
40
+ :consumer_key => consumer_key,
41
+ :redirect_uri => redirect_uri
42
+ }
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module Pocket
2
+ VERSION = '0.0.7'
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/pocket/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.add_development_dependency('sinatra', '~> 1.3.3')
6
+ s.add_development_dependency('multi_xml')
7
+ s.add_runtime_dependency('faraday', ['>= 0.7'])
8
+ s.add_runtime_dependency('faraday_middleware')
9
+ s.add_runtime_dependency('multi_json', '>= 1.0.3', '~> 1.0')
10
+ s.add_runtime_dependency('hashie', '>= 0.4.0')
11
+ s.authors = ["Turadg Aleahmad","Jason Ng PT"]
12
+ s.description = %q{A Ruby wrapper for the Pocket API v3 (Add, Modify and Retrieve)}
13
+ s.email = ['turadg@aleahmad.net',"me@jasonngpt.com"]
14
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
+ s.files = `git ls-files`.split("\n")
16
+ s.homepage = 'https://github.com/turadg/pocket-ruby'
17
+ s.name = 'pocket-ruby-andyw8'
18
+ s.platform = Gem::Platform::RUBY
19
+ s.require_paths = ['lib']
20
+ s.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if s.respond_to? :required_rubygems_version=
21
+ s.rubyforge_project = s.name
22
+ s.summary = %q{Ruby wrapper for the Pocket API v3}
23
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
+ s.version = Pocket::VERSION
25
+ end
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pocket-ruby-andyw8
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Turadg Aleahmad
8
+ - Jason Ng PT
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2021-03-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 1.3.3
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 1.3.3
28
+ - !ruby/object:Gem::Dependency
29
+ name: multi_xml
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: faraday
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0.7'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0.7'
56
+ - !ruby/object:Gem::Dependency
57
+ name: faraday_middleware
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: multi_json
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.0'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 1.0.3
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '1.0'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.3
90
+ - !ruby/object:Gem::Dependency
91
+ name: hashie
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.0
97
+ type: :runtime
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.4.0
104
+ description: A Ruby wrapper for the Pocket API v3 (Add, Modify and Retrieve)
105
+ email:
106
+ - turadg@aleahmad.net
107
+ - me@jasonngpt.com
108
+ executables: []
109
+ extensions: []
110
+ extra_rdoc_files: []
111
+ files:
112
+ - ".gitignore"
113
+ - ".yardopts"
114
+ - CHANGELOG.md
115
+ - Gemfile
116
+ - LICENSE.md
117
+ - README.md
118
+ - Rakefile
119
+ - demo-server.rb
120
+ - lib/faraday/pocket_oauth.rb
121
+ - lib/faraday/raise_pocket_error.rb
122
+ - lib/pocket-ruby.rb
123
+ - lib/pocket/api.rb
124
+ - lib/pocket/client.rb
125
+ - lib/pocket/client/add.rb
126
+ - lib/pocket/client/modify.rb
127
+ - lib/pocket/client/retrieve.rb
128
+ - lib/pocket/configuration.rb
129
+ - lib/pocket/connection.rb
130
+ - lib/pocket/error.rb
131
+ - lib/pocket/oauth.rb
132
+ - lib/pocket/version.rb
133
+ - pocket-ruby.gemspec
134
+ homepage: https://github.com/turadg/pocket-ruby
135
+ licenses: []
136
+ metadata: {}
137
+ post_install_message:
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: 1.3.6
151
+ requirements: []
152
+ rubygems_version: 3.0.3
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: Ruby wrapper for the Pocket API v3
156
+ test_files: []