redd 0.7.10 → 0.8.0.pre.1

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