class FaradayMiddleware::Reddit::Modhash
Middleware that keeps track of and sets modhash-related HTTP headers.
Reddit
uses modhashes as a form of XSS protection and requires them for most POST and PUT requests. Modhashes are currently provided in response to listing GET requests.
Public Class Methods
new(app, options = nil)
click to toggle source
Calls superclass method
# File lib/faraday_middleware/reddit/use/modhash.rb, line 15 def initialize(app, options = nil) super(app) @options = options || {} @modhash = @options[:modhash] end
Public Instance Methods
call(env)
click to toggle source
# File lib/faraday_middleware/reddit/use/modhash.rb, line 21 def call(env) # Modhash unnecessary when using OAuth. return @app.call(env) if env[:request_headers]['Authorization'] @modhash = env[:modhash] if env[:modhash] env[:request_headers]['X-Modhash'] = @modhash if @modhash @app.call(env).on_complete do |response_env| update_modhash(response_env) end end
update_modhash(env)
click to toggle source
# File lib/faraday_middleware/reddit/use/modhash.rb, line 32 def update_modhash(env) modhash = extract_modhash(env) @modhash = modhash if modhash rescue JSON::JSONError # Ignore -- modhash can be acquired lazily. end