lib/mangopay/api/service/cards.rb in mangopay-v4-4.0.0 vs lib/mangopay/api/service/cards.rb in mangopay-v4-4.0.1

- old
+ new

@@ -1,152 +1,152 @@ -require_relative '../uri_provider' -require_relative '../../model/request/complete_registration_request' -require_relative '../../model/request/deactivation_request' - -module MangoApi - - # Provides API method delegates concerning the +Card+ entity - module Cards - class << self - include UriProvider - - # Creates a new card registration entity. - # - # +CardRegistration+ properties: - # * Required - # * user_id - # * currency - # * Optional - # * tag - # * card_type - # - # @param +card_registration+ [CardRegistration] model object of - # card registration to be created - # @param +id_key+ [String] idempotency key for future response replication - # @return [CardRegistration] the newly-created CardRegistration entity - # object - def create_registration(card_registration, id_key = nil) - uri = provide_uri(:create_card_registration) - response = HttpClient.post(uri, card_registration, id_key) - parse_registration response - end - - # Allows completion of a card registration with the registration - # data received from the Tokenization Server. - # - # @param +registration_data+ [String] registration data from the - # Tokenization Server - # @return [CardRegistration] the completed CardRegistration entity - # object - def complete_registration(id, registration_data) - uri = provide_uri(:complete_card_registration, id) - request = CompleteRegistrationRequest.new(registration_data) - response = HttpClient.put(uri, request) - parse_registration response - end - - # Retrieves a card registration entity. - # - # @param +id+ [String] ID of the card registration to retrieve - # @return [CardRegistration] the requested entity object - def get_registration(id) - uri = provide_uri(:get_card_registration, id) - response = HttpClient.get(uri) - parse_registration response - end - - # Retrieves a card entity. - # - # @param +id+ [String] ID of the card entity to retrieve - # @return [Card] the requested Card entity object - def get(id) - uri = provide_uri(:get_card, id) - response = HttpClient.get(uri) - parse_card response - end - - # Retrieves pages of a user's card entities. - # Allows configuration of paging and sorting parameters - # by yielding a filtering object to a provided block. When - # no filters are specified, will retrieve the - # first page of 10 newest results. - # - # Allowed +FilterRequest+ params: - # * page - # * per_page - # * sort_field and sort_direction - # - # @param +id+ [String] ID of the user whose cards to retrieve - # @return [Array] array of hashed card entities corresponding - # to provided filters - def of_user(id) - uri = provide_uri(:get_users_cards, id) - filter_request = nil - yield filter_request = FilterRequest.new if block_given? - results = HttpClient.get(uri, filter_request) - parse_cards results - end - - # Retrieves pages of card entities corresponding to a - # certain fingerprint. The Fingerprint is a unique - # hash key uniquely generated per 16-digit card number. - # - # Allowed +FilterRequest+ params: - # * page - # * per_page - # * sort_field and sort_direction - # - # @param +fingerprint+ [String] uniquely hashed card number - # which to search for - # @return [Array] array of hashed card entities corresponding - # to provided filters - def with_fingerprint(fingerprint) - uri = provide_uri(:get_cards_by_fingerprint, fingerprint) - filter_request = nil - yield filter_request = FilterRequest.new if block_given? - results = HttpClient.get(uri, filter_request) - parse_cards results - end - - # Deactivates the card entity specified by an id. - # - # @param +id+ [String] ID of the card to deactivate - # @return [Card] the deactivated card entity object - def deactivate(id) - uri = provide_uri(:deactivate_card, id) - response = HttpClient.put(uri, DeactivationRequest.new) - parse_card response - end - - private - - # Parses a JSON-originating hash into the corresponding - # CardRegistration entity object. - # - # @param +response+ [Hash] JSON-originating data hash - # @return [CardRegistration] corresponding CardRegistration entity object - def parse_registration(response) - MangoModel::CardRegistration.new.dejsonify response - end - - # Parses a JSON-originating hash into the corresponding - # Card entity object. - # - # @param +response+ [Hash] JSON-originating data hash - # @return [Card] corresponding Card entity object - def parse_card(response) - MangoModel::Card.new.dejsonify response - end - - # Parses an array of JSON-originating hashes into the corresponding - # Card entity objects. - # - # @param +results+ [Array] JSON-originating data hashes - # @return [Array] parsed Card entity objects - def parse_cards(results) - results.collect do |entity| - parse_card entity - end - end - end - end +require_relative '../uri_provider' +require_relative '../../model/request/complete_registration_request' +require_relative '../../model/request/deactivation_request' + +module MangoApi + + # Provides API method delegates concerning the +Card+ entity + module Cards + class << self + include UriProvider + + # Creates a new card registration entity. + # + # +CardRegistration+ properties: + # * Required + # * user_id + # * currency + # * Optional + # * tag + # * card_type + # + # @param +card_registration+ [CardRegistration] model object of + # card registration to be created + # @param +id_key+ [String] idempotency key for future response replication + # @return [CardRegistration] the newly-created CardRegistration entity + # object + def create_registration(card_registration, id_key = nil) + uri = provide_uri(:create_card_registration) + response = HttpClient.post(uri, card_registration, id_key) + parse_registration response + end + + # Allows completion of a card registration with the registration + # data received from the Tokenization Server. + # + # @param +registration_data+ [String] registration data from the + # Tokenization Server + # @return [CardRegistration] the completed CardRegistration entity + # object + def complete_registration(id, registration_data) + uri = provide_uri(:complete_card_registration, id) + request = CompleteRegistrationRequest.new(registration_data) + response = HttpClient.put(uri, request) + parse_registration response + end + + # Retrieves a card registration entity. + # + # @param +id+ [String] ID of the card registration to retrieve + # @return [CardRegistration] the requested entity object + def get_registration(id) + uri = provide_uri(:get_card_registration, id) + response = HttpClient.get(uri) + parse_registration response + end + + # Retrieves a card entity. + # + # @param +id+ [String] ID of the card entity to retrieve + # @return [Card] the requested Card entity object + def get(id) + uri = provide_uri(:get_card, id) + response = HttpClient.get(uri) + parse_card response + end + + # Retrieves pages of a user's card entities. + # Allows configuration of paging and sorting parameters + # by yielding a filtering object to a provided block. When + # no filters are specified, will retrieve the + # first page of 10 newest results. + # + # Allowed +FilterRequest+ params: + # * page + # * per_page + # * sort_field and sort_direction + # + # @param +id+ [String] ID of the user whose cards to retrieve + # @return [Array] array of hashed card entities corresponding + # to provided filters + def of_user(id) + uri = provide_uri(:get_users_cards, id) + filter_request = nil + yield filter_request = FilterRequest.new if block_given? + results = HttpClient.get(uri, filter_request) + parse_cards results + end + + # Retrieves pages of card entities corresponding to a + # certain fingerprint. The Fingerprint is a unique + # hash key uniquely generated per 16-digit card number. + # + # Allowed +FilterRequest+ params: + # * page + # * per_page + # * sort_field and sort_direction + # + # @param +fingerprint+ [String] uniquely hashed card number + # which to search for + # @return [Array] array of hashed card entities corresponding + # to provided filters + def with_fingerprint(fingerprint) + uri = provide_uri(:get_cards_by_fingerprint, fingerprint) + filter_request = nil + yield filter_request = FilterRequest.new if block_given? + results = HttpClient.get(uri, filter_request) + parse_cards results + end + + # Deactivates the card entity specified by an id. + # + # @param +id+ [String] ID of the card to deactivate + # @return [Card] the deactivated card entity object + def deactivate(id) + uri = provide_uri(:deactivate_card, id) + response = HttpClient.put(uri, DeactivationRequest.new) + parse_card response + end + + private + + # Parses a JSON-originating hash into the corresponding + # CardRegistration entity object. + # + # @param +response+ [Hash] JSON-originating data hash + # @return [CardRegistration] corresponding CardRegistration entity object + def parse_registration(response) + MangoModel::CardRegistration.new.dejsonify response + end + + # Parses a JSON-originating hash into the corresponding + # Card entity object. + # + # @param +response+ [Hash] JSON-originating data hash + # @return [Card] corresponding Card entity object + def parse_card(response) + MangoModel::Card.new.dejsonify response + end + + # Parses an array of JSON-originating hashes into the corresponding + # Card entity objects. + # + # @param +results+ [Array] JSON-originating data hashes + # @return [Array] parsed Card entity objects + def parse_cards(results) + results.collect do |entity| + parse_card entity + end + end + end + end end \ No newline at end of file