redd 0.7.10 → 0.8.0.pre.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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -30
  3. data/.rspec +1 -1
  4. data/.rubocop.yml +16 -3
  5. data/.travis.yml +13 -7
  6. data/Gemfile +3 -1
  7. data/LICENSE.txt +21 -0
  8. data/README.md +40 -126
  9. data/Rakefile +10 -3
  10. data/TODO.md +11 -0
  11. data/bin/console +84 -0
  12. data/bin/setup +8 -0
  13. data/lib/redd.rb +84 -46
  14. data/lib/redd/api_client.rb +109 -0
  15. data/lib/redd/auth_strategies/auth_strategy.rb +60 -0
  16. data/lib/redd/auth_strategies/installed.rb +22 -0
  17. data/lib/redd/auth_strategies/script.rb +23 -0
  18. data/lib/redd/auth_strategies/userless.rb +17 -0
  19. data/lib/redd/auth_strategies/web.rb +29 -0
  20. data/lib/redd/client.rb +88 -0
  21. data/lib/redd/error.rb +19 -142
  22. data/lib/redd/models/access.rb +20 -0
  23. data/lib/redd/models/basic_model.rb +124 -0
  24. data/lib/redd/models/comment.rb +51 -0
  25. data/lib/redd/models/front_page.rb +71 -0
  26. data/lib/redd/models/inboxable.rb +23 -0
  27. data/lib/redd/models/lazy_model.rb +63 -0
  28. data/lib/redd/models/listing.rb +26 -0
  29. data/lib/redd/models/messageable.rb +20 -0
  30. data/lib/redd/models/moderatable.rb +41 -0
  31. data/lib/redd/models/more_comments.rb +10 -0
  32. data/lib/redd/models/multireddit.rb +32 -0
  33. data/lib/redd/models/postable.rb +70 -0
  34. data/lib/redd/models/private_message.rb +29 -0
  35. data/lib/redd/models/replyable.rb +16 -0
  36. data/lib/redd/models/session.rb +86 -0
  37. data/lib/redd/models/submission.rb +40 -0
  38. data/lib/redd/models/subreddit.rb +201 -0
  39. data/lib/redd/models/user.rb +72 -0
  40. data/lib/redd/models/wiki_page.rb +24 -0
  41. data/lib/redd/utilities/error_handler.rb +35 -0
  42. data/lib/redd/utilities/rate_limiter.rb +21 -0
  43. data/lib/redd/utilities/stream.rb +63 -0
  44. data/lib/redd/utilities/unmarshaller.rb +39 -0
  45. data/lib/redd/version.rb +4 -3
  46. data/logo.png +0 -0
  47. data/redd.gemspec +26 -22
  48. metadata +73 -99
  49. data/LICENSE.md +0 -22
  50. data/RedditKit.LICENSE.md +0 -9
  51. data/lib/redd/access.rb +0 -76
  52. data/lib/redd/clients/base.rb +0 -188
  53. data/lib/redd/clients/base/account.rb +0 -20
  54. data/lib/redd/clients/base/identity.rb +0 -22
  55. data/lib/redd/clients/base/none.rb +0 -27
  56. data/lib/redd/clients/base/privatemessages.rb +0 -33
  57. data/lib/redd/clients/base/read.rb +0 -113
  58. data/lib/redd/clients/base/stream.rb +0 -81
  59. data/lib/redd/clients/base/submit.rb +0 -19
  60. data/lib/redd/clients/base/utilities.rb +0 -104
  61. data/lib/redd/clients/base/wikiread.rb +0 -33
  62. data/lib/redd/clients/installed.rb +0 -57
  63. data/lib/redd/clients/script.rb +0 -41
  64. data/lib/redd/clients/userless.rb +0 -32
  65. data/lib/redd/clients/web.rb +0 -58
  66. data/lib/redd/objects/base.rb +0 -39
  67. data/lib/redd/objects/comment.rb +0 -22
  68. data/lib/redd/objects/labeled_multi.rb +0 -13
  69. data/lib/redd/objects/listing.rb +0 -29
  70. data/lib/redd/objects/more_comments.rb +0 -11
  71. data/lib/redd/objects/private_message.rb +0 -28
  72. data/lib/redd/objects/submission.rb +0 -139
  73. data/lib/redd/objects/subreddit.rb +0 -330
  74. data/lib/redd/objects/thing.rb +0 -26
  75. data/lib/redd/objects/thing/editable.rb +0 -22
  76. data/lib/redd/objects/thing/hideable.rb +0 -18
  77. data/lib/redd/objects/thing/inboxable.rb +0 -25
  78. data/lib/redd/objects/thing/messageable.rb +0 -34
  79. data/lib/redd/objects/thing/moderatable.rb +0 -43
  80. data/lib/redd/objects/thing/refreshable.rb +0 -14
  81. data/lib/redd/objects/thing/saveable.rb +0 -21
  82. data/lib/redd/objects/thing/votable.rb +0 -33
  83. data/lib/redd/objects/user.rb +0 -52
  84. data/lib/redd/objects/wiki_page.rb +0 -15
  85. data/lib/redd/rate_limit.rb +0 -88
  86. data/lib/redd/response/parse_json.rb +0 -18
  87. data/lib/redd/response/raise_error.rb +0 -16
  88. data/spec/redd/objects/base_spec.rb +0 -1
  89. data/spec/redd/response/raise_error_spec.rb +0 -11
  90. data/spec/redd_spec.rb +0 -5
  91. data/spec/spec_helper.rb +0 -71
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lazy_model'
4
+ require_relative 'messageable'
5
+
6
+ module Redd
7
+ module Models
8
+ # A reddit user.
9
+ class User < LazyModel
10
+ include Messageable
11
+
12
+ # Make a User from their name.
13
+ # @option hash [String] :name the user's name
14
+ # @return [User]
15
+ def self.from_response(client, hash)
16
+ name = hash.fetch(:name)
17
+ new(client, hash) { |c| c.get("/user/#{name}/about").body[:data] }
18
+ end
19
+
20
+ # Create a User from their name.
21
+ # @param client [APIClient] the api client to initialize the object with
22
+ # @param id [String] the username
23
+ # @return [User]
24
+ def self.from_id(client, id)
25
+ from_response(client, name: id)
26
+ end
27
+
28
+ # Compose a message to the moderators of a subreddit.
29
+ #
30
+ # @param subject [String] the subject of the message
31
+ # @param text [String] the message text
32
+ # @param from [Subreddit, nil] the subreddit to send the message on behalf of
33
+ def send_message(subject:, text:, from: nil)
34
+ super(to: get_attribute(:name), subject: subject, text: text, from: from)
35
+ end
36
+
37
+ # Get the appropriate listing.
38
+ # @param type [:overview, :submitted, :comments, :liked, :disliked, :hidden, :saved, :gilded]
39
+ # the type of listing to request
40
+ # @param params [Hash] a list of params to send with the request
41
+ # @option params [:hot, :new, :top, :controversial] :sort the order of the listing
42
+ # @option params [String] :after return results after the given fullname
43
+ # @option params [String] :before return results before the given fullname
44
+ # @option params [Integer] :count the number of items already seen in the listing
45
+ # @option params [1..100] :limit the maximum number of things to return
46
+ # @option params [:hour, :day, :week, :month, :year, :all] :time the time period to consider
47
+ # when sorting
48
+ # @option params [:given] :show whether to show the gildings given
49
+ #
50
+ # @note The option :time only applies to the top and controversial sorts.
51
+ # @return [Listing<Submission>]
52
+ def listing(type, **params)
53
+ params[:t] = params.delete(:time) if params.key?(:time)
54
+ @client.model(:get, "/user/#{get_attribute(:name)}/#{type}.json", params)
55
+ end
56
+
57
+ # @!method overview(**params)
58
+ # @!method submitted(**params)
59
+ # @!method comments(**params)
60
+ # @!method liked(**params)
61
+ # @!method disliked(**params)
62
+ # @!method hidden(**params)
63
+ # @!method saved(**params)
64
+ # @!method gilded(**params)
65
+ #
66
+ # @see #listing
67
+ %i(overview submitted comments liked disliked hidden saved gilded).each do |type|
68
+ define_method(type) { |**params| listing(type, **params) }
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lazy_model'
4
+
5
+ module Redd
6
+ module Models
7
+ # A reddit user.
8
+ class WikiPage < LazyModel
9
+ # Make a Wikipage from its title and subreddit.
10
+ # @option hash [String] :title the page's title
11
+ # @option hash [Subreddit] :subreddit the page's subreddit
12
+ # @return [WikiPage]
13
+ def self.from_response(client, hash)
14
+ title = hash.fetch(:title)
15
+ if hash.key?(:subreddit)
16
+ sr_name = hash[:subreddit].display_name
17
+ new(client, hash) { |c| c.get("/r/#{sr_name}/wiki/#{title}").body[:data] }
18
+ else
19
+ new(client, hash) { |c| c.get("/wiki/#{title}").body[:data] }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../error'
4
+
5
+ module Redd
6
+ module Utilities
7
+ # Handles response errors in API responses.
8
+ # TODO: handle [:json][:errors] array
9
+ class ErrorHandler
10
+ HTTP_ERRORS = {
11
+ 400 => Redd::BadRequest,
12
+ 404 => Redd::NotFound,
13
+ 500 => Redd::ServerError,
14
+ 502 => Redd::ServerError,
15
+ 503 => Redd::ServerError,
16
+ 504 => Redd::ServerError
17
+ }.freeze
18
+
19
+ AUTHORIZATION_ERRORS = {
20
+ 'insufficient_scope' => Redd::InsufficientScope,
21
+ 'invalid_token' => Redd::InvalidAccess
22
+ }.freeze
23
+
24
+ def check_error(response)
25
+ return HTTP_ERRORS[response.code].new(response) if HTTP_ERRORS.key?(response.code)
26
+ if response.code == 403
27
+ AUTHORIZATION_ERRORS.each do |key, klass|
28
+ return klass.new(response) if response.headers['www-authenticate'].include?(key)
29
+ end
30
+ end
31
+ nil
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Redd
4
+ module Utilities
5
+ # Manages rate limiting by sleeping.
6
+ class RateLimiter
7
+ def initialize(gap = 1)
8
+ @gap = 1
9
+ @last_request_time = Time.now - gap
10
+ end
11
+
12
+ def after_limit
13
+ sleep_time = (@last_request_time + @gap) - Time.now
14
+ sleep(sleep_time) if sleep_time > 0.01
15
+ response = yield
16
+ @last_request_time += @gap
17
+ response
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'enumerator'
4
+
5
+ module Redd
6
+ module Utilities
7
+ # A forward-expading listing of items that can be enumerated forever.
8
+ class Stream
9
+ # A simple fixed-size ring buffer.
10
+ class RingBuffer
11
+ def initialize(size)
12
+ @size = size
13
+ @backing_array = Array.new(size)
14
+ @pointer = 0
15
+ end
16
+
17
+ def include?(el)
18
+ @backing_array.include?(el)
19
+ end
20
+
21
+ def add(el)
22
+ @backing_array[@pointer] = el
23
+ @pointer = (@pointer + 1) % @size
24
+ end
25
+ end
26
+
27
+ # Create a streamer.
28
+ # @yield [latest]
29
+ # @yieldparam latest [String, nil] the fullname of the latest model requested
30
+ # @yieldreturn [Listing] the models after the latest one
31
+ def initialize(&block)
32
+ @loader = block
33
+ @buffer = RingBuffer.new(100)
34
+ @latest = nil
35
+ end
36
+
37
+ # Make another request to reddit, yielding new elements.
38
+ # @yield [element] an element from the listings returned by the loader
39
+ def next_request
40
+ # Get the elements from the loader before the `latest` element
41
+ listing = @loader.call(@latest)
42
+ # If there's nothing new to process, request again.
43
+ return if listing.empty?
44
+ # Set the latest element to the latest one to be processed.
45
+ @latest = listing.first.name
46
+ # Iterate over the new elements, oldest to newest.
47
+ listing.reverse_each do |el|
48
+ next if @buffer.include?(el.name)
49
+ yield el
50
+ @buffer.add(el.name)
51
+ end
52
+ end
53
+
54
+ # Loop forever, yielding the elements from the loader
55
+ # @yield [element] an element from the listings returned by the loader
56
+ def stream
57
+ loop do
58
+ next_request { |el| yield el }
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Redd
4
+ module Utilities
5
+ # Unmarshals hashes into objects.
6
+ class Unmarshaller
7
+ # Contains the mapping from 'kind' strings to classes.
8
+ MAPPING = {
9
+ 't1' => Models::Comment,
10
+ 't2' => Models::User,
11
+ 't3' => Models::Submission,
12
+ 't4' => Models::PrivateMessage,
13
+ 't5' => Models::Subreddit,
14
+ 'more' => Models::MoreComments,
15
+ 'wikipage' => Models::WikiPage,
16
+ 'Listing' => Models::Listing,
17
+ 'LabeledMulti' => Models::Multireddit
18
+ }.freeze
19
+
20
+ def initialize(client)
21
+ @client = client
22
+ end
23
+
24
+ def unmarshal(response)
25
+ if response[:json] && response[:json][:data]
26
+ if response[:json][:data][:things]
27
+ Models::Listing.from_response(@client, children: response[:json][:data][:things])
28
+ else
29
+ Models::BasicModel.new(@client, response[:json][:data])
30
+ end
31
+ elsif MAPPING.key?(response[:kind])
32
+ MAPPING[response[:kind]].from_response(@client, response[:data])
33
+ else
34
+ raise "unknown type to unmarshal: #{response[:kind].inspect}"
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,4 +1,5 @@
1
- module Redd # rubocop:disable Style/Documentation
2
- # The semantic version number.
3
- VERSION = "0.7.10"
1
+ # frozen_string_literal: true
2
+
3
+ module Redd
4
+ VERSION = '0.8.0.pre.1'
4
5
  end
Binary file
@@ -1,31 +1,35 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path("../lib", __FILE__)
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path('../lib', __FILE__)
3
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "redd/version"
6
+ require 'redd/version'
5
7
 
6
8
  Gem::Specification.new do |spec|
7
- spec.name = "redd"
9
+ spec.name = 'redd'
8
10
  spec.version = Redd::VERSION
9
- spec.authors = ["Avinash Dwarapu"]
10
- spec.email = ["avinash@dwarapu.me"]
11
- spec.summary = "A Reddit API Wrapper for Ruby."
12
- spec.homepage = "https://github.com/avidw/redd"
13
- spec.license = "MIT"
14
- spec.required_ruby_version = ">= 2.1.0"
11
+ spec.authors = ['Avinash Dwarapu']
12
+ spec.email = ['avinash@dwarapu.me']
13
+
14
+ spec.summary = 'An intuitive and fun API wrapper for reddit.'
15
+ spec.homepage = 'https://github.com/avinashbot/redd'
16
+ spec.license = 'MIT'
17
+
18
+ spec.files = `git ls-files -z`
19
+ .split("\x0")
20
+ .reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ spec.bindir = 'exe'
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ['lib']
15
24
 
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(/^(test|spec|features)\//)
19
- spec.require_paths = ["lib"]
25
+ spec.add_dependency 'http', '~> 2.1'
20
26
 
21
- spec.add_development_dependency "bundler", "~> 1.12"
22
- spec.add_development_dependency "rake", "~> 11.2"
23
- spec.add_development_dependency "rspec", "~> 3.5"
24
- spec.add_development_dependency "vcr", "~> 3.0"
25
- spec.add_development_dependency "webmock", "~> 2.1"
27
+ spec.add_development_dependency 'bundler', '~> 1.13'
28
+ spec.add_development_dependency 'rake', '~> 12.0'
29
+ spec.add_development_dependency 'rubocop', '~> 0.47'
30
+ spec.add_development_dependency 'pry', '~> 0.10'
26
31
 
27
- spec.add_dependency "hashie", "~> 3.4"
28
- spec.add_dependency "faraday", "~> 0.9"
29
- spec.add_dependency "multi_json", "~> 1.12"
30
- spec.add_dependency "fastimage", "~> 2.0"
32
+ spec.add_development_dependency 'rspec', '~> 3.5'
33
+ spec.add_development_dependency 'simplecov', '~> 0.13'
34
+ spec.add_development_dependency 'webmock', '~> 2.3'
31
35
  end
metadata CHANGED
@@ -1,141 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.10
4
+ version: 0.8.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Avinash Dwarapu
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-02 00:00:00.000000000 Z
11
+ date: 2017-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: http
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.12'
20
- type: :development
19
+ version: '2.1'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.12'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '11.2'
33
+ version: '1.13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '11.2'
40
+ version: '1.13'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.5'
47
+ version: '12.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.5'
54
+ version: '12.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: vcr
56
+ name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.0'
61
+ version: '0.47'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '3.0'
68
+ version: '0.47'
69
69
  - !ruby/object:Gem::Dependency
70
- name: webmock
70
+ name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '2.1'
75
+ version: '0.10'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.1'
83
- - !ruby/object:Gem::Dependency
84
- name: hashie
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.4'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '3.4'
82
+ version: '0.10'
97
83
  - !ruby/object:Gem::Dependency
98
- name: faraday
84
+ name: rspec
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '0.9'
104
- type: :runtime
89
+ version: '3.5'
90
+ type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: '0.9'
96
+ version: '3.5'
111
97
  - !ruby/object:Gem::Dependency
112
- name: multi_json
98
+ name: simplecov
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: '1.12'
118
- type: :runtime
103
+ version: '0.13'
104
+ type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: '1.12'
110
+ version: '0.13'
125
111
  - !ruby/object:Gem::Dependency
126
- name: fastimage
112
+ name: webmock
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: '2.0'
132
- type: :runtime
117
+ version: '2.3'
118
+ type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: '2.0'
124
+ version: '2.3'
139
125
  description:
140
126
  email:
141
127
  - avinash@dwarapu.me
@@ -148,56 +134,48 @@ files:
148
134
  - ".rubocop.yml"
149
135
  - ".travis.yml"
150
136
  - Gemfile
151
- - LICENSE.md
137
+ - LICENSE.txt
152
138
  - README.md
153
139
  - Rakefile
154
- - RedditKit.LICENSE.md
140
+ - TODO.md
141
+ - bin/console
142
+ - bin/setup
155
143
  - lib/redd.rb
156
- - lib/redd/access.rb
157
- - lib/redd/clients/base.rb
158
- - lib/redd/clients/base/account.rb
159
- - lib/redd/clients/base/identity.rb
160
- - lib/redd/clients/base/none.rb
161
- - lib/redd/clients/base/privatemessages.rb
162
- - lib/redd/clients/base/read.rb
163
- - lib/redd/clients/base/stream.rb
164
- - lib/redd/clients/base/submit.rb
165
- - lib/redd/clients/base/utilities.rb
166
- - lib/redd/clients/base/wikiread.rb
167
- - lib/redd/clients/installed.rb
168
- - lib/redd/clients/script.rb
169
- - lib/redd/clients/userless.rb
170
- - lib/redd/clients/web.rb
144
+ - lib/redd/api_client.rb
145
+ - lib/redd/auth_strategies/auth_strategy.rb
146
+ - lib/redd/auth_strategies/installed.rb
147
+ - lib/redd/auth_strategies/script.rb
148
+ - lib/redd/auth_strategies/userless.rb
149
+ - lib/redd/auth_strategies/web.rb
150
+ - lib/redd/client.rb
171
151
  - lib/redd/error.rb
172
- - lib/redd/objects/base.rb
173
- - lib/redd/objects/comment.rb
174
- - lib/redd/objects/labeled_multi.rb
175
- - lib/redd/objects/listing.rb
176
- - lib/redd/objects/more_comments.rb
177
- - lib/redd/objects/private_message.rb
178
- - lib/redd/objects/submission.rb
179
- - lib/redd/objects/subreddit.rb
180
- - lib/redd/objects/thing.rb
181
- - lib/redd/objects/thing/editable.rb
182
- - lib/redd/objects/thing/hideable.rb
183
- - lib/redd/objects/thing/inboxable.rb
184
- - lib/redd/objects/thing/messageable.rb
185
- - lib/redd/objects/thing/moderatable.rb
186
- - lib/redd/objects/thing/refreshable.rb
187
- - lib/redd/objects/thing/saveable.rb
188
- - lib/redd/objects/thing/votable.rb
189
- - lib/redd/objects/user.rb
190
- - lib/redd/objects/wiki_page.rb
191
- - lib/redd/rate_limit.rb
192
- - lib/redd/response/parse_json.rb
193
- - lib/redd/response/raise_error.rb
152
+ - lib/redd/models/access.rb
153
+ - lib/redd/models/basic_model.rb
154
+ - lib/redd/models/comment.rb
155
+ - lib/redd/models/front_page.rb
156
+ - lib/redd/models/inboxable.rb
157
+ - lib/redd/models/lazy_model.rb
158
+ - lib/redd/models/listing.rb
159
+ - lib/redd/models/messageable.rb
160
+ - lib/redd/models/moderatable.rb
161
+ - lib/redd/models/more_comments.rb
162
+ - lib/redd/models/multireddit.rb
163
+ - lib/redd/models/postable.rb
164
+ - lib/redd/models/private_message.rb
165
+ - lib/redd/models/replyable.rb
166
+ - lib/redd/models/session.rb
167
+ - lib/redd/models/submission.rb
168
+ - lib/redd/models/subreddit.rb
169
+ - lib/redd/models/user.rb
170
+ - lib/redd/models/wiki_page.rb
171
+ - lib/redd/utilities/error_handler.rb
172
+ - lib/redd/utilities/rate_limiter.rb
173
+ - lib/redd/utilities/stream.rb
174
+ - lib/redd/utilities/unmarshaller.rb
194
175
  - lib/redd/version.rb
176
+ - logo.png
195
177
  - redd.gemspec
196
- - spec/redd/objects/base_spec.rb
197
- - spec/redd/response/raise_error_spec.rb
198
- - spec/redd_spec.rb
199
- - spec/spec_helper.rb
200
- homepage: https://github.com/avidw/redd
178
+ homepage: https://github.com/avinashbot/redd
201
179
  licenses:
202
180
  - MIT
203
181
  metadata: {}
@@ -209,20 +187,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
187
  requirements:
210
188
  - - ">="
211
189
  - !ruby/object:Gem::Version
212
- version: 2.1.0
190
+ version: '0'
213
191
  required_rubygems_version: !ruby/object:Gem::Requirement
214
192
  requirements:
215
- - - ">="
193
+ - - ">"
216
194
  - !ruby/object:Gem::Version
217
- version: '0'
195
+ version: 1.3.1
218
196
  requirements: []
219
197
  rubyforge_project:
220
- rubygems_version: 2.6.6
198
+ rubygems_version: 2.6.8
221
199
  signing_key:
222
200
  specification_version: 4
223
- summary: A Reddit API Wrapper for Ruby.
224
- test_files:
225
- - spec/redd/objects/base_spec.rb
226
- - spec/redd/response/raise_error_spec.rb
227
- - spec/redd_spec.rb
228
- - spec/spec_helper.rb
201
+ summary: An intuitive and fun API wrapper for reddit.
202
+ test_files: []