deltavista_crif_dva_interface 0.0.12 → 0.0.13

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.
@@ -2,6 +2,7 @@ require "country_iso_translater"
2
2
 
3
3
  require "deltavista_crif_dva_interface/version"
4
4
  require "deltavista_crif_dva_interface/config"
5
+ require "deltavista_crif_dva_interface/errors"
5
6
  require "deltavista_crif_dva_interface/restful_service"
6
7
  require "deltavista_crif_dva_interface/delta_vista_service"
7
8
  require "deltavista_crif_dva_interface/xml_converter"
@@ -1,27 +1,34 @@
1
1
  module DeltavistaCrifDvaInterface
2
2
  class AddressUpdate < XmlConverter
3
+ DEFAULT_OPTIONS = {
4
+ :encoding => 'UTF-8',
5
+ :request_type => 'AddressUpdate'
6
+ }.freeze
3
7
 
4
- # XML request and response encoding
5
- @@encoding = 'UTF-8'
6
8
  # unique id for each request
7
9
  @@reference_id = 1000
8
10
 
9
- def initialize config
10
- @username = config.username
11
- @password = config.password
12
- @request_type = "AddressUpdate"
11
+ def initialize(options)
12
+ @config = {}
13
+ if options.is_a? Hash
14
+ @config = DEFAULT_OPTIONS.merge(options)
15
+ else
16
+ @config[:username] = options.username
17
+ @config[:password] = options.password
18
+ @config = DEFAULT_OPTIONS.merge(@config)
19
+ end
13
20
  end
14
21
 
15
22
  def to_xml(address)
16
23
  puts address.inspect
17
- builder = Nokogiri::XML::Builder.new(:encoding => @@encoding) do |xml|
24
+ builder = Nokogiri::XML::Builder.new(:encoding => @config[:encoding]) do |xml|
18
25
  xml.dvaCheckRequest {
19
26
  xml.identity {
20
- xml.username @username
21
- xml.password @password
27
+ xml.username @config[:username]
28
+ xml.password @config[:password]
22
29
  }
23
30
  xml.reference @@reference_id
24
- xml.requestType @request_type
31
+ xml.requestType @config[:request_type]
25
32
  xml.private {
26
33
  %w(title lastName firstName maidenName street house poBox zip city country phone birthDate sex).each do |key|
27
34
  value = to_string(address[key.downcase])
@@ -35,52 +42,58 @@ module DeltavistaCrifDvaInterface
35
42
  end
36
43
 
37
44
  def to_hash(xml_body)
38
- puts xml_body
39
- xml_doc = Nokogiri::XML(xml_body, @@encoding)
45
+ xml_doc = Nokogiri.XML(xml_body, nil, @config[:encoding])
40
46
  if valid_response? xml_doc
41
- # private tag
42
47
  address = {}
48
+ metadata = {}
43
49
  xml_doc.xpath("//private").each do |private_node|
44
- %w(addressId birthDate sex).each do |key|
45
- address[key.downcase] = get_value(private_node, key)
50
+ %w(addressId birthDate sex title lastName firstName maidenName street house poBox zip city country phone).each do |key|
51
+ if key == "country"
52
+ address[key.downcase.to_sym] = convert_country(get_value(private_node, key))
53
+ else
54
+ address[key.downcase.to_sym] = get_value(private_node, key)
55
+ end
46
56
  end
47
57
  end
48
58
 
49
59
  xml_doc.xpath("//private/payLoad/highestAddress/private").each do |private_node|
50
60
  %w(title lastName firstName maidenName street house poBox zip city country phone).each do |key|
51
61
  if key == "country"
52
- address[key.downcase] = convert_country(get_value(private_node, key))
62
+ address[key.downcase.to_sym] = convert_country(get_value(private_node, key))
53
63
  else
54
- address[key.downcase] = get_value(private_node, key)
64
+ address[key.downcase.to_sym] = get_value(private_node, key)
55
65
  end
56
66
  end
57
67
  end
58
68
 
59
69
  xml_doc.xpath("//private/payLoad").each do |payload_node|
60
70
  %w(matchLevel isDeceased dateOfDeath reqDeliverabilityClass higherDelivKnown).each do |key|
61
- address[key.downcase] = get_value(payload_node, key)
71
+ metadata[key.downcase.to_sym] = get_value(payload_node, key)
62
72
  end
63
73
  end
64
74
 
65
75
  xml_doc.xpath("//private/payLoad/highestAddress").each do |highestaddress_node|
66
76
  %w(deliverabilityClass).each do |key|
67
- address[key.downcase] = get_value(highestaddress_node, key)
77
+ metadata[key.downcase.to_sym] = get_value(highestaddress_node, key)
68
78
  end
69
79
  end
70
80
 
71
- address
81
+ [address, metadata]
72
82
  else
73
- puts "Response not valid!"
74
- nil
83
+ raise NotFoundError
75
84
  end
76
85
  end
77
86
 
78
- def response_code(xml)
79
- xml.xpath("//response/responseCode").collect(&:text)[0]
87
+ def match_level(xml)
88
+ get_value(xml, "//private/payLoad/matchLevel")
89
+ end
90
+
91
+ def higher_delivery_known(xml)
92
+ get_value(xml, "//private/payLoad/higherDelivKnown")
80
93
  end
81
94
 
82
- def valid_response?(xml)
83
- response_code(xml) == '0' ? true : false
95
+ def newer_address_found?(xml)
96
+ higher_delivery_known(xml) != '0.0' ? true : false
84
97
  end
85
98
  end
86
99
  end
@@ -35,7 +35,7 @@ module DeltavistaCrifDvaInterface
35
35
 
36
36
  def to_hash(xml_body)
37
37
  puts xml_body
38
- xml_doc = Nokogiri::XML(xml_body, @@encoding)
38
+ xml_doc = Nokogiri.XML(xml_body, nil, @@encoding)
39
39
  if valid_response? xml_doc
40
40
  # private tag
41
41
  address = {}
@@ -32,8 +32,9 @@ module DeltavistaCrifDvaInterface
32
32
  end
33
33
 
34
34
  def extract_response(xml_body)
35
- address = @parser.to_hash(xml_body)
36
- address
35
+ puts "XML-Body #{xml_body.class}"
36
+ puts xml_body
37
+ @parser.to_hash(xml_body)
37
38
  end
38
39
  end
39
40
  end
@@ -0,0 +1,9 @@
1
+ module DeltavistaCrifDvaInterface
2
+ class ServiceNotAvailableError < StandardError
3
+
4
+ end
5
+
6
+ class NotFoundError < StandardError
7
+
8
+ end
9
+ end
@@ -40,7 +40,7 @@ module DeltavistaCrifDvaInterface
40
40
  http.use_ssl = true
41
41
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
42
42
  end
43
- return http
43
+ http
44
44
  end
45
45
 
46
46
  def check_response!(response)
@@ -48,7 +48,7 @@ module DeltavistaCrifDvaInterface
48
48
  raise NotFoundError if response.class == Net::HTTPNotFound
49
49
  raise ServiceNotAvailableError
50
50
  end
51
- return response
51
+ response
52
52
  end
53
53
 
54
54
  def valid_response?(response)
@@ -1,3 +1,3 @@
1
1
  module DeltavistaCrifDvaInterface
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
@@ -16,6 +16,19 @@ module DeltavistaCrifDvaInterface
16
16
  return value.to_s.strip
17
17
  end
18
18
  end
19
+
20
+ def response_code(xml)
21
+ get_value xml, "//response/responseCode"
22
+ end
23
+
24
+ def response_text(xml)
25
+ get_value xml, "//response/responseText"
26
+ end
27
+
28
+ def valid_response?(xml)
29
+ response_code(xml) == '0' ? true : false
30
+ end
31
+
19
32
  # Returns the value of a XPATH expression
20
33
  def get_value(node, key)
21
34
  node.xpath(key).collect(&:text)[0]
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: deltavista_crif_dva_interface
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.12
5
+ version: 0.0.13
6
6
  platform: ruby
7
7
  authors:
8
8
  - Marc Cadalbert
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2012-03-26 00:00:00 +02:00
14
+ date: 2012-03-27 00:00:00 +02:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -63,6 +63,7 @@ files:
63
63
  - lib/deltavista_crif_dva_interface/config.rb
64
64
  - lib/deltavista_crif_dva_interface/credit_check_short_v02.rb
65
65
  - lib/deltavista_crif_dva_interface/delta_vista_service.rb
66
+ - lib/deltavista_crif_dva_interface/errors.rb
66
67
  - lib/deltavista_crif_dva_interface/restful_service.rb
67
68
  - lib/deltavista_crif_dva_interface/version.rb
68
69
  - lib/deltavista_crif_dva_interface/xml_converter.rb