Module: Redd
- Defined in:
- lib/redd.rb,
lib/redd/error.rb,
lib/redd/client.rb,
lib/redd/version.rb,
lib/redd/api_client.rb,
lib/redd/middleware.rb,
lib/redd/models/user.rb,
lib/redd/models/access.rb,
lib/redd/models/comment.rb,
lib/redd/models/listing.rb,
lib/redd/models/session.rb,
lib/redd/models/gildable.rb,
lib/redd/models/mod_mail.rb,
lib/redd/models/postable.rb,
lib/redd/models/inboxable.rb,
lib/redd/models/replyable.rb,
lib/redd/models/subreddit.rb,
lib/redd/models/wiki_page.rb,
lib/redd/utilities/stream.rb,
lib/redd/models/front_page.rb,
lib/redd/models/lazy_model.rb,
lib/redd/models/searchable.rb,
lib/redd/models/submission.rb,
lib/redd/models/basic_model.rb,
lib/redd/models/live_thread.rb,
lib/redd/models/messageable.rb,
lib/redd/models/moderatable.rb,
lib/redd/models/multireddit.rb,
lib/redd/auth_strategies/web.rb,
lib/redd/models/more_comments.rb,
lib/redd/auth_strategies/script.rb,
lib/redd/models/private_message.rb,
lib/redd/utilities/rate_limiter.rb,
lib/redd/utilities/unmarshaller.rb,
lib/redd/utilities/error_handler.rb,
lib/redd/auth_strategies/userless.rb,
lib/redd/auth_strategies/auth_strategy.rb
Overview
Redd is a simple and intuitive API wrapper.
Defined Under Namespace
Modules: AuthStrategies, Models, Utilities Classes: APIClient, APIError, AuthenticationError, BadRequest, Client, Forbidden, InsufficientScope, InvalidAccess, Middleware, NotFound, ResponseError, ServerError, TokenRetrievalError, TooManyRequests
Constant Summary collapse
- VERSION =
'0.8.8'
Class Method Summary collapse
-
.it(opts = {}) ⇒ Models::Session
Based on the arguments you provide it, it guesses the appropriate authentication strategy.
-
.url(client_id:, redirect_uri:, response_type: 'code', state: '', scope: ['identity'], duration: 'temporary') ⇒ String
Create a url to send to users for authorization.
Class Method Details
.it(opts = {}) ⇒ Models::Session
Based on the arguments you provide it, it guesses the appropriate authentication strategy. You can do this manually with:
script = Redd::AuthStrategies::Script.new(**arguments)
web = Redd::AuthStrategies::Web.new(**arguments)
userless = Redd::AuthStrategies::Userless.new(**arguments)
It then creates an APIClient with the auth strategy provided and calls authenticate on it:
client = Redd::APIClient.new(script); client.authenticate(code)
client = Redd::APIClient.new(web); client.authenticate
client = Redd::APIClient.new(userless); client.authenticate
Finally, it creates the Redd::Models::Session model, which is essentially a starting point for the user. But you can basically create any model with the client.
session = Redd::Models::Session.new(client)
user = Redd::Models::User.new(client, name: 'Mustermind')
puts user.comment_karma
If ‘auto_refresh` is `false` or if the access doesn’t have an associated ‘expires_in`, you can manually refresh the token by calling:
session.client.refresh
Also, you can swap out the client’s access any time.
new_access = { access_token: '', refresh_token: '', expires_in: 1234 }
session.client.access = Redd::Models::Access.new(script, new_access)
session.client.access = Redd::Models::Access.new(web, new_access)
session.client.access = Redd::Models::Access.new(userless, new_access)
61 62 63 64 65 |
# File 'lib/redd.rb', line 61 def it(opts = {}) api_client = script(opts) || web(opts) || userless(opts) raise "couldn't guess app type" unless api_client Models::Session.new(api_client) end |
.url(client_id:, redirect_uri:, response_type: 'code', state: '', scope: ['identity'], duration: 'temporary') ⇒ String
Create a url to send to users for authorization.
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/redd.rb', line 76 def url(client_id:, redirect_uri:, response_type: 'code', state: '', scope: ['identity'], duration: 'temporary') 'https://www.reddit.com/api/v1/authorize?' + URI.encode_www_form( client_id: client_id, redirect_uri: redirect_uri, state: state, scope: scope.join(','), response_type: response_type, duration: duration ) end |