Sha256: 30ed453d7a3624e014a660dd3bccbecafc1496b703d6aac8ab2446a8394ca9b9
Contents?: true
Size: 1.95 KB
Versions: 1
Compression:
Stored size: 1.95 KB
Contents
module Pushcart module Requestable extend ActiveSupport::Concern def request_subscription request(:subscription) end def request_renewal update_columns( renewal_requested_at: nil, renewal_request_responded_at: nil, renewal_request_response_code: nil, renewal_request_response_error: nil, renewal_denied_at: nil, renewal_denial_reason: nil, renewal_challenged_at: nil, renewal_verified_at: nil, ) request(:renewal) end def request_unsubscription request(:unsubscription) end def request(type) modes = { subscription: "subscribe", renewal: "subscribe", unsubscription: "unsubscribe" } mode = mode[type] prefix = types.to_s # Subscriber Sends Subscription Request update_attribute(:"#{prefix}_requested_at", Time.now) response = connection(mode: mode).post(hub) # Subscription Response Details update_attribute(:"#{prefix}_request_responded_at", Time.now) update_attribute(:"#{prefix}_request_response_code", response.status) (response.status == 202) ? _accepted(response) : _rejected(response) end # If the request was accepted, trigger the +receive+ event on the state # machine (which will transition to different states depending on whether # this is a subscribe, renew, or unsubscribe request). def _accepted(response) receive! end # If the request was not accepted for any reason (rejected by the hub, or # the response returned any status other than 202), trigger the +reject+ # event. This will move the subscription to a `rejected` state regardless # of what kind of request was made. # TODO Make sure unsub. rejections are being handled correctly. def _rejected(response) update_attribute(:"#{prefix}_request_response_error", request_response.body) reject! end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pushcart-0.0.1.proto1 | lib/pushcart/requestable.rb |