deltavista_crif_dva_interface 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/deltavista_crif_dva_interface.rb +9 -0
- data/lib/deltavista_crif_dva_interface/config.rb +11 -0
- data/lib/deltavista_crif_dva_interface/credit_check_short_v02.rb +79 -0
- data/lib/deltavista_crif_dva_interface/delta_vista_service.rb +32 -0
- data/lib/deltavista_crif_dva_interface/restful_service.rb +58 -0
- data/lib/deltavista_crif_dva_interface/version.rb +3 -0
- metadata +73 -0
@@ -0,0 +1,9 @@
|
|
1
|
+
require "deltavista_crif_dva_interface/version"
|
2
|
+
require "deltavista_crif_dva_interface/config"
|
3
|
+
require "deltavista_crif_dva_interface/restful_service"
|
4
|
+
require "deltavista_crif_dva_interface/delta_vista_service"
|
5
|
+
require "deltavista_crif_dva_interface/credit_check_short_v02"
|
6
|
+
|
7
|
+
module DeltavistaCrifDvaInterface
|
8
|
+
# Your code goes here...
|
9
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module DeltavistaCrifDvaInterface
|
2
|
+
class CreditCheckShortV02
|
3
|
+
|
4
|
+
# XML request and response encoding
|
5
|
+
@@encoding = 'UTF-8'
|
6
|
+
# unique id for each request
|
7
|
+
@@reference_id = 1000
|
8
|
+
|
9
|
+
def initialize config
|
10
|
+
@username = config.username
|
11
|
+
@password = config.password
|
12
|
+
@request_type = "CreditCheckShort"
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_xml(address)
|
16
|
+
puts address.inspect
|
17
|
+
builder = Nokogiri::XML::Builder.new(:encoding => @@encoding) do |xml|
|
18
|
+
xml.dvaCheckRequest {
|
19
|
+
xml.identity {
|
20
|
+
xml.username @username
|
21
|
+
xml.password @password
|
22
|
+
}
|
23
|
+
xml.reference @@reference_id
|
24
|
+
xml.requestType @request_type
|
25
|
+
xml.private {
|
26
|
+
%w(title lastName firstName maidenName street house poBox zip city country phone birthDate sex).each do |key|
|
27
|
+
xml.send(key, address[key.downcase]) if address[key.downcase] && !address[key.downcase].empty?
|
28
|
+
end
|
29
|
+
}
|
30
|
+
}
|
31
|
+
end
|
32
|
+
@@reference_id += 1
|
33
|
+
builder.to_xml
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_hash(xml_body)
|
37
|
+
puts xml_body
|
38
|
+
xml_doc = Nokogiri::XML(xml_body, @@encoding)
|
39
|
+
if valid_response? xml_doc
|
40
|
+
# private tag
|
41
|
+
address = {}
|
42
|
+
xml_doc.xpath("//private").each do |private_node|
|
43
|
+
%w(title lastName firstName maidenName street house poBox zip city country phone birthDate sex score).each do |key|
|
44
|
+
if key == "country"
|
45
|
+
address[key.downcase] = convert_country(private_node.xpath(key).collect(&:text)[0])
|
46
|
+
else
|
47
|
+
address[key.downcase] = private_node.xpath(key).collect(&:text)[0]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
xml_doc.xpath("//payLoad").each do |payload_node|
|
52
|
+
%w(personStatus score decision hasDebt decisionComment).each do |key|
|
53
|
+
address[key.downcase] = payload_node.xpath(key).collect(&:text)[0]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
address
|
57
|
+
else
|
58
|
+
puts "Response not valid!"
|
59
|
+
nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def response_code(xml)
|
64
|
+
xml.xpath("//response/responseCode").collect(&:text)[0]
|
65
|
+
end
|
66
|
+
|
67
|
+
def valid_response?(xml)
|
68
|
+
response_code(xml) == '0' ? true : false
|
69
|
+
end
|
70
|
+
|
71
|
+
def convert_country(alpha3_code)
|
72
|
+
#SunDawg::CountryIsoTranslater.translate_standard(alpha3_code, "alpha3", "alpha2")
|
73
|
+
alpha3_code
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module DeltavistaCrifDvaInterface
|
4
|
+
class DeltaVistaService < RestfulService
|
5
|
+
|
6
|
+
def initialize config
|
7
|
+
@url = config.deltavista_service_url
|
8
|
+
@parser = CreditCheckShortV02.new config
|
9
|
+
end
|
10
|
+
|
11
|
+
# Takes an address object and sends it as XML to the DeltaVista-Interface.
|
12
|
+
# The XML-Response will be converted back into an address object and returned.
|
13
|
+
# If no address is available the method returns nil.
|
14
|
+
#
|
15
|
+
# If the Service is not available a StandardError will be thrown.
|
16
|
+
def credit_check(address)
|
17
|
+
puts "Credit Check"
|
18
|
+
puts address.inspect
|
19
|
+
request_body = @parser.to_xml(address)
|
20
|
+
puts request_body
|
21
|
+
headers = {'Content-Type' => 'text/xml'}
|
22
|
+
post_http_request(@url, request_body, headers) do |data|
|
23
|
+
extract_address data
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def extract_address(xml_body)
|
28
|
+
address = @parser.to_hash(xml_body)
|
29
|
+
puts address.inspect
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'net/https'
|
3
|
+
|
4
|
+
module DeltavistaCrifDvaInterface
|
5
|
+
class RestfulService
|
6
|
+
|
7
|
+
def get_http_response(url_string)
|
8
|
+
resp, data = Net::HTTP.get_response(to_url(url_string))
|
9
|
+
##Impac::Logger.log.debug "GET Response: #{resp.inspect}\n #{data.inspect}"
|
10
|
+
check_response! resp
|
11
|
+
yield data
|
12
|
+
end
|
13
|
+
|
14
|
+
def post_http_request(url_string, data, headers = nil)
|
15
|
+
url = to_url url_string
|
16
|
+
http = create_http_request url
|
17
|
+
resp, body = http.post(url.path, data, headers)
|
18
|
+
##Impac::Logger.log.debug "POST Response: #{resp.inspect}\n #{body.inspect}"
|
19
|
+
check_response! resp
|
20
|
+
yield body
|
21
|
+
end
|
22
|
+
|
23
|
+
def put_http_request(url_string, data, headers = nil)
|
24
|
+
url = to_url url_string
|
25
|
+
http = create_http_request url
|
26
|
+
resp, body = http.put(url.path, data, headers)
|
27
|
+
check_response! resp
|
28
|
+
yield body
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_url(url_string)
|
32
|
+
#Impac::Logger.log.debug "Request URL: #{url_string}"
|
33
|
+
URI.parse(url_string)
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_http_request(url)
|
37
|
+
http = Net::HTTP.new(url.host, url.port)
|
38
|
+
if url.scheme == 'https'
|
39
|
+
#Impac::Logger.log.debug "Use SSL for request"
|
40
|
+
http.use_ssl = true
|
41
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
42
|
+
end
|
43
|
+
return http
|
44
|
+
end
|
45
|
+
|
46
|
+
def check_response!(response)
|
47
|
+
unless valid_response? response
|
48
|
+
raise NotFoundError if response.class == Net::HTTPNotFound
|
49
|
+
raise ServiceNotAvailableError
|
50
|
+
end
|
51
|
+
return response
|
52
|
+
end
|
53
|
+
|
54
|
+
def valid_response?(response)
|
55
|
+
response.class == Net::HTTPOK ? true : false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
metadata
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: deltavista_crif_dva_interface
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Marc Cadalbert
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-05 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &2153719360 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2153719360
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: nokogiri
|
27
|
+
requirement: &2153718940 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2153718940
|
36
|
+
description: Deltavista Crif DVA Interface
|
37
|
+
email:
|
38
|
+
- mc@impac.ch
|
39
|
+
executables: []
|
40
|
+
extensions: []
|
41
|
+
extra_rdoc_files: []
|
42
|
+
files:
|
43
|
+
- lib/deltavista_crif_dva_interface/config.rb
|
44
|
+
- lib/deltavista_crif_dva_interface/credit_check_short_v02.rb
|
45
|
+
- lib/deltavista_crif_dva_interface/delta_vista_service.rb
|
46
|
+
- lib/deltavista_crif_dva_interface/restful_service.rb
|
47
|
+
- lib/deltavista_crif_dva_interface/version.rb
|
48
|
+
- lib/deltavista_crif_dva_interface.rb
|
49
|
+
homepage: ''
|
50
|
+
licenses: []
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
requirements: []
|
68
|
+
rubyforge_project: deltavista_crif_dva_interface
|
69
|
+
rubygems_version: 1.8.17
|
70
|
+
signing_key:
|
71
|
+
specification_version: 3
|
72
|
+
summary: Deltavista Crif DVA Interface
|
73
|
+
test_files: []
|