redd 0.6.5 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +34 -33
  3. data/.rspec +3 -4
  4. data/.rubocop.yml +5 -5
  5. data/.travis.yml +9 -7
  6. data/{LICENSE.md → LICENSE.txt} +22 -22
  7. data/README.md +126 -241
  8. data/Rakefile +5 -6
  9. data/{RedditKit.LICENSE.md → RedditKit.LICENSE.txt} +13 -13
  10. data/lib/redd.rb +50 -4
  11. data/lib/redd/access.rb +76 -0
  12. data/lib/redd/clients/base.rb +178 -0
  13. data/lib/redd/clients/base/account.rb +20 -0
  14. data/lib/redd/clients/base/identity.rb +22 -0
  15. data/lib/redd/clients/base/none.rb +27 -0
  16. data/lib/redd/clients/base/privatemessages.rb +28 -0
  17. data/lib/redd/clients/base/read.rb +66 -0
  18. data/lib/redd/clients/base/stream.rb +74 -0
  19. data/lib/redd/clients/base/submit.rb +54 -0
  20. data/lib/redd/clients/base/utilities.rb +80 -0
  21. data/lib/redd/clients/base/wikiread.rb +33 -0
  22. data/lib/redd/clients/installed.rb +55 -0
  23. data/lib/redd/clients/script.rb +37 -0
  24. data/lib/redd/clients/userless.rb +31 -0
  25. data/lib/redd/clients/web.rb +57 -0
  26. data/lib/redd/error.rb +138 -153
  27. data/lib/redd/objects/base.rb +36 -0
  28. data/lib/redd/objects/comment.rb +22 -0
  29. data/lib/redd/objects/listing.rb +29 -0
  30. data/lib/redd/objects/more_comments.rb +10 -0
  31. data/lib/redd/objects/private_message.rb +18 -0
  32. data/lib/redd/objects/submission.rb +72 -0
  33. data/lib/redd/objects/subreddit.rb +152 -0
  34. data/lib/redd/objects/thing.rb +33 -0
  35. data/lib/redd/objects/thing/editable.rb +22 -0
  36. data/lib/redd/objects/thing/hideable.rb +18 -0
  37. data/lib/redd/objects/thing/inboxable.rb +25 -0
  38. data/lib/redd/objects/thing/messageable.rb +34 -0
  39. data/lib/redd/objects/thing/moderatable.rb +43 -0
  40. data/lib/redd/objects/thing/refreshable.rb +14 -0
  41. data/lib/redd/objects/thing/saveable.rb +21 -0
  42. data/lib/redd/objects/thing/votable.rb +33 -0
  43. data/lib/redd/objects/user.rb +52 -0
  44. data/lib/redd/objects/wiki_page.rb +15 -0
  45. data/lib/redd/rate_limit.rb +50 -49
  46. data/lib/redd/response/parse_json.rb +17 -33
  47. data/lib/redd/response/raise_error.rb +16 -25
  48. data/lib/redd/version.rb +4 -5
  49. data/redd.gemspec +30 -31
  50. data/spec/redd/objects/base_spec.rb +1 -0
  51. data/spec/redd/rate_limit_spec.rb +29 -29
  52. data/spec/redd/response/parse_json_spec.rb +12 -0
  53. data/spec/redd/response/raise_error_spec.rb +11 -0
  54. data/spec/redd_spec.rb +7 -5
  55. data/spec/spec_helper.rb +69 -50
  56. metadata +73 -136
  57. data/.yardopts +0 -1
  58. data/lib/redd/base.rb +0 -56
  59. data/lib/redd/client/authenticated.rb +0 -83
  60. data/lib/redd/client/authenticated/account.rb +0 -13
  61. data/lib/redd/client/authenticated/apps.rb +0 -13
  62. data/lib/redd/client/authenticated/flair.rb +0 -71
  63. data/lib/redd/client/authenticated/gold.rb +0 -13
  64. data/lib/redd/client/authenticated/links_comments.rb +0 -189
  65. data/lib/redd/client/authenticated/live.rb +0 -13
  66. data/lib/redd/client/authenticated/moderation.rb +0 -126
  67. data/lib/redd/client/authenticated/multis.rb +0 -9
  68. data/lib/redd/client/authenticated/private_messages.rb +0 -73
  69. data/lib/redd/client/authenticated/subreddits.rb +0 -172
  70. data/lib/redd/client/authenticated/users.rb +0 -9
  71. data/lib/redd/client/authenticated/wiki.rb +0 -9
  72. data/lib/redd/client/oauth2.rb +0 -71
  73. data/lib/redd/client/oauth2/authorization.rb +0 -108
  74. data/lib/redd/client/oauth2/identity.rb +0 -16
  75. data/lib/redd/client/oauth2_script.rb +0 -24
  76. data/lib/redd/client/oauth2_script/authorization.rb +0 -21
  77. data/lib/redd/client/unauthenticated.rb +0 -118
  78. data/lib/redd/client/unauthenticated/account.rb +0 -30
  79. data/lib/redd/client/unauthenticated/captcha.rb +0 -27
  80. data/lib/redd/client/unauthenticated/links_comments.rb +0 -60
  81. data/lib/redd/client/unauthenticated/listing.rb +0 -65
  82. data/lib/redd/client/unauthenticated/live.rb +0 -9
  83. data/lib/redd/client/unauthenticated/moderation.rb +0 -26
  84. data/lib/redd/client/unauthenticated/subreddits.rb +0 -49
  85. data/lib/redd/client/unauthenticated/users.rb +0 -67
  86. data/lib/redd/client/unauthenticated/utilities.rb +0 -109
  87. data/lib/redd/client/unauthenticated/wiki.rb +0 -33
  88. data/lib/redd/oauth2_access.rb +0 -70
  89. data/lib/redd/object/comment.rb +0 -74
  90. data/lib/redd/object/listing.rb +0 -29
  91. data/lib/redd/object/more_comments.rb +0 -14
  92. data/lib/redd/object/private_message.rb +0 -35
  93. data/lib/redd/object/submission.rb +0 -94
  94. data/lib/redd/object/subreddit.rb +0 -74
  95. data/lib/redd/object/user.rb +0 -34
  96. data/lib/redd/object/wiki_page.rb +0 -27
  97. data/lib/redd/thing.rb +0 -27
  98. data/lib/redd/thing/commentable.rb +0 -27
  99. data/lib/redd/thing/editable.rb +0 -16
  100. data/lib/redd/thing/hideable.rb +0 -16
  101. data/lib/redd/thing/inboxable.rb +0 -20
  102. data/lib/redd/thing/messageable.rb +0 -12
  103. data/lib/redd/thing/moderatable.rb +0 -32
  104. data/lib/redd/thing/reportable.rb +0 -12
  105. data/lib/redd/thing/saveable.rb +0 -16
  106. data/lib/redd/thing/voteable.rb +0 -22
  107. data/spec/README.md +0 -18
  108. data/spec/redd/base_spec.rb +0 -36
  109. data/spec/redd/client/authenticated/account_spec.rb +0 -5
  110. data/spec/redd/client/authenticated/apps_spec.rb +0 -2
  111. data/spec/redd/client/authenticated/flair_spec.rb +0 -26
  112. data/spec/redd/client/authenticated/gold_spec.rb +0 -2
  113. data/spec/redd/client/authenticated/links_comments_spec.rb +0 -231
  114. data/spec/redd/client/authenticated/live_spec.rb +0 -2
  115. data/spec/redd/client/unauthenticated/account_spec.rb +0 -15
  116. data/spec/redd/client/unauthenticated/captcha_spec.rb +0 -23
  117. data/spec/redd/client/unauthenticated/links_comments_spec.rb +0 -28
  118. data/spec/redd/client/unauthenticated/listing_spec.rb +0 -23
  119. data/spec/redd/client/unauthenticated/live_spec.rb +0 -2
  120. data/spec/redd/client/unauthenticated/moderation_spec.rb +0 -14
  121. data/spec/redd/client/unauthenticated/subreddits_spec.rb +0 -35
  122. data/spec/redd/client/unauthenticated/users_spec.rb +0 -34
  123. data/spec/redd/client/unauthenticated/wiki_spec.rb +0 -18
  124. data/spec/redd/oauth2_access_spec.rb +0 -83
  125. data/spec/redd/thing_spec.rb +0 -22
metadata CHANGED
@@ -1,101 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Avinash Dwarapu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-06 00:00:00.000000000 Z
11
+ date: 2015-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.8.1
20
20
  type: :development
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: '0'
26
+ version: 1.8.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 10.4.2
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: '0'
40
+ version: 10.4.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 3.2.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: '0'
54
+ version: 3.2.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.9.3
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: '0'
68
+ version: 2.9.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 1.20.4
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: '0'
82
+ version: 1.20.4
83
83
  - !ruby/object:Gem::Dependency
84
- name: faraday
84
+ name: hashie
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.9.0
89
+ version: 3.4.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.9.0
96
+ version: 3.4.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: faraday_middleware
98
+ name: faraday
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
@@ -114,31 +114,17 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.10'
117
+ version: 1.10.1
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.10'
125
- - !ruby/object:Gem::Dependency
126
- name: memoizable
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- description: A Reddit API Wrapper for Ruby.
124
+ version: 1.10.1
125
+ description:
140
126
  email:
141
- - d.nash.avi@gmail.com
127
+ - avinash@dwarapu.me
142
128
  executables: []
143
129
  extensions: []
144
130
  extra_rdoc_files: []
@@ -147,91 +133,58 @@ files:
147
133
  - ".rspec"
148
134
  - ".rubocop.yml"
149
135
  - ".travis.yml"
150
- - ".yardopts"
151
136
  - Gemfile
152
- - LICENSE.md
137
+ - LICENSE.txt
153
138
  - README.md
154
139
  - Rakefile
155
- - RedditKit.LICENSE.md
140
+ - RedditKit.LICENSE.txt
156
141
  - lib/redd.rb
157
- - lib/redd/base.rb
158
- - lib/redd/client/authenticated.rb
159
- - lib/redd/client/authenticated/account.rb
160
- - lib/redd/client/authenticated/apps.rb
161
- - lib/redd/client/authenticated/flair.rb
162
- - lib/redd/client/authenticated/gold.rb
163
- - lib/redd/client/authenticated/links_comments.rb
164
- - lib/redd/client/authenticated/live.rb
165
- - lib/redd/client/authenticated/moderation.rb
166
- - lib/redd/client/authenticated/multis.rb
167
- - lib/redd/client/authenticated/private_messages.rb
168
- - lib/redd/client/authenticated/subreddits.rb
169
- - lib/redd/client/authenticated/users.rb
170
- - lib/redd/client/authenticated/wiki.rb
171
- - lib/redd/client/oauth2.rb
172
- - lib/redd/client/oauth2/authorization.rb
173
- - lib/redd/client/oauth2/identity.rb
174
- - lib/redd/client/oauth2_script.rb
175
- - lib/redd/client/oauth2_script/authorization.rb
176
- - lib/redd/client/unauthenticated.rb
177
- - lib/redd/client/unauthenticated/account.rb
178
- - lib/redd/client/unauthenticated/captcha.rb
179
- - lib/redd/client/unauthenticated/links_comments.rb
180
- - lib/redd/client/unauthenticated/listing.rb
181
- - lib/redd/client/unauthenticated/live.rb
182
- - lib/redd/client/unauthenticated/moderation.rb
183
- - lib/redd/client/unauthenticated/subreddits.rb
184
- - lib/redd/client/unauthenticated/users.rb
185
- - lib/redd/client/unauthenticated/utilities.rb
186
- - lib/redd/client/unauthenticated/wiki.rb
142
+ - lib/redd/access.rb
143
+ - lib/redd/clients/base.rb
144
+ - lib/redd/clients/base/account.rb
145
+ - lib/redd/clients/base/identity.rb
146
+ - lib/redd/clients/base/none.rb
147
+ - lib/redd/clients/base/privatemessages.rb
148
+ - lib/redd/clients/base/read.rb
149
+ - lib/redd/clients/base/stream.rb
150
+ - lib/redd/clients/base/submit.rb
151
+ - lib/redd/clients/base/utilities.rb
152
+ - lib/redd/clients/base/wikiread.rb
153
+ - lib/redd/clients/installed.rb
154
+ - lib/redd/clients/script.rb
155
+ - lib/redd/clients/userless.rb
156
+ - lib/redd/clients/web.rb
187
157
  - lib/redd/error.rb
188
- - lib/redd/oauth2_access.rb
189
- - lib/redd/object/comment.rb
190
- - lib/redd/object/listing.rb
191
- - lib/redd/object/more_comments.rb
192
- - lib/redd/object/private_message.rb
193
- - lib/redd/object/submission.rb
194
- - lib/redd/object/subreddit.rb
195
- - lib/redd/object/user.rb
196
- - lib/redd/object/wiki_page.rb
158
+ - lib/redd/objects/base.rb
159
+ - lib/redd/objects/comment.rb
160
+ - lib/redd/objects/listing.rb
161
+ - lib/redd/objects/more_comments.rb
162
+ - lib/redd/objects/private_message.rb
163
+ - lib/redd/objects/submission.rb
164
+ - lib/redd/objects/subreddit.rb
165
+ - lib/redd/objects/thing.rb
166
+ - lib/redd/objects/thing/editable.rb
167
+ - lib/redd/objects/thing/hideable.rb
168
+ - lib/redd/objects/thing/inboxable.rb
169
+ - lib/redd/objects/thing/messageable.rb
170
+ - lib/redd/objects/thing/moderatable.rb
171
+ - lib/redd/objects/thing/refreshable.rb
172
+ - lib/redd/objects/thing/saveable.rb
173
+ - lib/redd/objects/thing/votable.rb
174
+ - lib/redd/objects/user.rb
175
+ - lib/redd/objects/wiki_page.rb
197
176
  - lib/redd/rate_limit.rb
198
177
  - lib/redd/response/parse_json.rb
199
178
  - lib/redd/response/raise_error.rb
200
- - lib/redd/thing.rb
201
- - lib/redd/thing/commentable.rb
202
- - lib/redd/thing/editable.rb
203
- - lib/redd/thing/hideable.rb
204
- - lib/redd/thing/inboxable.rb
205
- - lib/redd/thing/messageable.rb
206
- - lib/redd/thing/moderatable.rb
207
- - lib/redd/thing/reportable.rb
208
- - lib/redd/thing/saveable.rb
209
- - lib/redd/thing/voteable.rb
210
179
  - lib/redd/version.rb
211
180
  - redd.gemspec
212
- - spec/README.md
213
- - spec/redd/base_spec.rb
214
- - spec/redd/client/authenticated/account_spec.rb
215
- - spec/redd/client/authenticated/apps_spec.rb
216
- - spec/redd/client/authenticated/flair_spec.rb
217
- - spec/redd/client/authenticated/gold_spec.rb
218
- - spec/redd/client/authenticated/links_comments_spec.rb
219
- - spec/redd/client/authenticated/live_spec.rb
220
- - spec/redd/client/unauthenticated/account_spec.rb
221
- - spec/redd/client/unauthenticated/captcha_spec.rb
222
- - spec/redd/client/unauthenticated/links_comments_spec.rb
223
- - spec/redd/client/unauthenticated/listing_spec.rb
224
- - spec/redd/client/unauthenticated/live_spec.rb
225
- - spec/redd/client/unauthenticated/moderation_spec.rb
226
- - spec/redd/client/unauthenticated/subreddits_spec.rb
227
- - spec/redd/client/unauthenticated/users_spec.rb
228
- - spec/redd/client/unauthenticated/wiki_spec.rb
229
- - spec/redd/oauth2_access_spec.rb
181
+ - spec/redd/objects/base_spec.rb
230
182
  - spec/redd/rate_limit_spec.rb
231
- - spec/redd/thing_spec.rb
183
+ - spec/redd/response/parse_json_spec.rb
184
+ - spec/redd/response/raise_error_spec.rb
232
185
  - spec/redd_spec.rb
233
186
  - spec/spec_helper.rb
234
- homepage: ''
187
+ homepage: https://github.com/avidw/redd
235
188
  licenses:
236
189
  - MIT
237
190
  metadata: {}
@@ -243,7 +196,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
243
196
  requirements:
244
197
  - - ">="
245
198
  - !ruby/object:Gem::Version
246
- version: '0'
199
+ version: 2.1.0
247
200
  required_rubygems_version: !ruby/object:Gem::Requirement
248
201
  requirements:
249
202
  - - ">="
@@ -256,26 +209,10 @@ signing_key:
256
209
  specification_version: 4
257
210
  summary: A Reddit API Wrapper for Ruby.
258
211
  test_files:
259
- - spec/README.md
260
- - spec/redd/base_spec.rb
261
- - spec/redd/client/authenticated/account_spec.rb
262
- - spec/redd/client/authenticated/apps_spec.rb
263
- - spec/redd/client/authenticated/flair_spec.rb
264
- - spec/redd/client/authenticated/gold_spec.rb
265
- - spec/redd/client/authenticated/links_comments_spec.rb
266
- - spec/redd/client/authenticated/live_spec.rb
267
- - spec/redd/client/unauthenticated/account_spec.rb
268
- - spec/redd/client/unauthenticated/captcha_spec.rb
269
- - spec/redd/client/unauthenticated/links_comments_spec.rb
270
- - spec/redd/client/unauthenticated/listing_spec.rb
271
- - spec/redd/client/unauthenticated/live_spec.rb
272
- - spec/redd/client/unauthenticated/moderation_spec.rb
273
- - spec/redd/client/unauthenticated/subreddits_spec.rb
274
- - spec/redd/client/unauthenticated/users_spec.rb
275
- - spec/redd/client/unauthenticated/wiki_spec.rb
276
- - spec/redd/oauth2_access_spec.rb
212
+ - spec/redd/objects/base_spec.rb
277
213
  - spec/redd/rate_limit_spec.rb
278
- - spec/redd/thing_spec.rb
214
+ - spec/redd/response/parse_json_spec.rb
215
+ - spec/redd/response/raise_error_spec.rb
279
216
  - spec/redd_spec.rb
280
217
  - spec/spec_helper.rb
281
218
  has_rdoc:
data/.yardopts DELETED
@@ -1 +0,0 @@
1
- --private
data/lib/redd/base.rb DELETED
@@ -1,56 +0,0 @@
1
- require "memoizable"
2
-
3
- module Redd
4
- # A container for various models with attributes and a client.
5
- class Base
6
- include Memoizable
7
-
8
- # @!attribute [r] attributes
9
- # @return [Hash] A list of attributes returned by reddit for this object.
10
- attr_reader :attributes
11
- alias_method :to_h, :attributes
12
-
13
- # @!attribute [r] client
14
- # @return The client instance used to make requests with this object.
15
- attr_reader :client
16
-
17
- # Define and memoize the method that returns a key from the attributes
18
- # hash.
19
- #
20
- # @param [Symbol, String] attr The attribute to construct a method out of.
21
- def self.attr_reader(attr)
22
- define_attribute_method(attr)
23
- define_predicate_method(attr)
24
- end
25
-
26
- # @param method [#to_sym] An attribute of the class
27
- # @return The attribute requested
28
- def [](method)
29
- send(method.to_sym)
30
- rescue NoMethodError
31
- nil
32
- end
33
-
34
- # @param client The client to use when making requests with this object.
35
- # This is similar to reddit_session in praw.
36
- # @param [Hash] attributes
37
- def initialize(client, attributes)
38
- @client = client
39
- @attributes = attributes[:data]
40
- @attributes[:kind] = attributes[:kind]
41
- end
42
-
43
- # Create a new method with the given name that accesses the @attributes.
44
- def self.define_attribute_method(method)
45
- define_method(method) { @attributes[method] }
46
- memoize method
47
- end
48
-
49
- # Create a new method with the given name that accesses the @attributes.
50
- # @return [Boolean]
51
- def self.define_predicate_method(method)
52
- define_method(:"#{method}?") { !!@attributes[method] }
53
- memoize :"#{method}?"
54
- end
55
- end
56
- end
@@ -1,83 +0,0 @@
1
- require "redd/client/unauthenticated"
2
-
3
- module Redd
4
- module Client
5
- # The class that handles requests when authenticated using a username and
6
- # password.
7
- class Authenticated < Redd::Client::Unauthenticated
8
- require "redd/client/authenticated/account"
9
- require "redd/client/authenticated/apps"
10
- require "redd/client/authenticated/flair"
11
- require "redd/client/authenticated/gold"
12
- require "redd/client/authenticated/links_comments"
13
- require "redd/client/authenticated/live"
14
- require "redd/client/authenticated/moderation"
15
- require "redd/client/authenticated/multis"
16
- require "redd/client/authenticated/private_messages"
17
- require "redd/client/authenticated/subreddits"
18
- require "redd/client/authenticated/users"
19
- require "redd/client/authenticated/wiki"
20
-
21
- include Redd::Client::Authenticated::Account
22
- include Redd::Client::Authenticated::Apps
23
- include Redd::Client::Authenticated::Flair
24
- include Redd::Client::Authenticated::Gold
25
- include Redd::Client::Authenticated::LinksComments
26
- include Redd::Client::Authenticated::Live
27
- include Redd::Client::Authenticated::Moderation
28
- include Redd::Client::Authenticated::Multis
29
- include Redd::Client::Authenticated::PrivateMessages
30
- include Redd::Client::Authenticated::Subreddits
31
- include Redd::Client::Authenticated::Users
32
- include Redd::Client::Authenticated::Wiki
33
-
34
- # @!attribute [r] username
35
- # @return [String] The username of the logged-in user.
36
- attr_reader :username
37
-
38
- # @!attribute [r] cookie
39
- # @return [String] The cookie used to store the current session.
40
- attr_reader :cookie
41
-
42
- # @!attribute [r] modhash
43
- # @return [String] The returned modhash used when making requests.
44
- attr_reader :modhash
45
-
46
- def self.new_from_credentials(username, password, options = {})
47
- @username = username
48
- Redd::Client::Unauthenticated.new.login(username, password, options)
49
- end
50
-
51
- # Set up an authenticated connection to reddit.
52
- #
53
- # @param [String] cookie The cookie to use when sending a request.
54
- # @param [String] modhash The modhash to use when sending a request.
55
- # @param [Hash] options A hash of options to connect using.
56
- # @option options [String] :user_agent The User-Agent string to use in the
57
- # header of every request.
58
- # @option options [String] :api_endpoint The main domain to connect to, in
59
- # this case, the URL for reddit.
60
- # @option options [String] :auth_endpoint The domain to login with, in
61
- # this case, the ssl subdomain using https.
62
- def initialize(cookie, modhash, options = {})
63
- @cookie = cookie
64
- @modhash = modhash
65
-
66
- @rate_limit = options[:rate_limit] || Redd::RateLimit.new
67
- @user_agent = options[:user_agent] || "Redd/Ruby, v#{Redd::VERSION}"
68
- @api_endpoint = options[:api_endpoint] || "https://www.reddit.com/"
69
- end
70
-
71
- private
72
-
73
- # @return [Hash] The headers that are sent with every request.
74
- def headers
75
- @headers ||= {
76
- "User-Agent" => @user_agent,
77
- "Cookie" => "reddit_session=#{@cookie}",
78
- "X-Modhash" => @modhash
79
- }
80
- end
81
- end
82
- end
83
- end