Sha256: 8db1cd191995631a41a04d50e16fe52686b2a3b387e80dccc795c2f56b79b849

Contents?: true

Size: 1.53 KB

Versions: 4

Compression:

Stored size: 1.53 KB

Contents

# typed: strict
# frozen_string_literal: true

require_relative "responses/message_data_response"
require_relative "responses/phone_number_data_response"
require_relative "responses/phone_numbers_data_response"
require_relative "responses/read_message_data_response"
require_relative "responses/message_error_response"
require_relative "responses/business_profile_data_response"

module WhatsappSdk
  module Api
    class Response
      extend T::Sig

      sig { returns(T.nilable(Api::Responses::ErrorResponse)) }
      attr_accessor :error

      sig { returns(T.nilable(Api::Responses::DataResponse)) }
      attr_accessor :data

      sig { returns(T::Hash[T.untyped, T.untyped]) }
      attr_accessor :raw_response

      sig do
        params(
          response: T::Hash[T.untyped, T.untyped],
          data_class_type: T.class_of(Api::Responses::DataResponse),
          error_class_type: T.class_of(Api::Responses::ErrorResponse)
        ).void
      end
      def initialize(response:, data_class_type:, error_class_type: Responses::MessageErrorResponse)
        @raw_response = response
        @data = data_class_type.build_from_response(response: response)
        @error = error_class_type.build_from_response(response: response)
      end

      # @return [Boolean] Whether or not the response is successful.
      sig { returns(T::Boolean) }
      def ok?
        @error.nil?
      end

      # @return [Boolean] Whether or not the response has an error.
      sig { returns(T::Boolean) }
      def error?
        !!@error
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
whatsapp_sdk-0.12.1 lib/whatsapp_sdk/api/response.rb
whatsapp_sdk-0.12.0 lib/whatsapp_sdk/api/response.rb
whatsapp_sdk-0.11.0 lib/whatsapp_sdk/api/response.rb
whatsapp_sdk-0.10.0 lib/whatsapp_sdk/api/response.rb