feedlr 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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: