wireway 202012021617 → 202012161641
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.
- checksums.yaml +4 -4
- data/app/models/wireway/business_logic/restful.rb +17 -5
- data/app/models/wireway/spark.rb +5 -8
- data/app/models/wireway/standard.rb +145 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8330c413fc8bd8b3bddd33990d1c124c2974ad0a9a45c4ec7e8b220f933dc417
|
4
|
+
data.tar.gz: db406a9c62ad0fbb1c0d42f4f41f20490e35ca6e7b95957f9424d881bd78728f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d84f15fe9da85b6348362085c0b0e574061448262b50701f209b2b234bbfbfcf92806e223fabba2b8b3d67eecd6f73094a777cd415acca2fb0f718465e8a72f
|
7
|
+
data.tar.gz: a42d73253abb53f7ac68c6ba95225bee4cb164238e2548d2c1233af639201da95f81b0169f44cb41dbcd77e84bd9e1ce488c544860e2afe3f6e348815eb7fc47
|
@@ -62,7 +62,19 @@ module Wireway
|
|
62
62
|
return [false, body[:result], body[:errors]].compact unless body[:success]
|
63
63
|
[true, body[:result]]
|
64
64
|
end
|
65
|
-
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def black_box(**args)
|
68
|
+
params = {}.merge!(args)
|
69
|
+
route = '/black_box/restful/request_api'
|
70
|
+
res = node_addresses
|
71
|
+
return res unless res[0]
|
72
|
+
res = post(addresses: res[1][:black_box], route: route, params: params) do |result|
|
73
|
+
body = JSON.parse(result[1][:body]).deep_symbolize_keys
|
74
|
+
return [false, body[:result], body[:errors]].compact unless body[:success]
|
75
|
+
[true, body]
|
76
|
+
end
|
77
|
+
end
|
66
78
|
|
67
79
|
def get(addresses:, route:, params: {})
|
68
80
|
result = round_robin(addresses: addresses) do |address|
|
@@ -75,7 +87,7 @@ module Wireway
|
|
75
87
|
begin
|
76
88
|
yield result
|
77
89
|
rescue
|
78
|
-
return [false, '运行时结果处理异常', {errors: {message: $!.to_s, path: $@}}]
|
90
|
+
return [false, '[Wireway]运行时结果处理异常', {errors: {message: $!.to_s, path: $@}}]
|
79
91
|
end
|
80
92
|
end
|
81
93
|
|
@@ -88,7 +100,7 @@ module Wireway
|
|
88
100
|
begin
|
89
101
|
yield result
|
90
102
|
rescue
|
91
|
-
return [false, '运行时结果处理异常', {errors: {message: $!.to_s, path: $@}}]
|
103
|
+
return [false, '[Wireway]运行时结果处理异常', {errors: {message: $!.to_s, path: $@}}]
|
92
104
|
end
|
93
105
|
end
|
94
106
|
|
@@ -109,7 +121,7 @@ module Wireway
|
|
109
121
|
def get_response
|
110
122
|
begin
|
111
123
|
response = yield
|
112
|
-
return [false, "响应码异常:#{response.code}", {response: response}] unless (response.code == 200)
|
124
|
+
return [false, "[Wireway]响应码异常:#{response.code}", {response: response}] unless (response.code == 200)
|
113
125
|
|
114
126
|
hash = {code: 200}
|
115
127
|
res = handle_body_encode(body: response.body)
|
@@ -117,7 +129,7 @@ module Wireway
|
|
117
129
|
|
118
130
|
hash.merge!({body: res[1]})
|
119
131
|
rescue
|
120
|
-
return [false, '请求异常', {errors: {message: $!.to_s, path: $@}}]
|
132
|
+
return [false, '[Wireway]请求异常', {errors: {message: $!.to_s, path: $@}}]
|
121
133
|
end
|
122
134
|
|
123
135
|
[true, hash]
|
data/app/models/wireway/spark.rb
CHANGED
@@ -1,24 +1,21 @@
|
|
1
1
|
module Wireway
|
2
2
|
module Spark
|
3
|
-
|
4
|
-
# Wireway::Spark.dashboard(api_code: :publish_other_request_assets, rely_assets: ["bootstrap_4", "jQuery_3_5_1", "chart_js"])
|
5
|
-
# Wireway::Spark.satcom(api_code: :finance_fund_base_info, code: '161725')
|
6
|
-
# Wireway::BusinessLogic::Restful::node_addresses
|
7
|
-
# Wireway::Spark.wireway(platform: :satcom, api_code: :finance_fund_base_info, code: '161725')
|
8
3
|
def self.method_missing(method_name, local: true, **args)
|
9
4
|
begin
|
10
5
|
target = Wireway::BusinessLogic::Restful
|
11
|
-
|
6
|
+
unless [true, 'true', 1, '1', 'yes'].include?(local)
|
7
|
+
return [false, "未找到名称为:#{method_name}的方法定义."] unless target.respond_to?(method_name)
|
8
|
+
end
|
12
9
|
res = target.send(method_name, args)
|
13
10
|
rescue
|
14
|
-
error_msg = [false, '请求异常', {errors: {message: $!.to_s, path: $@}}]
|
11
|
+
error_msg = [false, '[Wireway]请求异常', {errors: {message: $!.to_s, path: $@}}]
|
15
12
|
return error_msg unless [true, 'true', 1, '1', 'yes'].include?(local)
|
16
13
|
# 当以Gem形式的组件无法处理请求时,尝试请求线上版组件是否可以正常处理请求
|
17
14
|
# 即当gem出现问题时会请求线上服务 有利于断点排查
|
18
15
|
args.merge!(platform: method_name)
|
19
16
|
res = target.wireway(args)
|
20
17
|
end
|
21
|
-
end
|
18
|
+
end
|
22
19
|
|
23
20
|
end
|
24
21
|
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
module Wireway
|
2
|
+
# 接口请求参数标准
|
3
|
+
module Standard
|
4
|
+
extend self
|
5
|
+
|
6
|
+
# 全自检项检查
|
7
|
+
def inspect_all(ideal:, reality:)
|
8
|
+
ideal_reality = {ideal: ideal, reality: reality}
|
9
|
+
|
10
|
+
res = default_value(ideal_reality)
|
11
|
+
return res unless res[0]
|
12
|
+
|
13
|
+
res = value_type(ideal_reality)
|
14
|
+
return res unless res[0]
|
15
|
+
|
16
|
+
res = attribute_necessary(ideal_reality)
|
17
|
+
return res unless res[0]
|
18
|
+
|
19
|
+
# res = check_data_format(described: described, reality: reality)
|
20
|
+
# return res unless res[0]
|
21
|
+
[true, '']
|
22
|
+
end
|
23
|
+
|
24
|
+
# 参数项检查
|
25
|
+
def attribute_necessary(ideal:, reality:)
|
26
|
+
# 检查必须参数是否缺失
|
27
|
+
necessary_standards = ideal.select{|standard| standard[:necessary] == true}
|
28
|
+
necessary_standards.each do |standard|
|
29
|
+
key = standard[:key]
|
30
|
+
unless (reality[key.to_sym] || reality[key]).present?
|
31
|
+
return [false, "#{standard[:name]}(#{key})为必须项,不能为空"]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# 检查参数值是否符合正则式要求
|
36
|
+
reality.each do |key, value|
|
37
|
+
standard = ideal.select{|standard| [key, key.to_sym, key.to_s].uniq.include?(standard[:key])}[0]
|
38
|
+
# return [false, "未找到关于参数:#{key} 的定义"] unless standard
|
39
|
+
next unless standard
|
40
|
+
|
41
|
+
if standard[:regular] && (value.to_s =~ standard[:regular]).nil?
|
42
|
+
tmp = "参数:#{standard[:name]}(#{key})的参数值(#{value})不满足要求"
|
43
|
+
tmp+= ", 请参考: #{standard[:explain]}" if standard[:explain].present?
|
44
|
+
tmp+= ", 示例值: #{standard[:example]}" if standard[:example].present?
|
45
|
+
tmp+= ", 默认值: #{standard[:default]}" if standard[:default].present?
|
46
|
+
tmp+='.'
|
47
|
+
return [false, tmp]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
[true, '']
|
52
|
+
end
|
53
|
+
|
54
|
+
# 参数默认值检查
|
55
|
+
def default_value(ideal:, reality:)
|
56
|
+
ideal.select{|standard| !standard[:default].nil?}.each do |standard|
|
57
|
+
unless reality[standard[:key].to_sym].present?
|
58
|
+
reality.merge!({standard[:key].to_sym => standard[:default]})
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
[true, '']
|
63
|
+
end
|
64
|
+
|
65
|
+
# 参数值格式检查
|
66
|
+
def value_type(ideal:, reality:)
|
67
|
+
ideal.each do |standard|
|
68
|
+
unless standard[:value_type].present?
|
69
|
+
return [false, "自描述参数标准检查异常: #{standard[:name]}(#{standard[:key]})未设置对应参数值类型(value_type)."]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
ideal.each do |standard|
|
74
|
+
old_value = reality[standard[:key].to_sym]
|
75
|
+
|
76
|
+
case standard[:value_type].to_sym
|
77
|
+
when :string_or_array, :array_or_string
|
78
|
+
new_value = (JSON.parse(old_value) rescue false)
|
79
|
+
new_value = old_value.split(/, |,/) unless new_value
|
80
|
+
when :array
|
81
|
+
error_msg = [false, "参数:#{standard[:key]},参数类型不符合Json数组要求."]
|
82
|
+
next if old_value.is_a?(Array)
|
83
|
+
|
84
|
+
new_value = (JSON.parse(old_value) rescue (return error_msg))
|
85
|
+
return error_msg unless new_value.is_a?(Array)
|
86
|
+
when :key_value
|
87
|
+
error_msg = [false, "参数:#{standard[:key]},参数类型不符合Json键值对要求."]
|
88
|
+
next if old_value.is_a?(Hash)
|
89
|
+
|
90
|
+
new_value = (JSON.parse(old_value) rescue (return error_msg))
|
91
|
+
return error_msg unless new_value.is_a?(Hash)
|
92
|
+
when :boolean
|
93
|
+
new_value = [true, 'true', '1', 1].include?(old_value)
|
94
|
+
when :integer
|
95
|
+
max_value = standard[:max]
|
96
|
+
return [false, "参数:#{standard[:key]},参数值:#{old_value} 大于接口定义最大值:#{max_value}."] if max_value.present? && (old_value.to_i > max_value)
|
97
|
+
next if old_value.is_a?(Integer)
|
98
|
+
if old_value == '0'
|
99
|
+
new_value = 0
|
100
|
+
else
|
101
|
+
return [false, "参数:#{standard[:key]},参数类型不符合数字要求."] if ((old_value.to_i rescue 0) == 0)
|
102
|
+
new_value = old_value.to_i
|
103
|
+
end
|
104
|
+
else
|
105
|
+
next
|
106
|
+
end
|
107
|
+
|
108
|
+
unless (old_value == new_value)
|
109
|
+
reality.merge!({standard[:key].to_sym => new_value})
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
[true, '']
|
114
|
+
end
|
115
|
+
|
116
|
+
def check_data_format(described:, reality:)
|
117
|
+
data_format = {}
|
118
|
+
if (reality[:data_format] == ['original']) && (reality[:key_type] == 'zh')
|
119
|
+
described[:data_structure].map do |key, value|
|
120
|
+
data_format.merge!([[value, key]].to_h)
|
121
|
+
end
|
122
|
+
reality[:data_format] = data_format
|
123
|
+
return [true, '']
|
124
|
+
elsif (reality[:data_format] == ['original'])
|
125
|
+
described[:data_structure].each do |key, value|
|
126
|
+
data_format.merge!([[key, key]].to_h)
|
127
|
+
end
|
128
|
+
reality[:data_format] = data_format
|
129
|
+
return [true, '']
|
130
|
+
end
|
131
|
+
|
132
|
+
data_format = reality[:data_format]
|
133
|
+
data_format = data_format.map(&:to_sym)
|
134
|
+
data_structure = {}
|
135
|
+
described[:data_structure].map{|key, value| data_structure.merge!([[key, key], [value.to_sym, key]].to_h)}
|
136
|
+
hit_items = data_structure.select{|key, value| data_format.include?(key)}
|
137
|
+
missed = (data_format - hit_items.keys).join(',')
|
138
|
+
return [false, "所提供数据格式中:#{missed},未找到对应匹配数据项"] if missed.present?
|
139
|
+
|
140
|
+
reality[:data_format] = hit_items
|
141
|
+
[true, '']
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wireway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '
|
4
|
+
version: '202012161641'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ff4c00
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- app/models/wireway/application_record.rb
|
94
94
|
- app/models/wireway/business_logic/restful.rb
|
95
95
|
- app/models/wireway/spark.rb
|
96
|
+
- app/models/wireway/standard.rb
|
96
97
|
- app/views/layouts/wireway/application.html.erb
|
97
98
|
- config/routes.rb
|
98
99
|
- lib/tasks/wireway_tasks.rake
|