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.
- checksums.yaml +4 -4
- data/.gitignore +5 -30
- data/.rspec +1 -1
- data/.rubocop.yml +16 -3
- data/.travis.yml +13 -7
- data/Gemfile +3 -1
- data/LICENSE.txt +21 -0
- data/README.md +40 -126
- data/Rakefile +10 -3
- data/TODO.md +11 -0
- data/bin/console +84 -0
- data/bin/setup +8 -0
- data/lib/redd.rb +84 -46
- data/lib/redd/api_client.rb +109 -0
- data/lib/redd/auth_strategies/auth_strategy.rb +60 -0
- data/lib/redd/auth_strategies/installed.rb +22 -0
- data/lib/redd/auth_strategies/script.rb +23 -0
- data/lib/redd/auth_strategies/userless.rb +17 -0
- data/lib/redd/auth_strategies/web.rb +29 -0
- data/lib/redd/client.rb +88 -0
- data/lib/redd/error.rb +19 -142
- data/lib/redd/models/access.rb +20 -0
- data/lib/redd/models/basic_model.rb +124 -0
- data/lib/redd/models/comment.rb +51 -0
- data/lib/redd/models/front_page.rb +71 -0
- data/lib/redd/models/inboxable.rb +23 -0
- data/lib/redd/models/lazy_model.rb +63 -0
- data/lib/redd/models/listing.rb +26 -0
- data/lib/redd/models/messageable.rb +20 -0
- data/lib/redd/models/moderatable.rb +41 -0
- data/lib/redd/models/more_comments.rb +10 -0
- data/lib/redd/models/multireddit.rb +32 -0
- data/lib/redd/models/postable.rb +70 -0
- data/lib/redd/models/private_message.rb +29 -0
- data/lib/redd/models/replyable.rb +16 -0
- data/lib/redd/models/session.rb +86 -0
- data/lib/redd/models/submission.rb +40 -0
- data/lib/redd/models/subreddit.rb +201 -0
- data/lib/redd/models/user.rb +72 -0
- data/lib/redd/models/wiki_page.rb +24 -0
- data/lib/redd/utilities/error_handler.rb +35 -0
- data/lib/redd/utilities/rate_limiter.rb +21 -0
- data/lib/redd/utilities/stream.rb +63 -0
- data/lib/redd/utilities/unmarshaller.rb +39 -0
- data/lib/redd/version.rb +4 -3
- data/logo.png +0 -0
- data/redd.gemspec +26 -22
- metadata +73 -99
- data/LICENSE.md +0 -22
- data/RedditKit.LICENSE.md +0 -9
- data/lib/redd/access.rb +0 -76
- data/lib/redd/clients/base.rb +0 -188
- data/lib/redd/clients/base/account.rb +0 -20
- data/lib/redd/clients/base/identity.rb +0 -22
- data/lib/redd/clients/base/none.rb +0 -27
- data/lib/redd/clients/base/privatemessages.rb +0 -33
- data/lib/redd/clients/base/read.rb +0 -113
- data/lib/redd/clients/base/stream.rb +0 -81
- data/lib/redd/clients/base/submit.rb +0 -19
- data/lib/redd/clients/base/utilities.rb +0 -104
- data/lib/redd/clients/base/wikiread.rb +0 -33
- data/lib/redd/clients/installed.rb +0 -57
- data/lib/redd/clients/script.rb +0 -41
- data/lib/redd/clients/userless.rb +0 -32
- data/lib/redd/clients/web.rb +0 -58
- data/lib/redd/objects/base.rb +0 -39
- data/lib/redd/objects/comment.rb +0 -22
- data/lib/redd/objects/labeled_multi.rb +0 -13
- data/lib/redd/objects/listing.rb +0 -29
- data/lib/redd/objects/more_comments.rb +0 -11
- data/lib/redd/objects/private_message.rb +0 -28
- data/lib/redd/objects/submission.rb +0 -139
- data/lib/redd/objects/subreddit.rb +0 -330
- data/lib/redd/objects/thing.rb +0 -26
- data/lib/redd/objects/thing/editable.rb +0 -22
- data/lib/redd/objects/thing/hideable.rb +0 -18
- data/lib/redd/objects/thing/inboxable.rb +0 -25
- data/lib/redd/objects/thing/messageable.rb +0 -34
- data/lib/redd/objects/thing/moderatable.rb +0 -43
- data/lib/redd/objects/thing/refreshable.rb +0 -14
- data/lib/redd/objects/thing/saveable.rb +0 -21
- data/lib/redd/objects/thing/votable.rb +0 -33
- data/lib/redd/objects/user.rb +0 -52
- data/lib/redd/objects/wiki_page.rb +0 -15
- data/lib/redd/rate_limit.rb +0 -88
- data/lib/redd/response/parse_json.rb +0 -18
- data/lib/redd/response/raise_error.rb +0 -16
- data/spec/redd/objects/base_spec.rb +0 -1
- data/spec/redd/response/raise_error_spec.rb +0 -11
- data/spec/redd_spec.rb +0 -5
- 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
|
data/lib/redd/version.rb
CHANGED
data/logo.png
ADDED
Binary file
|
data/redd.gemspec
CHANGED
@@ -1,31 +1,35 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
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
|
6
|
+
require 'redd/version'
|
5
7
|
|
6
8
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
9
|
+
spec.name = 'redd'
|
8
10
|
spec.version = Redd::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
|
12
|
-
spec.
|
13
|
-
spec.
|
14
|
-
spec.
|
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.
|
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
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
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.
|
28
|
-
spec.
|
29
|
-
spec.
|
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.
|
4
|
+
version: 0.8.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Avinash Dwarapu
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: http
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
20
|
-
type: :
|
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
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
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: '
|
40
|
+
version: '1.13'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
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: '
|
54
|
+
version: '12.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
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: '
|
68
|
+
version: '0.47'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
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: '
|
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:
|
84
|
+
name: rspec
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
104
|
-
type: :
|
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: '
|
96
|
+
version: '3.5'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: simplecov
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
118
|
-
type: :
|
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: '
|
110
|
+
version: '0.13'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
112
|
+
name: webmock
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '2.
|
132
|
-
type: :
|
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.
|
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.
|
137
|
+
- LICENSE.txt
|
152
138
|
- README.md
|
153
139
|
- Rakefile
|
154
|
-
-
|
140
|
+
- TODO.md
|
141
|
+
- bin/console
|
142
|
+
- bin/setup
|
155
143
|
- lib/redd.rb
|
156
|
-
- lib/redd/
|
157
|
-
- lib/redd/
|
158
|
-
- lib/redd/
|
159
|
-
- lib/redd/
|
160
|
-
- lib/redd/
|
161
|
-
- lib/redd/
|
162
|
-
- lib/redd/
|
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/
|
173
|
-
- lib/redd/
|
174
|
-
- lib/redd/
|
175
|
-
- lib/redd/
|
176
|
-
- lib/redd/
|
177
|
-
- lib/redd/
|
178
|
-
- lib/redd/
|
179
|
-
- lib/redd/
|
180
|
-
- lib/redd/
|
181
|
-
- lib/redd/
|
182
|
-
- lib/redd/
|
183
|
-
- lib/redd/
|
184
|
-
- lib/redd/
|
185
|
-
- lib/redd/
|
186
|
-
- lib/redd/
|
187
|
-
- lib/redd/
|
188
|
-
- lib/redd/
|
189
|
-
- lib/redd/
|
190
|
-
- lib/redd/
|
191
|
-
- lib/redd/
|
192
|
-
- lib/redd/
|
193
|
-
- lib/redd/
|
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
|
-
|
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:
|
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:
|
195
|
+
version: 1.3.1
|
218
196
|
requirements: []
|
219
197
|
rubyforge_project:
|
220
|
-
rubygems_version: 2.6.
|
198
|
+
rubygems_version: 2.6.8
|
221
199
|
signing_key:
|
222
200
|
specification_version: 4
|
223
|
-
summary:
|
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: []
|