Add a static helper method to the Gateway class to DRY up some code.
Version bump.
Remove unneeded empty module decl.
Rename spec to match source file (otherwise guard won't automatically rerun tests when the source file changes).
Change to call set_request on any param value that is an object responding to this method.
Dramatically reduce complexity and repeated code in batch_operations.rb by utilizing the Gateway.send_request static method.
Change to allow passing in a key/value named :discretionary_data and correctly setting it as the discretionary data. Includes unit test.
Reduce cyclomatic complexity of the CheckTransaction class.
Modifies set_params to attempt to fetch parameters from the passed in params argument via #send if the argument is not a Hash
Reduce complexity in CreditCard#set_request_data by using new params#send syntax.
Remove "multi_value_response_fields" as happy-path parameter. It's only used a few times, so make the record parsing code a method on the response object. Allow parameter validation if it's in Fields, if it's nil (it's caught in set_param), or if it responds to #set_request. Remove the "response_code" property -- it was only used in tests and was just a shim around #get_response.
Return raw response object from Gateway.send_request
Remove set_request_data from CreditCard. Refactor Transaction to account for this.
Remove stupid unused special case.
Remove unneeded construct; just send the request directly.
Get rid of method only used once.
Customers are no longer intended to be instantiated; all methods are now class methods.
EmailReceiptRequest are no longer intended to be instantiated; all methods are now class methods.
RecurringTransactions are no longer intended to be instantiated; all methods are now class methods.
Transaction.export and attach_signature now use Gateway helpers instead of roll-your-own request/response processing.