Sha256: 7b5ba9051f24d743e785c0794b4c49b14632b51427978c5bb9c7a214368791d4

Contents?: true

Size: 1.58 KB

Versions: 4

Compression:

Stored size: 1.58 KB

Contents

module CandyCheck
  module AppStore
    # Verifies a latest_receipt_info block against a verification server.
    # The call return either an {ReceiptCollection} or a {VerificationFailure}
    class SubscriptionVerification < CandyCheck::AppStore::Verification
      # Builds a fresh verification run
      # @param endpoint_url [String] the verification URL to use
      # @param receipt_data [String] the raw data to be verified
      # @param secret [String] optional: shared secret
      # @param product_ids [Array<String>] optional: select specific products
      def initialize(
        endpoint_url,
        receipt_data,
        secret = nil,
        product_ids = nil
      )
        super(endpoint_url, receipt_data, secret)
        @product_ids = product_ids
      end

      # Performs the verification against the remote server
      # @return [ReceiptCollection] if successful
      # @return [VerificationFailure] otherwise
      def call!
        verify!
        if valid?
          build_collection(@response['latest_receipt_info'])
        else
          VerificationFailure.fetch(@response['status'])
        end
      end

      private

      def build_collection(latest_receipt_info)
        unless @product_ids.nil?
          latest_receipt_info = latest_receipt_info.select do |info|
            @product_ids.include?(info['product_id'])
          end
        end
        ReceiptCollection.new(latest_receipt_info)
      end

      def valid?
        status_is_ok = @response['status'] == STATUS_OK
        @response && status_is_ok && @response['latest_receipt_info']
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
candy_check-0.5.0 lib/candy_check/app_store/subscription_verification.rb
candy_check-0.4.0 lib/candy_check/app_store/subscription_verification.rb
candy_check-0.3.0 lib/candy_check/app_store/subscription_verification.rb
candy_check-0.2.1 lib/candy_check/app_store/subscription_verification.rb