redd 0.6.5 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +34 -33
- data/.rspec +3 -4
- data/.rubocop.yml +5 -5
- data/.travis.yml +9 -7
- data/{LICENSE.md → LICENSE.txt} +22 -22
- data/README.md +126 -241
- data/Rakefile +5 -6
- data/{RedditKit.LICENSE.md → RedditKit.LICENSE.txt} +13 -13
- data/lib/redd.rb +50 -4
- data/lib/redd/access.rb +76 -0
- data/lib/redd/clients/base.rb +178 -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 +28 -0
- data/lib/redd/clients/base/read.rb +66 -0
- data/lib/redd/clients/base/stream.rb +74 -0
- data/lib/redd/clients/base/submit.rb +54 -0
- data/lib/redd/clients/base/utilities.rb +80 -0
- data/lib/redd/clients/base/wikiread.rb +33 -0
- data/lib/redd/clients/installed.rb +55 -0
- data/lib/redd/clients/script.rb +37 -0
- data/lib/redd/clients/userless.rb +31 -0
- data/lib/redd/clients/web.rb +57 -0
- data/lib/redd/error.rb +138 -153
- data/lib/redd/objects/base.rb +36 -0
- data/lib/redd/objects/comment.rb +22 -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 +18 -0
- data/lib/redd/objects/submission.rb +72 -0
- data/lib/redd/objects/subreddit.rb +152 -0
- data/lib/redd/objects/thing.rb +33 -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 +34 -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/user.rb +52 -0
- data/lib/redd/objects/wiki_page.rb +15 -0
- data/lib/redd/rate_limit.rb +50 -49
- data/lib/redd/response/parse_json.rb +17 -33
- data/lib/redd/response/raise_error.rb +16 -25
- data/lib/redd/version.rb +4 -5
- data/redd.gemspec +30 -31
- data/spec/redd/objects/base_spec.rb +1 -0
- data/spec/redd/rate_limit_spec.rb +29 -29
- data/spec/redd/response/parse_json_spec.rb +12 -0
- data/spec/redd/response/raise_error_spec.rb +11 -0
- data/spec/redd_spec.rb +7 -5
- data/spec/spec_helper.rb +69 -50
- metadata +73 -136
- data/.yardopts +0 -1
- data/lib/redd/base.rb +0 -56
- data/lib/redd/client/authenticated.rb +0 -83
- data/lib/redd/client/authenticated/account.rb +0 -13
- data/lib/redd/client/authenticated/apps.rb +0 -13
- data/lib/redd/client/authenticated/flair.rb +0 -71
- data/lib/redd/client/authenticated/gold.rb +0 -13
- data/lib/redd/client/authenticated/links_comments.rb +0 -189
- data/lib/redd/client/authenticated/live.rb +0 -13
- data/lib/redd/client/authenticated/moderation.rb +0 -126
- data/lib/redd/client/authenticated/multis.rb +0 -9
- data/lib/redd/client/authenticated/private_messages.rb +0 -73
- data/lib/redd/client/authenticated/subreddits.rb +0 -172
- data/lib/redd/client/authenticated/users.rb +0 -9
- data/lib/redd/client/authenticated/wiki.rb +0 -9
- data/lib/redd/client/oauth2.rb +0 -71
- data/lib/redd/client/oauth2/authorization.rb +0 -108
- data/lib/redd/client/oauth2/identity.rb +0 -16
- data/lib/redd/client/oauth2_script.rb +0 -24
- data/lib/redd/client/oauth2_script/authorization.rb +0 -21
- data/lib/redd/client/unauthenticated.rb +0 -118
- data/lib/redd/client/unauthenticated/account.rb +0 -30
- data/lib/redd/client/unauthenticated/captcha.rb +0 -27
- data/lib/redd/client/unauthenticated/links_comments.rb +0 -60
- data/lib/redd/client/unauthenticated/listing.rb +0 -65
- data/lib/redd/client/unauthenticated/live.rb +0 -9
- data/lib/redd/client/unauthenticated/moderation.rb +0 -26
- data/lib/redd/client/unauthenticated/subreddits.rb +0 -49
- data/lib/redd/client/unauthenticated/users.rb +0 -67
- data/lib/redd/client/unauthenticated/utilities.rb +0 -109
- data/lib/redd/client/unauthenticated/wiki.rb +0 -33
- data/lib/redd/oauth2_access.rb +0 -70
- data/lib/redd/object/comment.rb +0 -74
- data/lib/redd/object/listing.rb +0 -29
- data/lib/redd/object/more_comments.rb +0 -14
- data/lib/redd/object/private_message.rb +0 -35
- data/lib/redd/object/submission.rb +0 -94
- data/lib/redd/object/subreddit.rb +0 -74
- data/lib/redd/object/user.rb +0 -34
- data/lib/redd/object/wiki_page.rb +0 -27
- data/lib/redd/thing.rb +0 -27
- data/lib/redd/thing/commentable.rb +0 -27
- data/lib/redd/thing/editable.rb +0 -16
- data/lib/redd/thing/hideable.rb +0 -16
- data/lib/redd/thing/inboxable.rb +0 -20
- data/lib/redd/thing/messageable.rb +0 -12
- data/lib/redd/thing/moderatable.rb +0 -32
- data/lib/redd/thing/reportable.rb +0 -12
- data/lib/redd/thing/saveable.rb +0 -16
- data/lib/redd/thing/voteable.rb +0 -22
- data/spec/README.md +0 -18
- data/spec/redd/base_spec.rb +0 -36
- data/spec/redd/client/authenticated/account_spec.rb +0 -5
- data/spec/redd/client/authenticated/apps_spec.rb +0 -2
- data/spec/redd/client/authenticated/flair_spec.rb +0 -26
- data/spec/redd/client/authenticated/gold_spec.rb +0 -2
- data/spec/redd/client/authenticated/links_comments_spec.rb +0 -231
- data/spec/redd/client/authenticated/live_spec.rb +0 -2
- data/spec/redd/client/unauthenticated/account_spec.rb +0 -15
- data/spec/redd/client/unauthenticated/captcha_spec.rb +0 -23
- data/spec/redd/client/unauthenticated/links_comments_spec.rb +0 -28
- data/spec/redd/client/unauthenticated/listing_spec.rb +0 -23
- data/spec/redd/client/unauthenticated/live_spec.rb +0 -2
- data/spec/redd/client/unauthenticated/moderation_spec.rb +0 -14
- data/spec/redd/client/unauthenticated/subreddits_spec.rb +0 -35
- data/spec/redd/client/unauthenticated/users_spec.rb +0 -34
- data/spec/redd/client/unauthenticated/wiki_spec.rb +0 -18
- data/spec/redd/oauth2_access_spec.rb +0 -83
- data/spec/redd/thing_spec.rb +0 -22
@@ -1,83 +0,0 @@
|
|
1
|
-
require "json"
|
2
|
-
|
3
|
-
describe Redd::OAuth2Access do
|
4
|
-
|
5
|
-
# TODO: Use the password grant with a future OAuth2Stript Client for more
|
6
|
-
# for more accurate responses.
|
7
|
-
let(:access) do
|
8
|
-
Redd::OAuth2Access.new(
|
9
|
-
access_token: "TEST_ACCESS_TOKEN",
|
10
|
-
refresh_token: "TEST_REFRESH_TOKEN",
|
11
|
-
scope: "identity,TEST_SCOPE",
|
12
|
-
expires_in: 3600
|
13
|
-
)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "has an accessible access token" do
|
17
|
-
expect(access.access_token).to be_a(String)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "has an accessible duration" do
|
21
|
-
expect(access.duration).to eq(:temporary).or eq(:permanent)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "has an array of scopes" do
|
25
|
-
expect(access.scope).to be_an(Array)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "shows the correct time of expiry" do
|
29
|
-
expect(access.expires_at).to be_within(60).of(Time.now + 3600)
|
30
|
-
end
|
31
|
-
|
32
|
-
describe "#refresh" do
|
33
|
-
let(:refreshed_access) { access.dup }
|
34
|
-
let(:new_access_token) { "NEW_ACCESS_TOKEN" }
|
35
|
-
let(:new_expires_in) { 1600 }
|
36
|
-
|
37
|
-
before do
|
38
|
-
response = {access_token: new_access_token, expires_in: new_expires_in}
|
39
|
-
refreshed_access.refresh(response)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "sets the new access token" do
|
43
|
-
expect(refreshed_access.access_token).to eq(new_access_token)
|
44
|
-
end
|
45
|
-
|
46
|
-
it "sets the new expiry time" do
|
47
|
-
expect(refreshed_access.expires_at).to be_within(60).of(Time.now + new_expires_in)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "#expired?" do
|
52
|
-
context "when the access token isn't expired" do
|
53
|
-
it "returns false"
|
54
|
-
end
|
55
|
-
|
56
|
-
context "when the access token is expired" do
|
57
|
-
it "returns true"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe "#to_json" do
|
62
|
-
let(:json_str) { access.to_json }
|
63
|
-
|
64
|
-
it "transcribes to valid json" do
|
65
|
-
expect(JSON.parse(json_str)).to be_a(Hash)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe "#from_json" do
|
70
|
-
let(:object) do
|
71
|
-
json = access.to_json
|
72
|
-
Redd::OAuth2Access.from_json(json)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "creates a proper object from a JSON string" do
|
76
|
-
expect(object.access_token).to eq(access.access_token)
|
77
|
-
expect(object.refresh_token).to eq(access.refresh_token)
|
78
|
-
expect(object.scope).to eq(access.scope)
|
79
|
-
expect(object.duration).to eq(access.duration)
|
80
|
-
expect(object.expires_at).to be_within(60).of(access.expires_at)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
data/spec/redd/thing_spec.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
describe Redd::Thing do
|
2
|
-
before do
|
3
|
-
stub_const "ReddThing", Class.new(Redd::Thing)
|
4
|
-
ReddThing.attr_reader :string
|
5
|
-
ReddThing.attr_reader :condition
|
6
|
-
ReddThing.attr_reader :nonexistent
|
7
|
-
end
|
8
|
-
|
9
|
-
let(:thing) do
|
10
|
-
client = Redd::Client::Unauthenticated.new
|
11
|
-
object = {kind: "tx", data: {id: "abc123"}}
|
12
|
-
ReddThing.new(client, object)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "has a kind" do
|
16
|
-
expect(thing.kind).to be_a(String)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "has an id" do
|
20
|
-
expect(thing.id).to be_a(String)
|
21
|
-
end
|
22
|
-
end
|