feedlr 0.1.0

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 (123) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +22 -0
  5. data/.yardopts +5 -0
  6. data/Gemfile +32 -0
  7. data/Guardfile +7 -0
  8. data/LICENSE.md +16 -0
  9. data/README.md +85 -0
  10. data/Rakefile +10 -0
  11. data/feedlr.gemspec +27 -0
  12. data/lib/feedlr.rb +34 -0
  13. data/lib/feedlr/base.rb +4 -0
  14. data/lib/feedlr/client.rb +60 -0
  15. data/lib/feedlr/collection.rb +15 -0
  16. data/lib/feedlr/error.rb +79 -0
  17. data/lib/feedlr/gateway/categories.rb +36 -0
  18. data/lib/feedlr/gateway/entries.rb +40 -0
  19. data/lib/feedlr/gateway/evernote.rb +37 -0
  20. data/lib/feedlr/gateway/facebook.rb +28 -0
  21. data/lib/feedlr/gateway/feeds.rb +26 -0
  22. data/lib/feedlr/gateway/markers.rb +195 -0
  23. data/lib/feedlr/gateway/microsoft.rb +30 -0
  24. data/lib/feedlr/gateway/mixes.rb +29 -0
  25. data/lib/feedlr/gateway/opml.rb +26 -0
  26. data/lib/feedlr/gateway/preferences.rb +25 -0
  27. data/lib/feedlr/gateway/profile.rb +25 -0
  28. data/lib/feedlr/gateway/search.rb +41 -0
  29. data/lib/feedlr/gateway/shorten.rb +17 -0
  30. data/lib/feedlr/gateway/streams.rb +42 -0
  31. data/lib/feedlr/gateway/subscriptions.rb +43 -0
  32. data/lib/feedlr/gateway/tags.rb +88 -0
  33. data/lib/feedlr/gateway/topics.rb +43 -0
  34. data/lib/feedlr/gateway/twitter.rb +29 -0
  35. data/lib/feedlr/mapper.rb +25 -0
  36. data/lib/feedlr/rate_limit.rb +21 -0
  37. data/lib/feedlr/request.rb +148 -0
  38. data/lib/feedlr/success.rb +5 -0
  39. data/lib/feedlr/version.rb +15 -0
  40. data/spec/cassettes/Feedlr_Gateway_Categories/_change_category_label/resoponds_with_hashie_object.yml +50 -0
  41. data/spec/cassettes/Feedlr_Gateway_Categories/_delete_category/resoponds_with_hashie_object.yml +50 -0
  42. data/spec/cassettes/Feedlr_Gateway_Categories/_user_categories/resoponds_with_hashie_object.yml +52 -0
  43. data/spec/cassettes/Feedlr_Gateway_Entries/_add_entry/resoponds_with_hashie_object.yml +52 -0
  44. data/spec/cassettes/Feedlr_Gateway_Entries/_user_entries/resoponds_with_hashie_object.yml +337 -0
  45. data/spec/cassettes/Feedlr_Gateway_Evernote/_add_to_evernote/resoponds_with_hashie_object.yml +50 -0
  46. data/spec/cassettes/Feedlr_Gateway_Evernote/_evernote_notebooks/resoponds_with_hashie_object.yml +51 -0
  47. data/spec/cassettes/Feedlr_Gateway_Evernote/_unlink_evernote/resoponds_with_hashie_object.yml +50 -0
  48. data/spec/cassettes/Feedlr_Gateway_Facebook/_facebook_suggestions/resoponds_with_hashie_object.yml +52 -0
  49. data/spec/cassettes/Feedlr_Gateway_Facebook/_unlink_facebook/resoponds_with_hashie_object.yml +50 -0
  50. data/spec/cassettes/Feedlr_Gateway_Feeds/_feeds/resoponds_with_hashie_object.yml +51 -0
  51. data/spec/cassettes/Feedlr_Gateway_Markers/_lastest_tagged_entries/resoponds_with_hashie_object.yml +52 -0
  52. data/spec/cassettes/Feedlr_Gateway_Markers/_mark_articles_as_read/resoponds_with_hashie_object.yml +50 -0
  53. data/spec/cassettes/Feedlr_Gateway_Markers/_mark_articles_as_unread/resoponds_with_hashie_object.yml +50 -0
  54. data/spec/cassettes/Feedlr_Gateway_Markers/_mark_categories_as_read/with_asOf_param/resoponds_with_hashie_object.yml +50 -0
  55. data/spec/cassettes/Feedlr_Gateway_Markers/_mark_categories_as_read/with_lastReadEntryId_param/resoponds_with_hashie_object.yml +50 -0
  56. data/spec/cassettes/Feedlr_Gateway_Markers/_mark_feeds_as_read/with_asOf_param/resoponds_with_hashie_object.yml +50 -0
  57. data/spec/cassettes/Feedlr_Gateway_Markers/_mark_feeds_as_read/with_lastReadEntryId_param/resoponds_with_hashie_object.yml +50 -0
  58. data/spec/cassettes/Feedlr_Gateway_Markers/_sync_read_counts/resoponds_with_hashie_object.yml +52 -0
  59. data/spec/cassettes/Feedlr_Gateway_Markers/_undo_mark_categories_as_read/resoponds_with_hashie_object.yml +50 -0
  60. data/spec/cassettes/Feedlr_Gateway_Markers/_undo_mark_feeds_as_read/resoponds_with_hashie_object.yml +50 -0
  61. data/spec/cassettes/Feedlr_Gateway_Markers/_user_unread_counts/resoponds_with_hashie_object.yml +52 -0
  62. data/spec/cassettes/Feedlr_Gateway_Microsoft/_add_to_onenote/resoponds_with_hashie_object.yml +52 -0
  63. data/spec/cassettes/Feedlr_Gateway_Microsoft/_unlink_microsoft/resoponds_with_hashie_object.yml +50 -0
  64. data/spec/cassettes/Feedlr_Gateway_Mixes/_stream_most_engaging/resoponds_with_hashie_object.yml +102 -0
  65. data/spec/cassettes/Feedlr_Gateway_Opml/_import_opml/resoponds_with_hashie_object.yml +63 -0
  66. data/spec/cassettes/Feedlr_Gateway_Opml/_user_opml/resoponds_with_hashie_object.yml +80 -0
  67. data/spec/cassettes/Feedlr_Gateway_Preferences/_preferences/resoponds_with_hashie_object.yml +52 -0
  68. data/spec/cassettes/Feedlr_Gateway_Preferences/_update_preferences/resoponds_with_hashie_object.yml +50 -0
  69. data/spec/cassettes/Feedlr_Gateway_Profile/_get_profile/resoponds_with_hashie_object.yml +54 -0
  70. data/spec/cassettes/Feedlr_Gateway_Profile/_profile/resoponds_with_hashie_object.yml +54 -0
  71. data/spec/cassettes/Feedlr_Gateway_Profile/_update_profile/resoponds_with_hashie_object.yml +54 -0
  72. data/spec/cassettes/Feedlr_Gateway_Search/_search_feeds/resoponds_with_hashie_object.yml +303 -0
  73. data/spec/cassettes/Feedlr_Gateway_Search/_search_stream/resoponds_with_hashie_object.yml +1941 -0
  74. data/spec/cassettes/Feedlr_Gateway_Shorten/_shorten/resoponds_with_hashie_object.yml +51 -0
  75. data/spec/cassettes/Feedlr_Gateway_Streams/_stream_entries_contents/resoponds_with_hashie_object.yml +1150 -0
  76. data/spec/cassettes/Feedlr_Gateway_Streams/_stream_entries_ids/resoponds_with_hashie_object.yml +51 -0
  77. data/spec/cassettes/Feedlr_Gateway_Subscriptions/_add_subscription/resoponds_with_hashie_object.yml +53 -0
  78. data/spec/cassettes/Feedlr_Gateway_Subscriptions/_create_subscription/resoponds_with_hashie_object.yml +51 -0
  79. data/spec/cassettes/Feedlr_Gateway_Subscriptions/_delete_subscription/resoponds_with_hashie_object.yml +50 -0
  80. data/spec/cassettes/Feedlr_Gateway_Subscriptions/_update_subscription/resoponds_with_hashie_object.yml +51 -0
  81. data/spec/cassettes/Feedlr_Gateway_Subscriptions/_user_subscriptions/resoponds_with_hashie_object.yml +57 -0
  82. data/spec/cassettes/Feedlr_Gateway_Tags/_change_tag_label/resoponds_with_hashie_object.yml +50 -0
  83. data/spec/cassettes/Feedlr_Gateway_Tags/_delete_tags/resoponds_with_hashie_object.yml +50 -0
  84. data/spec/cassettes/Feedlr_Gateway_Tags/_get_tags/resoponds_with_hashie_object.yml +50 -0
  85. data/spec/cassettes/Feedlr_Gateway_Tags/_tag_entries/resoponds_with_hashie_object.yml +50 -0
  86. data/spec/cassettes/Feedlr_Gateway_Tags/_untag_entries/resoponds_with_hashie_object.yml +50 -0
  87. data/spec/cassettes/Feedlr_Gateway_Tags/_user_tags/resoponds_with_hashie_object.yml +50 -0
  88. data/spec/cassettes/Feedlr_Gateway_Topics/_add_topic/resoponds_with_hashie_object.yml +50 -0
  89. data/spec/cassettes/Feedlr_Gateway_Topics/_delete_topic/resoponds_with_hashie_object.yml +50 -0
  90. data/spec/cassettes/Feedlr_Gateway_Topics/_update_topic/resoponds_with_hashie_object.yml +50 -0
  91. data/spec/cassettes/Feedlr_Gateway_Topics/_user_topics/resoponds_with_hashie_object.yml +50 -0
  92. data/spec/cassettes/Feedlr_Gateway_Twitter/_twitter_suggestions/resoponds_with_hashie_object.yml +50 -0
  93. data/spec/cassettes/Feedlr_Gateway_Twitter/_unlink_twitter/resoponds_with_hashie_object.yml +50 -0
  94. data/spec/feedly/base_spec.rb +10 -0
  95. data/spec/feedly/client_spec.rb +49 -0
  96. data/spec/feedly/collection_spec.rb +21 -0
  97. data/spec/feedly/error_spec.rb +59 -0
  98. data/spec/feedly/feedly_spec.rb +54 -0
  99. data/spec/feedly/gateway/categories_spec.rb +59 -0
  100. data/spec/feedly/gateway/entries_spec.rb +67 -0
  101. data/spec/feedly/gateway/evernote_spec.rb +60 -0
  102. data/spec/feedly/gateway/facebook_spec.rb +36 -0
  103. data/spec/feedly/gateway/feeds_spec.rb +36 -0
  104. data/spec/feedly/gateway/markers_spec.rb +295 -0
  105. data/spec/feedly/gateway/microsoft_spec.rb +40 -0
  106. data/spec/feedly/gateway/mixes_spec.rb +27 -0
  107. data/spec/feedly/gateway/opml_spec.rb +57 -0
  108. data/spec/feedly/gateway/preferences_spec.rb +41 -0
  109. data/spec/feedly/gateway/profile_spec.rb +40 -0
  110. data/spec/feedly/gateway/search_spec.rb +43 -0
  111. data/spec/feedly/gateway/shorten_spec.rb +27 -0
  112. data/spec/feedly/gateway/streams_spec.rb +44 -0
  113. data/spec/feedly/gateway/subscriptions_spec.rb +87 -0
  114. data/spec/feedly/gateway/tags_spec.rb +129 -0
  115. data/spec/feedly/gateway/topics_spec.rb +77 -0
  116. data/spec/feedly/gateway/twitter_spec.rb +37 -0
  117. data/spec/feedly/mapper_spec.rb +25 -0
  118. data/spec/feedly/rate_limit_spec.rb +41 -0
  119. data/spec/feedly/request_spec.rb +74 -0
  120. data/spec/feedly/success_spec.rb +7 -0
  121. data/spec/feedly/version_spec.rb +9 -0
  122. data/spec/helper.rb +52 -0
  123. metadata +319 -0
@@ -0,0 +1,37 @@
1
+ require 'helper'
2
+
3
+ describe Feedlr::Gateway::Twitter, vcr: { record: :new_episodes } do
4
+ let(:client) do
5
+ Feedlr::Client.new(sandbox: true, oauth_access_token: access_token)
6
+ end
7
+
8
+ describe '#unlink_twitter' do
9
+ it 'sends a delete request' do
10
+ stub = stub_request(:delete, 'http://sandbox.feedly.com/v3/twitter/auth')
11
+
12
+ client.unlink_twitter
13
+ expect(stub).to have_been_requested
14
+ end
15
+
16
+ it 'resoponds with hashie object' do
17
+ subject = client.unlink_twitter
18
+ expect(subject).to be_a(Feedlr::Success)
19
+ end
20
+ end
21
+
22
+ describe '#twitter_suggestions' do
23
+ it 'sends a get request' do
24
+ stub = stub_request(:get,
25
+ 'http://sandbox.feedly.com/v3/twitter/suggestions')
26
+ .to_return(body: '{ }')
27
+ client.twitter_suggestions
28
+ expect(stub).to have_been_requested
29
+ end
30
+
31
+ it 'resoponds with hashie object' do
32
+ subject = client.twitter_suggestions
33
+ expect(subject.size).to be >= 1
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,25 @@
1
+ require 'helper'
2
+
3
+ describe Feedlr::Mapper do
4
+ describe 'Mapper.build' do
5
+ it 'returns Feedlr::Base object when the input is a non empty hash' do
6
+ obj = { a: 1 , b: 2 }
7
+ expect(Feedlr::Mapper.build(obj)).to eq(Feedlr::Base.new(obj))
8
+ end
9
+ it 'returns Feedlr::Collection object when the input is an array' do
10
+ obj = [{ a: 1 , b: 2 } , { c: 3 , d: 4 }]
11
+ expect(Feedlr::Mapper.build(obj)).to eq(Feedlr::Collection.new(obj))
12
+ end
13
+
14
+ it 'returns Feedlr::Success object if input is an empty hash' do
15
+ obj = {}
16
+ expect(Feedlr::Mapper.build(obj)).to eq(Feedlr::Success.new)
17
+ end
18
+
19
+ it "returns Feedlr::Success object if input is not \
20
+ Hash with content or Array" do
21
+ obj = 5
22
+ expect(Feedlr::Mapper.build(obj)).to eq(Feedlr::Success.new)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,41 @@
1
+ require 'helper'
2
+
3
+ describe Feedlr::RateLimit do
4
+
5
+ describe '#count' do
6
+ it 'returns an Integer when x-ratelimit-count header is set' do
7
+ rate_limit = Feedlr::RateLimit.new('x-ratelimit-count' => '149')
8
+ expect(rate_limit.count).to be_an Integer
9
+ expect(rate_limit.count).to eq(149)
10
+ end
11
+ it 'returns nil when x-ratelimit-count header is not set' do
12
+ rate_limit = Feedlr::RateLimit.new
13
+ expect(rate_limit.count).to be_nil
14
+ end
15
+ end
16
+
17
+ describe '#limit' do
18
+ it 'returns an Integer when x-ratelimit-limit header is set' do
19
+ rate_limit = Feedlr::RateLimit.new('x-ratelimit-limit' => '150')
20
+ expect(rate_limit.limit).to be_an Integer
21
+ expect(rate_limit.limit).to eq(150)
22
+ end
23
+ it 'returns nil when x-ratelimit-limit header is not set' do
24
+ rate_limit = Feedlr::RateLimit.new
25
+ expect(rate_limit.limit).to be_nil
26
+ end
27
+ end
28
+
29
+ describe '#remaining' do
30
+ it 'returns an Integer when x-ratelimit-remaining header is set' do
31
+ rate_limit = Feedlr::RateLimit.new('x-ratelimit-remaining' => '149')
32
+ expect(rate_limit.remaining).to be_an Integer
33
+ expect(rate_limit.remaining).to eq(149)
34
+ end
35
+ it 'returns nil when x-ratelimit-remaining header is not set' do
36
+ rate_limit = Feedlr::RateLimit.new
37
+ expect(rate_limit.remaining).to be_nil
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,74 @@
1
+ require 'helper'
2
+
3
+ describe Feedlr::Request do
4
+ let(:client) { Feedlr::Client.new(sandbox: true) }
5
+ let(:response) { Hashie::Mash.new(status: 200, body: { a: :b }, headers: {}) }
6
+ describe '#build_object' do
7
+ %w(get delete post put).each do |verb|
8
+ before :each do
9
+ allow(client).to receive(verb).and_return(response)
10
+ end
11
+
12
+ it 'sends a request' do
13
+ params = { q: 'one', count: '30' }
14
+ headers = { h1: 'h1one', h2: 'h2one' }
15
+ expect(client).to receive(verb)
16
+ .with('/categories', params, headers)
17
+ client.send(:build_object, verb, '/categories', params, headers)
18
+ end
19
+
20
+ it 'builds an object' do
21
+ res = client.send(:build_object, verb, '/categories')
22
+ expect(res).to be_a(Feedlr::Base)
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ describe '#request' do
29
+
30
+ let(:request) { -> { client.send(:request, :get, '/path', nil) } }
31
+
32
+ it 'runs the request and verifies it' do
33
+ allow(client).to receive(:run_request)
34
+ allow(client).to receive(:verify_success)
35
+ expect(client).to receive(:run_request)
36
+ expect(client).to receive(:verify_success)
37
+ request.call
38
+ end
39
+
40
+ it 'catches and reraises Faraday timeout errors' do
41
+ allow(client).to receive(:run_request)
42
+ .and_raise(Faraday::Error::TimeoutError.new('execution expired'))
43
+ expect(request).to raise_error(Feedlr::Error::RequestTimeout)
44
+ end
45
+
46
+ it 'catches and reraises Timeout errors' do
47
+ allow(client).to receive(:run_request)
48
+ .and_raise(Timeout::Error.new('execution expired'))
49
+ expect(request).to raise_error(Feedlr::Error::RequestTimeout)
50
+ end
51
+
52
+ it 'catches and reraises Faraday client errors' do
53
+ allow(client).to receive(:run_request)
54
+ .and_raise(Faraday::Error::ClientError.new('connection failed'))
55
+ expect(request).to raise_error(Feedlr::Error)
56
+ end
57
+
58
+ it 'catches and reraises JSON::ParserError errors' do
59
+ allow(client).to receive(:run_request)
60
+ .and_raise(JSON::ParserError.new('unexpected token'))
61
+ expect(request).to raise_error(Feedlr::Error)
62
+ end
63
+
64
+ end
65
+
66
+ describe '#verify_success' do
67
+ it 'raises an exception if response code is not a success' do
68
+ response = Hashie::Mash.new(status: 400, body: { a: :b }, headers: {})
69
+ expect { client.send(:verify_success, response) }
70
+ .to raise_error(Feedlr::Error::BadRequest)
71
+ end
72
+ end
73
+
74
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ describe Feedlr::Success do
4
+ it 'should be an embty Feedlr::Base' do
5
+ expect(Feedlr::Success.new).to eql(Feedlr::Base.new({}))
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'helper'
2
+
3
+ describe Feedlr do
4
+
5
+ it 'must be defined' do
6
+ expect(Feedlr::Version).to be
7
+ end
8
+
9
+ end
@@ -0,0 +1,52 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+
5
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
6
+ SimpleCov::Formatter::HTMLFormatter,
7
+ Coveralls::SimpleCov::Formatter]
8
+
9
+ SimpleCov.start do
10
+ add_filter '/spec/'
11
+ minimum_coverage(99.15)
12
+ end
13
+
14
+ require_relative '../lib/feedlr.rb'
15
+
16
+ require 'pry'
17
+ require 'feedlr'
18
+ require 'rspec'
19
+ require 'webmock/rspec'
20
+ require 'vcr'
21
+ require 'cgi'
22
+ require 'multi_json'
23
+
24
+
25
+
26
+ VCR.configure do |c|
27
+ c.cassette_library_dir = 'spec/cassettes'
28
+ c.hook_into :webmock
29
+ c.configure_rspec_metadata!
30
+ c.ignore_localhost = true
31
+ # c.default_cassette_options = { :record => :none }
32
+ end
33
+
34
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
35
+ RSpec.configure do |config|
36
+ config.treat_symbols_as_metadata_keys_with_true_values = true
37
+ config.run_all_when_everything_filtered = true
38
+ config.filter_run :focus
39
+
40
+ # Run specs in random order to surface order dependencies. If you find an
41
+ # order dependency and want to debug it, you can fix the order by providing
42
+ # the seed, which is printed after each run.
43
+ # --seed 1234
44
+ config.order = 'random'
45
+ config.expect_with :rspec do |c|
46
+ c.syntax = :expect
47
+ end
48
+ end
49
+
50
+ def access_token
51
+ '_oauth_access_token'
52
+ end
metadata ADDED
@@ -0,0 +1,319 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: feedlr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Khaled alHabache
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: hashie
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: multi_xml
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.5'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: multi_json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: faraday
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday_middleware
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.9'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.9'
83
+ description: A Ruby interface to the Feedly API.
84
+ email:
85
+ - khellls@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - ".yardopts"
94
+ - Gemfile
95
+ - Guardfile
96
+ - LICENSE.md
97
+ - README.md
98
+ - Rakefile
99
+ - feedlr.gemspec
100
+ - lib/feedlr.rb
101
+ - lib/feedlr/base.rb
102
+ - lib/feedlr/client.rb
103
+ - lib/feedlr/collection.rb
104
+ - lib/feedlr/error.rb
105
+ - lib/feedlr/gateway/categories.rb
106
+ - lib/feedlr/gateway/entries.rb
107
+ - lib/feedlr/gateway/evernote.rb
108
+ - lib/feedlr/gateway/facebook.rb
109
+ - lib/feedlr/gateway/feeds.rb
110
+ - lib/feedlr/gateway/markers.rb
111
+ - lib/feedlr/gateway/microsoft.rb
112
+ - lib/feedlr/gateway/mixes.rb
113
+ - lib/feedlr/gateway/opml.rb
114
+ - lib/feedlr/gateway/preferences.rb
115
+ - lib/feedlr/gateway/profile.rb
116
+ - lib/feedlr/gateway/search.rb
117
+ - lib/feedlr/gateway/shorten.rb
118
+ - lib/feedlr/gateway/streams.rb
119
+ - lib/feedlr/gateway/subscriptions.rb
120
+ - lib/feedlr/gateway/tags.rb
121
+ - lib/feedlr/gateway/topics.rb
122
+ - lib/feedlr/gateway/twitter.rb
123
+ - lib/feedlr/mapper.rb
124
+ - lib/feedlr/rate_limit.rb
125
+ - lib/feedlr/request.rb
126
+ - lib/feedlr/success.rb
127
+ - lib/feedlr/version.rb
128
+ - spec/cassettes/Feedlr_Gateway_Categories/_change_category_label/resoponds_with_hashie_object.yml
129
+ - spec/cassettes/Feedlr_Gateway_Categories/_delete_category/resoponds_with_hashie_object.yml
130
+ - spec/cassettes/Feedlr_Gateway_Categories/_user_categories/resoponds_with_hashie_object.yml
131
+ - spec/cassettes/Feedlr_Gateway_Entries/_add_entry/resoponds_with_hashie_object.yml
132
+ - spec/cassettes/Feedlr_Gateway_Entries/_user_entries/resoponds_with_hashie_object.yml
133
+ - spec/cassettes/Feedlr_Gateway_Evernote/_add_to_evernote/resoponds_with_hashie_object.yml
134
+ - spec/cassettes/Feedlr_Gateway_Evernote/_evernote_notebooks/resoponds_with_hashie_object.yml
135
+ - spec/cassettes/Feedlr_Gateway_Evernote/_unlink_evernote/resoponds_with_hashie_object.yml
136
+ - spec/cassettes/Feedlr_Gateway_Facebook/_facebook_suggestions/resoponds_with_hashie_object.yml
137
+ - spec/cassettes/Feedlr_Gateway_Facebook/_unlink_facebook/resoponds_with_hashie_object.yml
138
+ - spec/cassettes/Feedlr_Gateway_Feeds/_feeds/resoponds_with_hashie_object.yml
139
+ - spec/cassettes/Feedlr_Gateway_Markers/_lastest_tagged_entries/resoponds_with_hashie_object.yml
140
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_articles_as_read/resoponds_with_hashie_object.yml
141
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_articles_as_unread/resoponds_with_hashie_object.yml
142
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_categories_as_read/with_asOf_param/resoponds_with_hashie_object.yml
143
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_categories_as_read/with_lastReadEntryId_param/resoponds_with_hashie_object.yml
144
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_feeds_as_read/with_asOf_param/resoponds_with_hashie_object.yml
145
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_feeds_as_read/with_lastReadEntryId_param/resoponds_with_hashie_object.yml
146
+ - spec/cassettes/Feedlr_Gateway_Markers/_sync_read_counts/resoponds_with_hashie_object.yml
147
+ - spec/cassettes/Feedlr_Gateway_Markers/_undo_mark_categories_as_read/resoponds_with_hashie_object.yml
148
+ - spec/cassettes/Feedlr_Gateway_Markers/_undo_mark_feeds_as_read/resoponds_with_hashie_object.yml
149
+ - spec/cassettes/Feedlr_Gateway_Markers/_user_unread_counts/resoponds_with_hashie_object.yml
150
+ - spec/cassettes/Feedlr_Gateway_Microsoft/_add_to_onenote/resoponds_with_hashie_object.yml
151
+ - spec/cassettes/Feedlr_Gateway_Microsoft/_unlink_microsoft/resoponds_with_hashie_object.yml
152
+ - spec/cassettes/Feedlr_Gateway_Mixes/_stream_most_engaging/resoponds_with_hashie_object.yml
153
+ - spec/cassettes/Feedlr_Gateway_Opml/_import_opml/resoponds_with_hashie_object.yml
154
+ - spec/cassettes/Feedlr_Gateway_Opml/_user_opml/resoponds_with_hashie_object.yml
155
+ - spec/cassettes/Feedlr_Gateway_Preferences/_preferences/resoponds_with_hashie_object.yml
156
+ - spec/cassettes/Feedlr_Gateway_Preferences/_update_preferences/resoponds_with_hashie_object.yml
157
+ - spec/cassettes/Feedlr_Gateway_Profile/_get_profile/resoponds_with_hashie_object.yml
158
+ - spec/cassettes/Feedlr_Gateway_Profile/_profile/resoponds_with_hashie_object.yml
159
+ - spec/cassettes/Feedlr_Gateway_Profile/_update_profile/resoponds_with_hashie_object.yml
160
+ - spec/cassettes/Feedlr_Gateway_Search/_search_feeds/resoponds_with_hashie_object.yml
161
+ - spec/cassettes/Feedlr_Gateway_Search/_search_stream/resoponds_with_hashie_object.yml
162
+ - spec/cassettes/Feedlr_Gateway_Shorten/_shorten/resoponds_with_hashie_object.yml
163
+ - spec/cassettes/Feedlr_Gateway_Streams/_stream_entries_contents/resoponds_with_hashie_object.yml
164
+ - spec/cassettes/Feedlr_Gateway_Streams/_stream_entries_ids/resoponds_with_hashie_object.yml
165
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_add_subscription/resoponds_with_hashie_object.yml
166
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_create_subscription/resoponds_with_hashie_object.yml
167
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_delete_subscription/resoponds_with_hashie_object.yml
168
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_update_subscription/resoponds_with_hashie_object.yml
169
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_user_subscriptions/resoponds_with_hashie_object.yml
170
+ - spec/cassettes/Feedlr_Gateway_Tags/_change_tag_label/resoponds_with_hashie_object.yml
171
+ - spec/cassettes/Feedlr_Gateway_Tags/_delete_tags/resoponds_with_hashie_object.yml
172
+ - spec/cassettes/Feedlr_Gateway_Tags/_get_tags/resoponds_with_hashie_object.yml
173
+ - spec/cassettes/Feedlr_Gateway_Tags/_tag_entries/resoponds_with_hashie_object.yml
174
+ - spec/cassettes/Feedlr_Gateway_Tags/_untag_entries/resoponds_with_hashie_object.yml
175
+ - spec/cassettes/Feedlr_Gateway_Tags/_user_tags/resoponds_with_hashie_object.yml
176
+ - spec/cassettes/Feedlr_Gateway_Topics/_add_topic/resoponds_with_hashie_object.yml
177
+ - spec/cassettes/Feedlr_Gateway_Topics/_delete_topic/resoponds_with_hashie_object.yml
178
+ - spec/cassettes/Feedlr_Gateway_Topics/_update_topic/resoponds_with_hashie_object.yml
179
+ - spec/cassettes/Feedlr_Gateway_Topics/_user_topics/resoponds_with_hashie_object.yml
180
+ - spec/cassettes/Feedlr_Gateway_Twitter/_twitter_suggestions/resoponds_with_hashie_object.yml
181
+ - spec/cassettes/Feedlr_Gateway_Twitter/_unlink_twitter/resoponds_with_hashie_object.yml
182
+ - spec/feedly/base_spec.rb
183
+ - spec/feedly/client_spec.rb
184
+ - spec/feedly/collection_spec.rb
185
+ - spec/feedly/error_spec.rb
186
+ - spec/feedly/feedly_spec.rb
187
+ - spec/feedly/gateway/categories_spec.rb
188
+ - spec/feedly/gateway/entries_spec.rb
189
+ - spec/feedly/gateway/evernote_spec.rb
190
+ - spec/feedly/gateway/facebook_spec.rb
191
+ - spec/feedly/gateway/feeds_spec.rb
192
+ - spec/feedly/gateway/markers_spec.rb
193
+ - spec/feedly/gateway/microsoft_spec.rb
194
+ - spec/feedly/gateway/mixes_spec.rb
195
+ - spec/feedly/gateway/opml_spec.rb
196
+ - spec/feedly/gateway/preferences_spec.rb
197
+ - spec/feedly/gateway/profile_spec.rb
198
+ - spec/feedly/gateway/search_spec.rb
199
+ - spec/feedly/gateway/shorten_spec.rb
200
+ - spec/feedly/gateway/streams_spec.rb
201
+ - spec/feedly/gateway/subscriptions_spec.rb
202
+ - spec/feedly/gateway/tags_spec.rb
203
+ - spec/feedly/gateway/topics_spec.rb
204
+ - spec/feedly/gateway/twitter_spec.rb
205
+ - spec/feedly/mapper_spec.rb
206
+ - spec/feedly/rate_limit_spec.rb
207
+ - spec/feedly/request_spec.rb
208
+ - spec/feedly/success_spec.rb
209
+ - spec/feedly/version_spec.rb
210
+ - spec/helper.rb
211
+ homepage: http://github.com/khelll/feedlr
212
+ licenses:
213
+ - LGPL-3
214
+ metadata: {}
215
+ post_install_message:
216
+ rdoc_options: []
217
+ require_paths:
218
+ - lib
219
+ required_ruby_version: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: 1.9.2
224
+ required_rubygems_version: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ requirements: []
230
+ rubyforge_project:
231
+ rubygems_version: 2.2.2
232
+ signing_key:
233
+ specification_version: 4
234
+ summary: A Ruby interface to the Feedly API.
235
+ test_files:
236
+ - spec/cassettes/Feedlr_Gateway_Categories/_change_category_label/resoponds_with_hashie_object.yml
237
+ - spec/cassettes/Feedlr_Gateway_Categories/_delete_category/resoponds_with_hashie_object.yml
238
+ - spec/cassettes/Feedlr_Gateway_Categories/_user_categories/resoponds_with_hashie_object.yml
239
+ - spec/cassettes/Feedlr_Gateway_Entries/_add_entry/resoponds_with_hashie_object.yml
240
+ - spec/cassettes/Feedlr_Gateway_Entries/_user_entries/resoponds_with_hashie_object.yml
241
+ - spec/cassettes/Feedlr_Gateway_Evernote/_add_to_evernote/resoponds_with_hashie_object.yml
242
+ - spec/cassettes/Feedlr_Gateway_Evernote/_evernote_notebooks/resoponds_with_hashie_object.yml
243
+ - spec/cassettes/Feedlr_Gateway_Evernote/_unlink_evernote/resoponds_with_hashie_object.yml
244
+ - spec/cassettes/Feedlr_Gateway_Facebook/_facebook_suggestions/resoponds_with_hashie_object.yml
245
+ - spec/cassettes/Feedlr_Gateway_Facebook/_unlink_facebook/resoponds_with_hashie_object.yml
246
+ - spec/cassettes/Feedlr_Gateway_Feeds/_feeds/resoponds_with_hashie_object.yml
247
+ - spec/cassettes/Feedlr_Gateway_Markers/_lastest_tagged_entries/resoponds_with_hashie_object.yml
248
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_articles_as_read/resoponds_with_hashie_object.yml
249
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_articles_as_unread/resoponds_with_hashie_object.yml
250
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_categories_as_read/with_asOf_param/resoponds_with_hashie_object.yml
251
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_categories_as_read/with_lastReadEntryId_param/resoponds_with_hashie_object.yml
252
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_feeds_as_read/with_asOf_param/resoponds_with_hashie_object.yml
253
+ - spec/cassettes/Feedlr_Gateway_Markers/_mark_feeds_as_read/with_lastReadEntryId_param/resoponds_with_hashie_object.yml
254
+ - spec/cassettes/Feedlr_Gateway_Markers/_sync_read_counts/resoponds_with_hashie_object.yml
255
+ - spec/cassettes/Feedlr_Gateway_Markers/_undo_mark_categories_as_read/resoponds_with_hashie_object.yml
256
+ - spec/cassettes/Feedlr_Gateway_Markers/_undo_mark_feeds_as_read/resoponds_with_hashie_object.yml
257
+ - spec/cassettes/Feedlr_Gateway_Markers/_user_unread_counts/resoponds_with_hashie_object.yml
258
+ - spec/cassettes/Feedlr_Gateway_Microsoft/_add_to_onenote/resoponds_with_hashie_object.yml
259
+ - spec/cassettes/Feedlr_Gateway_Microsoft/_unlink_microsoft/resoponds_with_hashie_object.yml
260
+ - spec/cassettes/Feedlr_Gateway_Mixes/_stream_most_engaging/resoponds_with_hashie_object.yml
261
+ - spec/cassettes/Feedlr_Gateway_Opml/_import_opml/resoponds_with_hashie_object.yml
262
+ - spec/cassettes/Feedlr_Gateway_Opml/_user_opml/resoponds_with_hashie_object.yml
263
+ - spec/cassettes/Feedlr_Gateway_Preferences/_preferences/resoponds_with_hashie_object.yml
264
+ - spec/cassettes/Feedlr_Gateway_Preferences/_update_preferences/resoponds_with_hashie_object.yml
265
+ - spec/cassettes/Feedlr_Gateway_Profile/_get_profile/resoponds_with_hashie_object.yml
266
+ - spec/cassettes/Feedlr_Gateway_Profile/_profile/resoponds_with_hashie_object.yml
267
+ - spec/cassettes/Feedlr_Gateway_Profile/_update_profile/resoponds_with_hashie_object.yml
268
+ - spec/cassettes/Feedlr_Gateway_Search/_search_feeds/resoponds_with_hashie_object.yml
269
+ - spec/cassettes/Feedlr_Gateway_Search/_search_stream/resoponds_with_hashie_object.yml
270
+ - spec/cassettes/Feedlr_Gateway_Shorten/_shorten/resoponds_with_hashie_object.yml
271
+ - spec/cassettes/Feedlr_Gateway_Streams/_stream_entries_contents/resoponds_with_hashie_object.yml
272
+ - spec/cassettes/Feedlr_Gateway_Streams/_stream_entries_ids/resoponds_with_hashie_object.yml
273
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_add_subscription/resoponds_with_hashie_object.yml
274
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_create_subscription/resoponds_with_hashie_object.yml
275
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_delete_subscription/resoponds_with_hashie_object.yml
276
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_update_subscription/resoponds_with_hashie_object.yml
277
+ - spec/cassettes/Feedlr_Gateway_Subscriptions/_user_subscriptions/resoponds_with_hashie_object.yml
278
+ - spec/cassettes/Feedlr_Gateway_Tags/_change_tag_label/resoponds_with_hashie_object.yml
279
+ - spec/cassettes/Feedlr_Gateway_Tags/_delete_tags/resoponds_with_hashie_object.yml
280
+ - spec/cassettes/Feedlr_Gateway_Tags/_get_tags/resoponds_with_hashie_object.yml
281
+ - spec/cassettes/Feedlr_Gateway_Tags/_tag_entries/resoponds_with_hashie_object.yml
282
+ - spec/cassettes/Feedlr_Gateway_Tags/_untag_entries/resoponds_with_hashie_object.yml
283
+ - spec/cassettes/Feedlr_Gateway_Tags/_user_tags/resoponds_with_hashie_object.yml
284
+ - spec/cassettes/Feedlr_Gateway_Topics/_add_topic/resoponds_with_hashie_object.yml
285
+ - spec/cassettes/Feedlr_Gateway_Topics/_delete_topic/resoponds_with_hashie_object.yml
286
+ - spec/cassettes/Feedlr_Gateway_Topics/_update_topic/resoponds_with_hashie_object.yml
287
+ - spec/cassettes/Feedlr_Gateway_Topics/_user_topics/resoponds_with_hashie_object.yml
288
+ - spec/cassettes/Feedlr_Gateway_Twitter/_twitter_suggestions/resoponds_with_hashie_object.yml
289
+ - spec/cassettes/Feedlr_Gateway_Twitter/_unlink_twitter/resoponds_with_hashie_object.yml
290
+ - spec/feedly/base_spec.rb
291
+ - spec/feedly/client_spec.rb
292
+ - spec/feedly/collection_spec.rb
293
+ - spec/feedly/error_spec.rb
294
+ - spec/feedly/feedly_spec.rb
295
+ - spec/feedly/gateway/categories_spec.rb
296
+ - spec/feedly/gateway/entries_spec.rb
297
+ - spec/feedly/gateway/evernote_spec.rb
298
+ - spec/feedly/gateway/facebook_spec.rb
299
+ - spec/feedly/gateway/feeds_spec.rb
300
+ - spec/feedly/gateway/markers_spec.rb
301
+ - spec/feedly/gateway/microsoft_spec.rb
302
+ - spec/feedly/gateway/mixes_spec.rb
303
+ - spec/feedly/gateway/opml_spec.rb
304
+ - spec/feedly/gateway/preferences_spec.rb
305
+ - spec/feedly/gateway/profile_spec.rb
306
+ - spec/feedly/gateway/search_spec.rb
307
+ - spec/feedly/gateway/shorten_spec.rb
308
+ - spec/feedly/gateway/streams_spec.rb
309
+ - spec/feedly/gateway/subscriptions_spec.rb
310
+ - spec/feedly/gateway/tags_spec.rb
311
+ - spec/feedly/gateway/topics_spec.rb
312
+ - spec/feedly/gateway/twitter_spec.rb
313
+ - spec/feedly/mapper_spec.rb
314
+ - spec/feedly/rate_limit_spec.rb
315
+ - spec/feedly/request_spec.rb
316
+ - spec/feedly/success_spec.rb
317
+ - spec/feedly/version_spec.rb
318
+ - spec/helper.rb
319
+ has_rdoc: