tcat 0.1.5 → 0.1.6

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tcat/query.rb +33 -23
  3. data/lib/tcat/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 66a34a4165a334cea5fc3e1297f49265cff8cff2099aa8ea6ea0912d953798a1
4
- data.tar.gz: 72cd8a878a16a17829ffbb0dfbe6588c04828ed1e72de0799f3fe66460b9451b
3
+ metadata.gz: ac88c04a17a00b5b457a86bcf3bad081ac0fb48886351c1033fd1b89e2ebe399
4
+ data.tar.gz: 4adfbb15946f3f42b2b655911f2501824e401aa08d22635aafb01cb73f9adb85
5
5
  SHA512:
6
- metadata.gz: 96960dd54febe02718c8fb068206b3d1b0d23ca45ddb65b4097920cdf58d87b5bba346e2fce0bcc3ef11109b67d78c6a00d6ad84d8d1899358ee094e4245f863
7
- data.tar.gz: d5a1a0ee708bb6179d62b8596af30137ecd0965f146bb6f009a3ac9b834242fe61046e553f6620a457e215c99f13375306c13bddbb7b011bf217614b1683f961
6
+ metadata.gz: 34d8e04435756d743116aa0da37132d5c7f695a6f835690d4f616cba78aaacf15c1661c8e6802524c903b0dcaaf0f89ee9803d654b702865c2cdd438b90426d4
7
+ data.tar.gz: fb274000955f0ba2f3f68d2d6564fbd930656f792993b7be394861afb1c6df2d76f0ccffb7ef6b68dd3b4d646da9a8a8c7b58250db85bfe420c5ea0643c77828
data/lib/tcat/query.rb CHANGED
@@ -64,33 +64,43 @@ module Tcat
64
64
  end
65
65
 
66
66
  def parse_response(xml)
67
- result = Ox.load(xml, mode: :hash, with_cdata: true)
68
-
69
- return if result[:Result][:Status] != '0'
70
-
71
- statuses =
72
- if result[:Result][:Content][:Item].is_a?(Hash)
73
- [result[:Result][:Content][:Item][:Status].force_encoding('UTF-8')]
74
- elsif result[:Result][:Content][:Item].is_a?(Array)
75
- result[:Result][:Content][:Item].map do |item|
76
- item[:Status].force_encoding('UTF-8')
77
- end
78
- end
79
- parse_status_message(statuses.uniq)
67
+ begin
68
+ result = Ox.load(xml, mode: :hash, with_cdata: true)
69
+ return :error unless result.dig(:Result, :Status) == '0'
70
+
71
+ delivery_items = result.dig(:Result, :Content, :Item)
72
+ delivery_statuses = extract_delivery_statuses(delivery_items)
73
+
74
+ parse_status_message(delivery_statuses.uniq)
75
+ rescue StandardError => e
76
+ Rails.logger.error("Error parsing T-Cat response: #{e.message}")
77
+ :error
78
+ end
80
79
  end
81
80
 
82
- def parse_status_message(statuses)
83
- if statuses.include?('順利送達')
84
- :done
85
- elsif statuses.include?('配送中')
86
- :delivering
87
- elsif statuses.include?('已集貨')
88
- :collected
89
- elsif statuses.include?('轉運中')
90
- :in_transit
81
+ def extract_delivery_statuses(items)
82
+ case items
83
+ when Hash
84
+ [items[:Status].force_encoding('UTF-8')]
85
+ when Array
86
+ items.map { |item| item[:Status].force_encoding('UTF-8') }
91
87
  else
92
- :unknown
88
+ []
89
+ end
90
+ end
91
+
92
+ STATUS_MAPPINGS = {
93
+ '順利送達' => :done,
94
+ '配送中' => :delivering,
95
+ '已集貨' => :collected,
96
+ '轉運中' => :in_transit
97
+ }.freeze
98
+
99
+ def parse_status_message(statuses)
100
+ STATUS_MAPPINGS.each do |status_text, status_symbol|
101
+ return status_symbol if statuses.include?(status_text)
93
102
  end
103
+ :unknown
94
104
  end
95
105
  end
96
106
  end
data/lib/tcat/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tcat
4
- VERSION = '0.1.5'
4
+ VERSION = '0.1.6'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tcat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zac