diff --git a/VERSION b/VERSION index 4e379d2..bcab45a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.2 +0.0.3 diff --git a/lib/pay_request.rb b/lib/request.rb similarity index 54% rename from lib/pay_request.rb rename to lib/request.rb index 380ed00..586780d 100644 --- a/lib/pay_request.rb +++ b/lib/request.rb @@ -1,85 +1,59 @@ -require 'net/http' -require 'net/https' -require 'json' -require 'config' -require 'pay_response' +require 'abstract_request' module PaypalAdaptive - class NoDataError < Exception - end - - class PayRequest - attr_accessor :pay_key - attr_accessor :errors - attr_accessor :env - - def initialize(env = nil) - @env = env - @@config ||= PaypalAdaptive::Config.new(@env) - @@api_base_url ||= @@config.api_base_url - @@headers ||= @@config.headers - end + class PaypalRequest < PaypalAdaptive::AbstractRequest def validate #TODO the receiverList field not validating properly - + # @@schema_filepath = "../lib/pay_request_schema.json" # @@schema = File.open(@@schema_filepath, "rb"){|f| JSON.parse(f.read)} # see page 42 of PP Adaptive Payments PDF for explanation of all fields. #JSON::Schema.validate(@data, @@schema) end - + def pay(data) raise NoDataError unless data - - call_api(data, "/AdaptivePayments/Pay") + + response_data = call_api(data, "/AdaptivePayments/Pay") + PaypalAdaptive::PayResponse.new(response_data, @env) end - + def payment_details(data) raise NoDataError unless data - + call_api(data, "/AdaptivePayments/PaymentDetails") end def preapproval(data) raise NoDataError unless data - + call_api(data, "/AdaptivePayments/Preapproval") end def preapproval_details(data) raise NoDataError unless data - + call_api(data, "/AdaptivePayments/PreapprovalDetails") end def cancel_preapproval(data) raise NoDataError unless data - + call_api(data, "/AdaptivePayments/CancelPreapproval") end def convert_currency(data) raise NoDataError unless data - + call_api(data, "/AdaptivePayments/ConvertCurrency") end def refund(data) raise NoDataError unless data - + call_api(data, "/AdaptivePayments/Refund") - end - - def call_api(data, path) - #hack fix: JSON.unparse doesn't work in Rails 2.3.5; only {}.to_json does.. - api_request_data = JSON.unparse(data) rescue data.to_json - url = URI.parse @@api_base_url - http = Net::HTTP.new(url.host, 443) - http.use_ssl = (url.scheme == 'https') - - resp, response_data = http.post(path, api_request_data, @@headers) - pp_response = PaypalAdaptive::PayResponse.new(response_data, @env) - end + end end + end \ No newline at end of file diff --git a/lib/pay_response.rb b/lib/response.rb similarity index 87% rename from lib/pay_response.rb rename to lib/response.rb index 3489432..86ab801 100644 --- a/lib/pay_response.rb +++ b/lib/response.rb @@ -1,12 +1,10 @@ -require 'json' - module PaypalAdaptive - class PayResponse + class Response def initialize(response, env=nil) @@config ||= PaypalAdaptive::Config.new(env) @@paypal_base_url ||= @@config.paypal_base_url - @json_response = JSON.parse(response) + @json_response = response end def success? diff --git a/test/payment_details_test.rb b/test/payment_details_test.rb new file mode 100644 index 0000000..e69de29