neonredd 0.0.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 +7 -0
- data/Gemfile +4 -0
- data/LICENSE.md +22 -0
- data/README.md +1 -0
- data/Rakefile +5 -0
- data/Redd.LICENSE.md +22 -0
- data/RedditKit.LICENSE.md +9 -0
- data/lib/redd/access.rb +76 -0
- data/lib/redd/clients/base/account.rb +20 -0
- data/lib/redd/clients/base/identity.rb +22 -0
- data/lib/redd/clients/base/none.rb +27 -0
- data/lib/redd/clients/base/privatemessages.rb +33 -0
- data/lib/redd/clients/base/read.rb +114 -0
- data/lib/redd/clients/base/stream.rb +82 -0
- data/lib/redd/clients/base/submit.rb +19 -0
- data/lib/redd/clients/base/utilities.rb +143 -0
- data/lib/redd/clients/base/wikiread.rb +33 -0
- data/lib/redd/clients/base.rb +181 -0
- data/lib/redd/clients/installed.rb +56 -0
- data/lib/redd/clients/script.rb +40 -0
- data/lib/redd/clients/userless.rb +32 -0
- data/lib/redd/clients/web.rb +59 -0
- data/lib/redd/error.rb +151 -0
- data/lib/redd/objects/base.rb +39 -0
- data/lib/redd/objects/comment.rb +22 -0
- data/lib/redd/objects/labeled_multi.rb +13 -0
- data/lib/redd/objects/listing.rb +29 -0
- data/lib/redd/objects/more_comments.rb +10 -0
- data/lib/redd/objects/private_message.rb +28 -0
- data/lib/redd/objects/submission.rb +140 -0
- data/lib/redd/objects/subreddit.rb +329 -0
- data/lib/redd/objects/thing/editable.rb +22 -0
- data/lib/redd/objects/thing/hideable.rb +18 -0
- data/lib/redd/objects/thing/inboxable.rb +25 -0
- data/lib/redd/objects/thing/messageable.rb +38 -0
- data/lib/redd/objects/thing/moderatable.rb +43 -0
- data/lib/redd/objects/thing/refreshable.rb +14 -0
- data/lib/redd/objects/thing/saveable.rb +21 -0
- data/lib/redd/objects/thing/votable.rb +33 -0
- data/lib/redd/objects/thing.rb +26 -0
- data/lib/redd/objects/user.rb +52 -0
- data/lib/redd/objects/wiki_page.rb +15 -0
- data/lib/redd/rate_limit.rb +88 -0
- data/lib/redd/response/parse_json.rb +18 -0
- data/lib/redd/response/raise_error.rb +16 -0
- data/lib/redd/version.rb +4 -0
- data/lib/redd.rb +50 -0
- data/neonredd.gemspec +33 -0
- data/spec/redd/objects/base_spec.rb +1 -0
- data/spec/redd/response/raise_error_spec.rb +11 -0
- data/spec/redd_spec.rb +5 -0
- data/spec/spec_helper.rb +71 -0
- metadata +225 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module Redd
|
4
|
+
module Objects
|
5
|
+
# A reddit thing.
|
6
|
+
# @see http://www.reddit.com/dev/api#fullnames
|
7
|
+
class Thing < Base
|
8
|
+
# Load up all the possible mixins for the thing.
|
9
|
+
Dir[File.join(File.dirname(__FILE__), 'thing', '*.rb')].each do |file|
|
10
|
+
require(file)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Check for equality.
|
14
|
+
# @param other The other object.
|
15
|
+
# @return [Boolean]
|
16
|
+
def ==(other)
|
17
|
+
other.is_a?(Thing) && fullname == other.fullname
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [String] The fullname of the thing.
|
21
|
+
def fullname
|
22
|
+
self[:name] || "#{kind}_#{id}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative 'thing'
|
2
|
+
|
3
|
+
module Redd
|
4
|
+
module Objects
|
5
|
+
# The model for a reddit user
|
6
|
+
class User < Thing
|
7
|
+
include Thing::Messageable
|
8
|
+
|
9
|
+
# @!method get_overview(**params)
|
10
|
+
# @!method get_submitted(**params)
|
11
|
+
# @!method get_comments(**params)
|
12
|
+
# @!method get_liked(**params)
|
13
|
+
# @!method get_disliked(**params)
|
14
|
+
# @!method get_hidden(**params)
|
15
|
+
# @!method get_saved(**params)
|
16
|
+
# @!method get_gilded(**params)
|
17
|
+
#
|
18
|
+
# Get the appropriate listing.
|
19
|
+
# @option params [String] :after Return results after the given
|
20
|
+
# fullname.
|
21
|
+
# @option params [String] :before Return results before the given
|
22
|
+
# fullname.
|
23
|
+
# @option params [Integer] :count The number of items already seen
|
24
|
+
# in the listing.
|
25
|
+
# @option params [1..1000] :limit The maximum number of things to
|
26
|
+
# return.
|
27
|
+
# @option params [:hot, :new, :top, :controversial] :sort The type of
|
28
|
+
# sort to use.
|
29
|
+
# @option params [:hour, :day, :week, :month, :year, :all] :t The
|
30
|
+
# time period to consider when sorting.
|
31
|
+
# @option params [:given] :show For {#get_gilded}, whether to show the
|
32
|
+
# gildings given.
|
33
|
+
# @note The option :t only applies to the top and controversial sorts.
|
34
|
+
# @return [Listing<Submission>]
|
35
|
+
%w(
|
36
|
+
overview submitted comments liked disliked hidden saved gilded
|
37
|
+
).each do |type|
|
38
|
+
define_method :"get_#{type}" do |**params|
|
39
|
+
client.request_object(
|
40
|
+
:get, "/user/#{name}/#{type}.json", **params
|
41
|
+
)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Get posts that the user has gilded.
|
46
|
+
# @see #get_gilded
|
47
|
+
def get_gildings_given(**params)
|
48
|
+
get_gilded(**params.merge(show: "given"))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'thing'
|
2
|
+
|
3
|
+
module Redd
|
4
|
+
module Objects
|
5
|
+
# A submission made in a subreddit.
|
6
|
+
class WikiPage < Thing
|
7
|
+
alias_property :content, :content_md
|
8
|
+
alias_property :body, :content_md
|
9
|
+
|
10
|
+
def revision_user
|
11
|
+
@revision_by ||= client.object_from_body(revision_by)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# The main Redd module.
|
2
|
+
module Redd
|
3
|
+
# The class that handles rate limiting for reddit.
|
4
|
+
#
|
5
|
+
# If you'd rather have an asynchronous or queue-based limiting, it's easy to
|
6
|
+
# write one yourself. A rate limiting class is any class that has an
|
7
|
+
# {#after_limit} method. The block returns a Faraday::Response object, so you
|
8
|
+
# can also extract the headers from the response and use those instead. To
|
9
|
+
# remove rate limiting entirely, follow the example below.
|
10
|
+
#
|
11
|
+
# @example To remove rate limiting entirely, just burst forever.
|
12
|
+
# rt = Redd::RateLimit.new
|
13
|
+
# rt.burst!(Float::INFINITY)
|
14
|
+
class RateLimit
|
15
|
+
# @!attribute [rw] gap
|
16
|
+
# @return [Integer, Float] The minimum time between requests.
|
17
|
+
attr_accessor :gap
|
18
|
+
|
19
|
+
# @!attribute [rw] burst_length
|
20
|
+
# @return [Integer] The number of requests left to burst.
|
21
|
+
attr_accessor :burst_length
|
22
|
+
|
23
|
+
# @!attribute [r] last_request
|
24
|
+
# @return [Time] The time the last request was made.
|
25
|
+
attr_reader :last_request
|
26
|
+
|
27
|
+
# @!attribute [r] used
|
28
|
+
# @!attribute [r] remaining
|
29
|
+
# @!attribute [r] reset
|
30
|
+
# @return [Integer] The data from reddit's response headers.
|
31
|
+
attr_reader :used, :remaining, :reset
|
32
|
+
|
33
|
+
# @param [Float, Integer] gap The minimum time between each request.
|
34
|
+
def initialize(gap)
|
35
|
+
# Some time ages ago, because we never made a request.
|
36
|
+
@last_request = Time.at(0)
|
37
|
+
@gap = gap
|
38
|
+
@burst_length = 0
|
39
|
+
end
|
40
|
+
|
41
|
+
# Don't sleep for the next few requests.
|
42
|
+
# @param [Integer] times The number of times to ignore limiting.
|
43
|
+
# @return [Integer] The total times rate limiting will be ignored.
|
44
|
+
def burst!(times)
|
45
|
+
@burst_length += times
|
46
|
+
end
|
47
|
+
|
48
|
+
# Sleep until 1 second has passed since the last request and perform the
|
49
|
+
# given request unless bursting.
|
50
|
+
#
|
51
|
+
# @yield [Faraday::Response] A response.
|
52
|
+
# @return [Faraday::Response] The response.
|
53
|
+
def after_limit
|
54
|
+
response = yield
|
55
|
+
update!(response)
|
56
|
+
sleep(wait_time)
|
57
|
+
response
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
# Update necessary info with each request.
|
63
|
+
# @param [Faraday::Response] response The response to the request made.
|
64
|
+
def update!(response)
|
65
|
+
@last_request_time = Time.now
|
66
|
+
%w(used remaining reset).each do |type|
|
67
|
+
value = response.headers["x-ratelimit-#{type}"]
|
68
|
+
instance_variable_set("@#{type}", value.to_i) unless value.nil?
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# @return [Float, Integer] The number of seconds to sleep.
|
73
|
+
def wait_time
|
74
|
+
if @burst_length > 0 && @remaining > 0
|
75
|
+
# Don't sleep if we are in burst mode.
|
76
|
+
@burst_length -= 1
|
77
|
+
0
|
78
|
+
elsif @reset.nil? || @remaining.nil?
|
79
|
+
# Just guess if no headers were given (max 1 sec after last request).
|
80
|
+
time = @last_request_time - Time.now + @gap
|
81
|
+
time > 0 ? time : 0
|
82
|
+
else
|
83
|
+
# Most cases, spread out requests over available time.
|
84
|
+
@reset.to_f / (@gap * @remaining + 1)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'faraday/response'
|
2
|
+
require_relative '../error'
|
3
|
+
|
4
|
+
module Redd
|
5
|
+
# The module that contains middleware that alters the Faraday response.
|
6
|
+
module Response
|
7
|
+
# Faraday Middleware that parses JSON using OJ, via MultiJson.
|
8
|
+
class ParseJson < Faraday::Response::Middleware
|
9
|
+
dependency 'multi_json'
|
10
|
+
|
11
|
+
def on_complete(env)
|
12
|
+
env[:body] = MultiJson.load(env[:body], symbolize_keys: true)
|
13
|
+
rescue MultiJson::ParseError
|
14
|
+
raise JSONError.new(env), env[:body]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'faraday/response'
|
2
|
+
require_relative '../error'
|
3
|
+
|
4
|
+
module Redd
|
5
|
+
# The module that contains middleware that alters the Faraday response.
|
6
|
+
module Response
|
7
|
+
# Faraday Middleware that raises an error if there's one.
|
8
|
+
# @see Error
|
9
|
+
class RaiseError < Faraday::Response::Middleware
|
10
|
+
def on_complete(env)
|
11
|
+
error = Redd::Error.from_response(env)
|
12
|
+
fail error.new(env), env[:body] if error
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/redd/version.rb
ADDED
data/lib/redd.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require_relative 'redd/version'
|
2
|
+
require_relative 'redd/clients/installed'
|
3
|
+
require_relative 'redd/clients/script'
|
4
|
+
require_relative 'redd/clients/userless'
|
5
|
+
require_relative 'redd/clients/web'
|
6
|
+
|
7
|
+
# The main Redd module.
|
8
|
+
module Redd
|
9
|
+
# @overload it(:installed, client_id, redirect_uri, **kwargs)
|
10
|
+
# Authorize a user via an installed app.
|
11
|
+
# @param [String] client_id The client ID provided by reddit.
|
12
|
+
# @param [String] redirect_uri The exact uri you provided to reddit.
|
13
|
+
# @param [Hash] kwargs The keyword arguments provided to the client.
|
14
|
+
# @return [Clients::Installed]
|
15
|
+
#
|
16
|
+
# @overload it(:script, client_id, secret, username, password, **kwargs)
|
17
|
+
# Authorize a user that you have full access to, i.e. a bot.
|
18
|
+
# @param [String] client_id The client ID provided by reddit.
|
19
|
+
# @param [String] secret The client secret provided by reddit.
|
20
|
+
# @param [String] username The username.
|
21
|
+
# @param [String] password The password of the user.
|
22
|
+
# @param [Hash] kwargs The keyword arguments provided to the client.
|
23
|
+
# @return [Clients::Script]
|
24
|
+
#
|
25
|
+
# @overload it(:userless, client_id, secret, **kwargs)
|
26
|
+
# Connect to reddit from a web-app or a script without a specific user.
|
27
|
+
# @param [String] client_id The client ID provided by reddit.
|
28
|
+
# @param [String] secret The client secret provided by reddit.
|
29
|
+
# @param [Hash] kwargs The keyword arguments provided to the client.
|
30
|
+
# @return [Clients::Userless]
|
31
|
+
#
|
32
|
+
# @overload it(:web, client_id, secret, redirect_uri, **kwargs)
|
33
|
+
# Authorize a user from a website.
|
34
|
+
# @param [String] client_id The client ID provided by reddit.
|
35
|
+
# @param [String] secret The client secret provided by reddit.
|
36
|
+
# @param [String] redirect_uri The exact uri you provided to reddit.
|
37
|
+
# @param [Hash] kwargs The keyword arguments provided to the client.
|
38
|
+
# @return [Clients::Web]
|
39
|
+
#
|
40
|
+
def self.it(type, *args, **kwargs)
|
41
|
+
types = {
|
42
|
+
installed: Clients::Installed,
|
43
|
+
script: Clients::Script,
|
44
|
+
userless: Clients::Userless,
|
45
|
+
web: Clients::Web
|
46
|
+
}
|
47
|
+
|
48
|
+
types[type].new(*args, **kwargs)
|
49
|
+
end
|
50
|
+
end
|
data/neonredd.gemspec
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'redd/version'
|
5
|
+
|
6
|
+
# rubocop:disable Metrics/LineLength
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'neonredd'
|
9
|
+
spec.version = Redd::VERSION
|
10
|
+
spec.authors = ['SirNeon']
|
11
|
+
spec.email = ['sirneon618@gmail.com']
|
12
|
+
spec.summary = 'A Reddit API Wrapper for Ruby.'
|
13
|
+
spec.description = 'This is literally just Redd that can grab up to 1000 listing items.'
|
14
|
+
spec.homepage = 'https://gitlab.com/SirNeon/neonredd'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
spec.required_ruby_version = '>= 2.1.0'
|
17
|
+
# rubocop:disable Style/RegexpLiteral
|
18
|
+
spec.files = `git ls-files -z`.split("\x0")
|
19
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
20
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.10.6'
|
24
|
+
spec.add_development_dependency 'rake', '~> 10.4.2'
|
25
|
+
spec.add_development_dependency 'rspec', '~> 3.2.0'
|
26
|
+
spec.add_development_dependency 'vcr', '~> 2.9.3'
|
27
|
+
spec.add_development_dependency 'webmock', '~> 1.20.4'
|
28
|
+
|
29
|
+
spec.add_dependency 'hashie', '~> 3.4.0'
|
30
|
+
spec.add_dependency 'faraday', '~> 0.9.1'
|
31
|
+
spec.add_dependency 'multi_json', '~> 1.10.1'
|
32
|
+
spec.add_dependency 'fastimage', '~> 1.6.6'
|
33
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# There's no point in testing Base, since we'd basically be testing Hashie.
|
data/spec/redd_spec.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
|
2
|
+
require "vcr"
|
3
|
+
require "redd"
|
4
|
+
|
5
|
+
VCR.configure do |config|
|
6
|
+
config.cassette_library_dir = "spec/cassettes"
|
7
|
+
config.hook_into :webmock
|
8
|
+
config.default_cassette_options = {record: :new_episodes}
|
9
|
+
config.configure_rspec_metadata!
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec.configure do |config|
|
13
|
+
# rspec-expectations config goes here. You can use an alternate
|
14
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
15
|
+
# assertions if you prefer.
|
16
|
+
config.expect_with :rspec do |expectations|
|
17
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
18
|
+
# and `failure_message` of custom matchers include text for helper methods
|
19
|
+
# defined using `chain`, e.g.:
|
20
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
21
|
+
# # => "be bigger than 2 and smaller than 4"
|
22
|
+
# ...rather than:
|
23
|
+
# # => "be bigger than 2"
|
24
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
25
|
+
end
|
26
|
+
|
27
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
28
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
29
|
+
config.mock_with :rspec do |mocks|
|
30
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
31
|
+
# a real object. This is generally recommended, and will default to
|
32
|
+
# `true` in RSpec 4.
|
33
|
+
mocks.verify_partial_doubles = true
|
34
|
+
end
|
35
|
+
|
36
|
+
# These two settings work together to allow you to limit a spec run
|
37
|
+
# to individual examples or groups you care about by tagging them with
|
38
|
+
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
39
|
+
# get run.
|
40
|
+
config.filter_run_including :focus
|
41
|
+
config.run_all_when_everything_filtered = true
|
42
|
+
|
43
|
+
# If we don't have the details to perform authentication, we can't do those
|
44
|
+
# tests.
|
45
|
+
if ENV["TRAVIS_SECURE_ENV_VARS"] == "false"
|
46
|
+
config.filter_run_excluding :secure
|
47
|
+
end
|
48
|
+
|
49
|
+
# Limits the available syntax to the non-monkey patched syntax that is
|
50
|
+
# recommended. For more details, see:
|
51
|
+
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
52
|
+
# - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
53
|
+
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
54
|
+
config.disable_monkey_patching!
|
55
|
+
|
56
|
+
# This setting enables warnings. It's recommended, but in some cases may
|
57
|
+
# be too noisy due to issues in dependencies.
|
58
|
+
config.warnings = true
|
59
|
+
|
60
|
+
# Run specs in random order to surface order dependencies. If you find an
|
61
|
+
# order dependency and want to debug it, you can fix the order by providing
|
62
|
+
# the seed, which is printed after each run.
|
63
|
+
# --seed 1234
|
64
|
+
config.order = :random
|
65
|
+
|
66
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
67
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
68
|
+
# test failures related to randomization by passing the same `--seed` value
|
69
|
+
# as the one that triggered the failure.
|
70
|
+
Kernel.srand config.seed
|
71
|
+
end
|
metadata
ADDED
@@ -0,0 +1,225 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: neonredd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- SirNeon
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.10.6
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.10.6
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 10.4.2
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 10.4.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.2.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.2.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: vcr
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.9.3
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.9.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.20.4
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.20.4
|
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.0
|
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.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: faraday
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.9.1
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.9.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: multi_json
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.10.1
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.10.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: fastimage
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.6.6
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.6.6
|
139
|
+
description: This is literally just Redd that can grab up to 1000 listing items.
|
140
|
+
email:
|
141
|
+
- sirneon618@gmail.com
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- Gemfile
|
147
|
+
- LICENSE.md
|
148
|
+
- README.md
|
149
|
+
- Rakefile
|
150
|
+
- Redd.LICENSE.md
|
151
|
+
- RedditKit.LICENSE.md
|
152
|
+
- lib/redd.rb
|
153
|
+
- lib/redd/access.rb
|
154
|
+
- lib/redd/clients/base.rb
|
155
|
+
- lib/redd/clients/base/account.rb
|
156
|
+
- lib/redd/clients/base/identity.rb
|
157
|
+
- lib/redd/clients/base/none.rb
|
158
|
+
- lib/redd/clients/base/privatemessages.rb
|
159
|
+
- lib/redd/clients/base/read.rb
|
160
|
+
- lib/redd/clients/base/stream.rb
|
161
|
+
- lib/redd/clients/base/submit.rb
|
162
|
+
- lib/redd/clients/base/utilities.rb
|
163
|
+
- lib/redd/clients/base/wikiread.rb
|
164
|
+
- lib/redd/clients/installed.rb
|
165
|
+
- lib/redd/clients/script.rb
|
166
|
+
- lib/redd/clients/userless.rb
|
167
|
+
- lib/redd/clients/web.rb
|
168
|
+
- lib/redd/error.rb
|
169
|
+
- lib/redd/objects/base.rb
|
170
|
+
- lib/redd/objects/comment.rb
|
171
|
+
- lib/redd/objects/labeled_multi.rb
|
172
|
+
- lib/redd/objects/listing.rb
|
173
|
+
- lib/redd/objects/more_comments.rb
|
174
|
+
- lib/redd/objects/private_message.rb
|
175
|
+
- lib/redd/objects/submission.rb
|
176
|
+
- lib/redd/objects/subreddit.rb
|
177
|
+
- lib/redd/objects/thing.rb
|
178
|
+
- lib/redd/objects/thing/editable.rb
|
179
|
+
- lib/redd/objects/thing/hideable.rb
|
180
|
+
- lib/redd/objects/thing/inboxable.rb
|
181
|
+
- lib/redd/objects/thing/messageable.rb
|
182
|
+
- lib/redd/objects/thing/moderatable.rb
|
183
|
+
- lib/redd/objects/thing/refreshable.rb
|
184
|
+
- lib/redd/objects/thing/saveable.rb
|
185
|
+
- lib/redd/objects/thing/votable.rb
|
186
|
+
- lib/redd/objects/user.rb
|
187
|
+
- lib/redd/objects/wiki_page.rb
|
188
|
+
- lib/redd/rate_limit.rb
|
189
|
+
- lib/redd/response/parse_json.rb
|
190
|
+
- lib/redd/response/raise_error.rb
|
191
|
+
- lib/redd/version.rb
|
192
|
+
- neonredd.gemspec
|
193
|
+
- spec/redd/objects/base_spec.rb
|
194
|
+
- spec/redd/response/raise_error_spec.rb
|
195
|
+
- spec/redd_spec.rb
|
196
|
+
- spec/spec_helper.rb
|
197
|
+
homepage: https://gitlab.com/SirNeon/neonredd
|
198
|
+
licenses:
|
199
|
+
- MIT
|
200
|
+
metadata: {}
|
201
|
+
post_install_message:
|
202
|
+
rdoc_options: []
|
203
|
+
require_paths:
|
204
|
+
- lib
|
205
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: 2.1.0
|
210
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
requirements: []
|
216
|
+
rubyforge_project:
|
217
|
+
rubygems_version: 2.2.2
|
218
|
+
signing_key:
|
219
|
+
specification_version: 4
|
220
|
+
summary: A Reddit API Wrapper for Ruby.
|
221
|
+
test_files:
|
222
|
+
- spec/redd/objects/base_spec.rb
|
223
|
+
- spec/redd/response/raise_error_spec.rb
|
224
|
+
- spec/redd_spec.rb
|
225
|
+
- spec/spec_helper.rb
|