class Exponent::Push::ResponseHandler
Attributes
errors[R]
invalid_push_tokens[R]
receipt_ids[R]
response[R]
Public Class Methods
new(error_builder = ErrorBuilder.new)
click to toggle source
# File lib/exponent-server-sdk.rb, line 114 def initialize(error_builder = ErrorBuilder.new) @error_builder = error_builder @response = nil @receipt_ids = [] @invalid_push_tokens = [] @errors = [] end
Public Instance Methods
errors?()
click to toggle source
# File lib/exponent-server-sdk.rb, line 133 def errors? @errors.any? end
handle(response)
click to toggle source
@deprecated
# File lib/exponent-server-sdk.rb, line 138 def handle(response) warn '[DEPRECATION] `handle` is deprecated. Please use `process_response` instead.' @response = response case response.code.to_s when /(^4|^5)/ raise build_error_from_failure else extract_data end end
process_response(response)
click to toggle source
# File lib/exponent-server-sdk.rb, line 122 def process_response(response) @response = response case response.code.to_s when /(^4|^5)/ raise @error_builder.parse_response(response) else sort_results end end
Private Instance Methods
body()
click to toggle source
# File lib/exponent-server-sdk.rb, line 190 def body # memoization FTW! @body ||= JSON.parse(@response.body) rescue SyntaxError # Sometimes the server returns an empty string. # It must be escaped before we can process it. @body = JSON.parse(@response.body.to_json) rescue StandardError # Prevent nil errors in old version of ruby when using fetch @body = {} end
build_error_from_failure()
click to toggle source
@deprecated
# File lib/exponent-server-sdk.rb, line 205 def build_error_from_failure @error_builder.build_from_erroneous(body) end
build_error_from_success(response)
click to toggle source
@deprecated
# File lib/exponent-server-sdk.rb, line 231 def build_error_from_success(response) @error_builder.build_from_successful(response) end
extract_data()
click to toggle source
@deprecated
# File lib/exponent-server-sdk.rb, line 210 def extract_data data = body.fetch('data') if data.is_a? Hash validate_status(data.fetch('status'), body) data elsif data.is_a? Array data.map do |receipt| validate_status(receipt.fetch('status'), body) receipt end else {} end end
process_error(push_ticket)
click to toggle source
# File lib/exponent-server-sdk.rb, line 180 def process_error(push_ticket) message = push_ticket.fetch('message') matches = message.match(/ExponentPushToken\[(...*)\]/) error_class = @error_builder.parse_push_ticket(push_ticket) @invalid_push_tokens.push(matches[0]) unless matches.nil? @errors.push(error_class) unless @errors.include?(error_class) end
process_receipts(receipts)
click to toggle source
# File lib/exponent-server-sdk.rb, line 173 def process_receipts(receipts) receipts.each do |receipt_id, receipt| @receipt_ids.push(receipt_id) unless receipt_id.nil? process_error(receipt) unless receipt.fetch('status') == 'ok' end end
sort_results()
click to toggle source
# File lib/exponent-server-sdk.rb, line 151 def sort_results data = body&.fetch('data', nil) || nil # something is definitely wrong return if data.nil? # Array indicates a response from the /send endpoint # Hash indicates a response from the /getReceipts endpoint if data.is_a? Array data.each do |push_ticket| receipt_id = push_ticket.fetch('id', nil) if push_ticket.fetch('status', nil) == 'ok' @receipt_ids.push(receipt_id) unless receipt_id.nil? else process_error(push_ticket) end end else process_receipts(data) end end
validate_status(status, response)
click to toggle source
@deprecated
# File lib/exponent-server-sdk.rb, line 226 def validate_status(status, response) raise build_error_from_success(response) unless status == 'ok' end