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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d07a6ca738f27ad3c9fd623c8bdbce18acb7860e27f3afc1410de25ec57496f
4
- data.tar.gz: 49e48b8cbe49c109dbfa937ba7104908dabc559d38e3e72db457fb46e55f79cd
3
+ metadata.gz: 8330c413fc8bd8b3bddd33990d1c124c2974ad0a9a45c4ec7e8b220f933dc417
4
+ data.tar.gz: db406a9c62ad0fbb1c0d42f4f41f20490e35ca6e7b95957f9424d881bd78728f
5
5
  SHA512:
6
- metadata.gz: 83fcb9122548dcd969db7524ae4dc1cddd325d27ab9476a0403df1079dc9908d3edfa4ea0e9228227b1e5e8df0ad326bfef23379981cf92bb7bf5c12e35364b8
7
- data.tar.gz: ae11a93a1377341c08f7e1c31f27300d48e20402541a5cd49a1eb05c0a704624a4558fdef54c6f56c0de48bb46fadb4b03623dab47a6a629ffab91d4a7eb9eda
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]
@@ -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
- return [false, '未找到相关定义方法'] unless target.respond_to?(method_name)
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: '202012021617'
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-02 00:00:00.000000000 Z
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