deltavista_crif_dva_interface 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|