Skip to content

Commit

Permalink
Marked required request parameters as required.
Browse files Browse the repository at this point in the history
  • Loading branch information
tylerhunt committed Feb 6, 2009
1 parent a9e143f commit 8560eb9
Show file tree
Hide file tree
Showing 22 changed files with 70 additions and 92 deletions.
2 changes: 1 addition & 1 deletion lib/remit.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

require 'rubygems'

gem 'relax', '0.0.6'
gem 'relax', '0.0.7'
require 'relax'

require 'remit/common'
Expand Down
2 changes: 1 addition & 1 deletion lib/remit/cancel_token.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module CancelToken
class Request < Remit::Request
action :CancelToken
parameter :token_id
parameter :token_id, :required => true
parameter :reason_text
end

Expand Down
2 changes: 1 addition & 1 deletion lib/remit/discard_results.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module DiscardResults
class Request < Remit::Request
action :DiscardResults
parameter :transaction_ids
parameter :transaction_ids, :required => true
end

class Response < Remit::Response
Expand Down
12 changes: 6 additions & 6 deletions lib/remit/fund_prepaid.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ class Request < Remit::Request
action :FundPrepaid
parameter :transaction_ids
parameter :caller_description
parameter :caller_reference
parameter :caller_token_id
parameter :charge_fee_to
parameter :funding_amount
parameter :caller_reference, :required => true
parameter :caller_token_id, :required => true
parameter :charge_fee_to, :required => true
parameter :funding_amount, :type => Remit::RequestTypes::Amount, :required => true
parameter :meta_data
parameter :prepaid_instrument_id
parameter :prepaid_instrument_id, :required => true
parameter :recipient_description
parameter :recipient_reference
parameter :sender_description
parameter :sender_reference
parameter :sender_token_id
parameter :sender_token_id, :required => true
parameter :transaction_date
end

Expand Down
2 changes: 1 addition & 1 deletion lib/remit/get_account_activity.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module GetAccountActivity
class Request < Remit::Request
action :GetAccountActivity
parameter :start_date
parameter :start_date, :required => true
parameter :end_date
parameter :max_batch_size
parameter :sort_order_by_date
Expand Down
2 changes: 1 addition & 1 deletion lib/remit/get_debt_balance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module GetDebtBalance
class Request < Remit::Request
action :GetDebtBalance
parameter :credit_instrument_id
parameter :credit_instrument_id, :required => true
end

class Response < Remit::Response
Expand Down
2 changes: 1 addition & 1 deletion lib/remit/get_payment_instruction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module GetPaymentInstruction
class Request < Remit::Request
action :GetPaymentInstruction
parameter :token_id
parameter :token_id, :required => true
end

class Response < Remit::Response
Expand Down
2 changes: 1 addition & 1 deletion lib/remit/get_prepaid_balance.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module GetPrepaidBalance
class Request < Remit::Request
action :GetPrepaidBalance
parameter :prepaid_instrument_id
parameter :prepaid_instrument_id, :required => true
end

class Response < Remit::Response
Expand Down
2 changes: 1 addition & 1 deletion lib/remit/get_token_usage.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module GetTokenUsage
class Request < Remit::Request
action :GetTokenUsage
parameter :token_id
parameter :token_id, :required => true
end

class Response < Remit::Response
Expand Down
2 changes: 1 addition & 1 deletion lib/remit/get_transaction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module GetTransaction
class Request < Remit::Request
action :GetTransaction
parameter :transaction_id
parameter :transaction_id, :required => true
end

class Response < Remit::Response
Expand Down
6 changes: 3 additions & 3 deletions lib/remit/install_payment_instruction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ module Remit
module InstallPaymentInstruction
class Request < Remit::Request
action :InstallPaymentInstruction
parameter :payment_instruction
parameter :caller_reference
parameter :payment_instruction, :required => true
parameter :caller_reference, :required => true
parameter :token_friendly_name
parameter :token_type
parameter :token_type, :required => true
parameter :payment_reason
end

Expand Down
24 changes: 7 additions & 17 deletions lib/remit/ipn_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,45 @@
require 'openssl/digest'

module Remit

##
# Encapsulates the logic for IPN request validation and attribute retrieval.
#
class IpnRequest

# Signature key name used by AmazonFPS IPNs
SIGNATURE_KEY = 'signature'

##

# +params+ should be your controllers request parameters.
#
def initialize(params, secret_key)
raise ArgumentError, "Expected the request params hash, received: #{params.inspect}" unless params.kind_of?(Hash)
@params = strip_keys_from(params, 'action', 'controller')
@supplied_signature = @params.delete(SIGNATURE_KEY)
@secret_key = secret_key
end

def valid?
return false unless @supplied_signature
generate_signature_for(@params) == @supplied_signature
end

def method_missing(method, *args) #:nodoc:
if @params.has_key?(method.to_s)
@params[method.to_s]
else
super(method, *args)
end
end


private



def generate_signature_for(params)
query = params.sort_by { |k,v| k.downcase }
digest = OpenSSL::Digest::Digest.new('sha1')
hmac = OpenSSL::HMAC.digest(digest, @secret_key, query.to_s)
encoded = Base64.encode64(hmac).chomp
end

private :generate_signature_for

def strip_keys_from(params, *ignore_keys)
parsed = params.dup
ignore_keys.each { |key| parsed.delete(key) }
parsed
end

private :strip_keys_from
end

end
12 changes: 6 additions & 6 deletions lib/remit/pay.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,21 @@ module Pay
class Request < Remit::Request
action :Pay
parameter :caller_description
parameter :caller_reference
parameter :caller_token_id
parameter :charge_fee_to
parameter :caller_reference, :required => true
parameter :caller_token_id, :required => true
parameter :charge_fee_to, :required => true
parameter :descriptor_policy, :type => Remit::RequestTypes::DescriptorPolicy
parameter :marketplace_fixed_fee, :type => Remit::RequestTypes::Amount
parameter :marketplace_variable_fee
parameter :meta_data
parameter :recipient_description
parameter :recipient_reference
parameter :recipient_token_id
parameter :recipient_token_id, :required => true
parameter :sender_description
parameter :sender_reference
parameter :sender_token_id
parameter :sender_token_id, :required => true
parameter :temporary_decline_policy, :type => Remit::RequestTypes::TemporaryDeclinePolicy
parameter :transaction_amount, :type => Remit::RequestTypes::Amount
parameter :transaction_amount, :type => Remit::RequestTypes::Amount, :required => true
parameter :transaction_date
end

Expand Down
32 changes: 11 additions & 21 deletions lib/remit/pipeline_response.rb
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
module Remit

class PipelineResponse

def initialize(uri, secret_key)
@uri = URI.parse(uri)
@secret_key = secret_key
end

##

# Returns +true+ if the response is correctly signed (awsSignature).
#
#
#--
# The unescape_value method is used here because the awsSignature value
# pulled from the request is filtered through the same method.
#++
#
def valid?
return false unless given_signature
Relax::Query.unescape_value(correct_signature) == given_signature
end

##

# Returns +true+ if the response returns a successful state.
#
def successful?
[
Remit::PipelineStatusCode::SUCCESS_ABT,
Expand All @@ -31,32 +25,28 @@ def successful?
Remit::PipelineStatusCode::SUCCESS_RECIPIENT_TOKEN_INSTALLED
].include?(request_query[:status])
end



def method_missing(method, *args) #:nodoc:
if request_query.has_key?(method.to_sym)
request_query[method.to_sym]
else
super
end
end


private



def request_query(reload = false)
@query ||= Remit::SignedQuery.parse(@uri, @secret_key, @uri.query || '')
end

private :request_query

def given_signature
request_query[:awsSignature]
end

private :given_signature

def correct_signature
Remit::SignedQuery.new(@uri.path, @secret_key, request_query).sign
end

private :correct_signature
end

end
end
14 changes: 6 additions & 8 deletions lib/remit/refund.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,24 @@ module Refund
class Request < Remit::Request
action :Refund
parameter :caller_description
parameter :caller_reference
parameter :caller_token_id
parameter :charge_fee_to
parameter :caller_reference, :required => true
parameter :caller_token_id, :required => true
parameter :charge_fee_to, :required => true
parameter :meta_data
parameter :refund_amount, :type => Remit::RequestTypes::Amount
parameter :refund_recipient_description
parameter :refund_recipient_reference
parameter :refund_sender_description
parameter :refund_sender_reference
parameter :refund_sender_token_id
parameter :refund_sender_token_id, :required => true
parameter :transaction_date
parameter :transaction_id


parameter :transaction_id, :required => true

# The RefundAmount parameter has multiple components. It is specified on the query string like
# so: RefundAmount.Amount=XXX&RefundAmount.CurrencyCode=YYY
def convert_complex_key(key, parameter)
"#{convert_key(key).to_s}.#{convert_key(parameter).to_s}"
end

end

class Response < Remit::Response
Expand Down
12 changes: 6 additions & 6 deletions lib/remit/reserve.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ module Remit
module Reserve
class Request < Remit::Request
action :Reserve
parameter :recipient_token_id
parameter :sender_token_id
parameter :caller_token_id
parameter :recipient_token_id, :required => true
parameter :sender_token_id, :required => true
parameter :caller_token_id, :required => true
parameter :sender_reference
parameter :recipient_reference
parameter :caller_reference
parameter :caller_reference, :required => true
parameter :transaction_date
parameter :transaction_amount
parameter :charge_fee_to
parameter :transaction_amount, :type => Remit::RequestTypes::Amount, :required => true
parameter :charge_fee_to, :required => true
parameter :sender_description
parameter :recipient_description
parameter :caller_description
Expand Down
2 changes: 1 addition & 1 deletion lib/remit/retry_transaction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Remit
module RetryTransaction
class Request < Remit::Request
action :RetryTransaction
parameter :original_transaction_id
parameter :original_transaction_id, :required => true
end

class Response < Remit::Response
Expand Down
4 changes: 2 additions & 2 deletions lib/remit/settle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ module Remit
module Settle
class Request < Remit::Request
action :Settle
parameter :settlement_amount
parameter :transaction_id
parameter :reserve_transaction_id, :required => true
parameter :transaction_amount, :type => Remit::RequestTypes::Amount
parameter :transaction_date
end

Expand Down
12 changes: 6 additions & 6 deletions lib/remit/settle_debt.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ module SettleDebt
class Request < Remit::Request
action :SettleDebt
parameter :caller_description
parameter :caller_reference
parameter :caller_token_id
parameter :charge_fee_to
parameter :credit_instrument_id
parameter :caller_reference, :required => true
parameter :caller_token_id, :required => true
parameter :charge_fee_to, :required => true
parameter :credit_instrument_id, :required => true
parameter :meta_data
parameter :recipient_description
parameter :recipient_reference
parameter :sender_description
parameter :sender_reference
parameter :sender_token_id
parameter :settlement_amount
parameter :sender_token_id, :required => true
parameter :settlement_amount, :type => Remit::RequestTypes::Amount, :required => true
parameter :transaction_date
end

Expand Down
4 changes: 2 additions & 2 deletions lib/remit/subscribe_for_caller_notification.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ module Remit
module SubscribeForCallerNotification
class Request < Remit::Request
action :SubscribeForCallerNotification
parameter :notification_operation_name
parameter :web_service_api_url
parameter :notification_operation_name, :required => true
parameter :web_service_api_url, :required => true
end

class Response < Remit::Response
Expand Down
Loading

0 comments on commit 8560eb9

Please sign in to comment.