Sha256: 57541ad4dc2a63029609fb2e2b3450fbb73f9ddf5532eb96aa2667408ecb9111

Contents?: true

Size: 1.2 KB

Versions: 7

Compression:

Stored size: 1.2 KB

Contents

=begin
{{> api_info}}
=end

require 'openssl'

module Dropbox
end

module Dropbox::Sign
  class EventCallbackHelper
    EVENT_TYPE_ACCOUNT_CALLBACK = "account_callback"

    EVENT_TYPE_APP_CALLBACK = "app_callback"

    # Verify that a callback came from HelloSign.com
    #
    # @param [String] api_key
    # @param [EventCallbackRequest] event_callback
    # @return bool
    def self.is_valid(api_key, event_callback)
      hash = OpenSSL::HMAC.hexdigest(
        "SHA256",
        api_key,
        "#{event_callback.event.event_time}#{event_callback.event.event_type}",
      )

      return event_callback.event.event_hash === hash
    end

    # Identifies the callback type, one of "account_callback" or "app_callback".
    # "app_callback" will always include a value for "reported_for_app_id"
    #
    # @param [EventCallbackRequest] event_callback
    # @return string
    def self.get_callback_type(event_callback)
      metadata = event_callback.event.event_metadata || EventCallbackRequestEventMetadata.new

      if metadata.nil? || metadata.reported_for_app_id.nil? || metadata.reported_for_app_id.empty?
        return EVENT_TYPE_ACCOUNT_CALLBACK
      end

      return EVENT_TYPE_APP_CALLBACK
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dropbox-sign-1.8.0 templates/dropbox-event_callback_helper.mustache
dropbox-sign-1.7.0 templates/dropbox-event_callback_helper.mustache
dropbox-sign-1.6.1 templates/dropbox-event_callback_helper.mustache
dropbox-sign-1.6.0 templates/event_callback_helper.mustache
dropbox-sign-1.5.0 templates/event_callback_helper.mustache
dropbox-sign-1.4.1 templates/event_callback_helper.mustache
dropbox-sign-1.4.0 templates/event_callback_helper.mustache