Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
module ActionSprout::Facebook
  class BadResponse < Response
    def self.from_response(response)
      self.new response.http_status, response.parsed_response, response.headers, response.graph
    end

    def message
      error_val 'message'
    end

    def fb_code
      error_val 'code'
    end

    def fb_subcode
      error_val 'error_subcode'
    end

    def type
      error_val 'type'
    end

    def authentication_error?
      AUTHENTICATION_ERROR_CODES.include? fb_code
    end

    def transient?
      error_val 'is_transient'
    end

    # I've seen error code 1 as either:
    #
    # * An unknown error occurred
    # * Please reduce the amount of data you're asking for, then retry your request
    def unknown?
      fb_code == 1
    end

    def page_migrated?
      fb_code == 21
    end

    def not_found?
      if fb_code == 100
        fb_subcode == 33 || message == "Unsupported post request."
      else
        fb_code == 803
      end
    end

    def invalid_opengraph?
      fb_code == 100 && message == "Invalid parameter"
    end

    private

    AUTHENTICATION_ERROR_CODES = [102, 190, 450, 452, 2500]

    def error_val(key)
      parsed_response.dig 'error', key
    end
  end
end