lhj-tools 0.1.86 → 0.1.88

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '048148d0f6465fb2497140d960fa4112c411f8571778c6cd2fcf7d1645a9d587'
4
- data.tar.gz: 4d7274b1827dd272efb2c4c3af3d8fc4d099a646ffb1ff390e301d91e6354790
3
+ metadata.gz: add25469f790212700cc67823a7a1709bd5dc530b3d954d0ce33b133e59d8429
4
+ data.tar.gz: 662a20b818f0f57a2d0eee758c8165021cd73fe44b18ad405a63f8a4f3c0fab7
5
5
  SHA512:
6
- metadata.gz: f2400cb4a3d41cdaf1e26a4c74fefef44bc963ac781534093e3456aabf034371be2fcb87dfd42712a7401b4bd655ca8a10e59e7ad88adea45d643a916fac8652
7
- data.tar.gz: 9cbef7eb573c9bd7cd5c69b67c820330352ef1aae48d2f08cc8b103363fe5520bbbc6863baa5fba35ee380c86c4ca3a36489a7407dfcf2ae80769552574222c7
6
+ metadata.gz: b7e0e45bbb6c9fb2af985537440ae9de3a34d3beeac5337670814a5ba3f8b1b324c301ee27211d029b9d2abe283d4292a35dfcd89fb80eb799c033242af2b631
7
+ data.tar.gz: 8d47349754781091db87c22003f853373e94a0a0e3a3f2bae932b4e33656d9a21f2fdde54523d140cd270a466cf4705770a5c73a85f3a6b7da8c08fc2ca4c931
@@ -7,41 +7,10 @@ module Lhj
7
7
  self.summary = '更新yapi请求cookie'
8
8
  self.description = '更新 ~/.lhj/yapi.yml 文件配置'
9
9
 
10
- # @return [String]
11
- def interface_url
12
- url = []
13
- url << 'h'
14
- url << 't'
15
- url << 't'
16
- url << 'p'
17
- url << ':'
18
- url << '/'
19
- url << '/'
20
- url << 'y'
21
- url << 'a'
22
- url << 'p'
23
- url << 'i'
24
- url << '.'
25
- url << 'm'
26
- url << 'i'
27
- url << 'g'
28
- url << 'u'
29
- url << 'a'
30
- url << 't'
31
- url << 'e'
32
- url << 'c'
33
- url << 'h'
34
- url << '.'
35
- url << 'c'
36
- url << 'o'
37
- url << 'm'
38
- url.join('')
39
- end
40
-
41
- def request_cookie
10
+ def request_cookie(url)
42
11
  options = Selenium::WebDriver::Chrome::Options.new(args: %w[start-maximized])
43
12
  driver = Selenium::WebDriver.for(:chrome, capabilities: options)
44
- driver.get interface_url
13
+ driver.get url
45
14
  manage = driver.manage
46
15
  manage.timeouts.implicit_wait = 10
47
16
  manage.timeouts.page_load = 10
@@ -51,6 +20,7 @@ module Lhj
51
20
  login_btn&.click
52
21
  # 2.获取cookies
53
22
  wait = Selenium::WebDriver::Wait.new(timeout: 60)
23
+ need_notify = true
54
24
  wait.until do
55
25
  res = {}
56
26
  manage.all_cookies.each do |cookie|
@@ -58,21 +28,60 @@ module Lhj
58
28
  res[:uid] = cookie[:value] if cookie[:name] == '_yapi_uid'
59
29
  res[:token] = cookie[:value] if cookie[:name] == '_yapi_token'
60
30
  end
31
+ if need_notify
32
+ notify_robot(driver.current_url)
33
+ need_notify = false
34
+ end
61
35
  return res if res.values.count == 3
62
36
  end
63
37
  end
64
38
 
39
+ def robot_url
40
+ 'https://oapi.dingtalk.com/robot/send?access_token=fe879fd3e7a3b5e59d5719b2384845b7884901919be5a78fe443cbf777869807'
41
+ end
42
+
43
+ def notify_robot(url)
44
+ template = Lhj::ErbTemplateHelper.load('yapi_qr_code_notify')
45
+ output = Lhj::ErbTemplateHelper.render(template, { url: url }, '-')
46
+ Lhj::Dingtalk.post_message_robot(robot_url, 'yapi qrcode', output)
47
+ end
48
+
65
49
  def config_file
66
50
  File.join(Lhj::Config.instance.home_dir, 'yapi.yml')
67
51
  end
68
52
 
53
+ def user_info_file
54
+ File.join(Lhj::Config.instance.home_dir, 'yapi_user.yml')
55
+ end
56
+
57
+ def load_config(file)
58
+ YAML.load_file(file)
59
+ end
60
+
61
+ def save_user(result)
62
+ user_info = load_config(user_info_file) if File.exist?(user_info_file)
63
+ user_info ||= []
64
+ current = user_info.find { |k| k['_yapi_uid'].eql?(result['_yapi_uid']) }
65
+ if current
66
+ current['__wpkreporterwid_'] = result['__wpkreporterwid_']
67
+ current['_yapi_token'] = result['_yapi_token']
68
+ else
69
+ user_info << result
70
+ end
71
+ file_to_save = File.open(user_info_file, 'w+')
72
+ YAML.dump(user_info, file_to_save)
73
+ file_to_save.close
74
+ end
75
+
69
76
  def handle
70
- cookie = request_cookie
71
- config = YAML.load_file(config_file) if File.exist?(config_file)
77
+ config = load_config(config_file) if File.exist?(config_file)
78
+ # base_url: 'http://yapi.xx.com'
79
+ cookie = request_cookie(config['base_url'])
72
80
  if cookie && config
73
81
  config['__wpkreporterwid_'] = cookie[:wid]
74
82
  config['_yapi_uid'] = cookie[:uid].to_i
75
83
  config['_yapi_token'] = cookie[:token]
84
+ save_user({ '__wpkreporterwid_' => cookie[:wid], '_yapi_uid' => cookie[:uid].to_i, '_yapi_token' => cookie[:token] })
76
85
  file_to_save = File.open(config_file, 'w+')
77
86
  YAML.dump(config, file_to_save)
78
87
  file_to_save.close
@@ -51,8 +51,20 @@ module Lhj
51
51
  end
52
52
 
53
53
  def process(config_file)
54
- load_config(config_file)
55
- res_body = get_interface_api_model
54
+ config = load_config(config_file)
55
+ process_config(config)
56
+ res_body = get_interface_api_model(config)
57
+ unless res_body['errcode'].to_i.zero?
58
+ if File.exist?(user_yml_file)
59
+ user_infos = load_config(user_yml_file)
60
+ user_infos.each do |c|
61
+ res_body = get_interface_api_model(c)
62
+ config = c
63
+ break if res_body['errcode'].to_i.zero?
64
+ end
65
+ save_config(config) if res_body['errcode'].to_i.zero?
66
+ end
67
+ end
56
68
  unless res_body['errcode'].to_i.zero?
57
69
  puts '请执行 lhj yapi-init 初始化配置'.red
58
70
  return
@@ -61,13 +73,13 @@ module Lhj
61
73
 
62
74
  # get project info
63
75
  project_id = res_body['data']['project_id']
64
- project_info = get_project_info(project_id)
76
+ project_info = get_project_info(project_id, config)
65
77
  # 1.print request result
66
78
  res_models = print_res_body_model(res_body)
67
79
  # 2.print request json body
68
80
  req_models = print_req_body_model(res_body) if res_body['data']['req_body_is_json_schema']
69
81
  # 3.print request param
70
- print_req_query(res_body['data']) unless res_body['data']['req_body_is_json_schema']
82
+ req_models ||= print_req_query(res_body['data']) unless res_body['data']['req_body_is_json_schema']
71
83
  # 4.print request method
72
84
  service_code = print_http_method(res_body['data'], project_info)
73
85
  # print request mock data
@@ -176,11 +188,15 @@ module Lhj
176
188
  File.join(Lhj::Config.instance.home_dir, 'yapi.yml')
177
189
  end
178
190
 
191
+ def user_yml_file
192
+ File.join(Lhj::Config.instance.home_dir, 'yapi_user.yml')
193
+ end
194
+
179
195
  def load_config(file)
180
- config = YAML.load_file(file)
181
- config.each do |k, v|
182
- @http_headers << "#{k}=#{v}" if k.eql?('__wpkreporterwid_') || k.eql?('_yapi_token') || k.eql?('_yapi_uid')
183
- end
196
+ YAML.load_file(file)
197
+ end
198
+
199
+ def process_config(config)
184
200
  @config_base_url = config['base_url']
185
201
  @config_id = config['id']
186
202
  @config_model_pre = config['model_pre']
@@ -191,6 +207,16 @@ module Lhj
191
207
  @config_property_mapper = config['property_mapper']
192
208
  end
193
209
 
210
+ def save_config(config)
211
+ yml = load_config(yml_file)
212
+ yml['__wpkreporterwid_'] = config['__wpkreporterwid_']
213
+ yml['_yapi_uid'] = config['_yapi_uid']
214
+ yml['_yapi_token'] = config['_yapi_token']
215
+ file_to_save = File.open(yml_file, 'w+')
216
+ YAML.dump(yml, file_to_save)
217
+ file_to_save.close
218
+ end
219
+
194
220
  def api_id
195
221
  @id || @config_id.to_s
196
222
  end
@@ -219,10 +245,14 @@ module Lhj
219
245
  @config_property_mapper || { 'id' => 'gid' }
220
246
  end
221
247
 
222
- def get_interface_api_model
248
+ def get_interface_api_model(config)
223
249
  uri = URI.parse(interface_url_str)
224
250
  req = Net::HTTP::Get.new(uri)
225
- req['Cookie'] = @http_headers.join('; ')
251
+ header_arr = []
252
+ config.each do |k, v|
253
+ header_arr << "#{k}=#{v}" if k.eql?('__wpkreporterwid_') || k.eql?('_yapi_token') || k.eql?('_yapi_uid')
254
+ end
255
+ req['Cookie'] = header_arr.join('; ')
226
256
  res = Net::HTTP.start(uri.hostname, uri.port) do |http|
227
257
  http.request(req)
228
258
  end
@@ -232,11 +262,15 @@ module Lhj
232
262
  res_json
233
263
  end
234
264
 
235
- def get_project_info(project_id)
265
+ def get_project_info(project_id, config)
236
266
  url = project_url_str(project_id)
237
267
  uri = URI.parse(url)
238
268
  req = Net::HTTP::Get.new(uri)
239
- req['Cookie'] = @http_headers.join('; ')
269
+ header_arr = []
270
+ config.each do |k, v|
271
+ header_arr << "#{k}=#{v}" if k.eql?('__wpkreporterwid_') || k.eql?('_yapi_token') || k.eql?('_yapi_uid')
272
+ end
273
+ req['Cookie'] = header_arr.join('; ')
240
274
  res = Net::HTTP.start(uri.hostname, uri.port) do |http|
241
275
  http.request(req)
242
276
  end
@@ -462,19 +496,17 @@ module Lhj
462
496
  def print_req_query(data)
463
497
  return unless data && data['req_query']
464
498
 
465
- case @language
466
- when 'oc'
467
- param_model_name = gen_model_name(nil, :req)
468
- puts_h "@interface #{param_model_name} : NSObject"
469
- data['req_query'].each do |h|
470
- des = h['desc']
471
- puts_h "///#{des} #{h['example']}"
472
- puts_h "@property (nonatomic, copy) NSString *#{h['name']};"
473
- end
474
- puts_h '@end'
475
- puts "\n\n"
476
- when 'java'
499
+ properties = []
500
+ data['req_query'].each do |h|
501
+ properties << { key: h['name'], type: 'string', description: h['desc'], default: '' }
477
502
  end
503
+ param_model_name = gen_model_name(nil, :req)
504
+ req_model = { name: param_model_name, properties: properties }
505
+
506
+ models = [req_model]
507
+ print_models(models)
508
+ print_models_impl(models)
509
+ models
478
510
  end
479
511
 
480
512
  def print_http_method(data, project_info)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lhj
4
4
  module Tools
5
- VERSION = "0.1.86"
5
+ VERSION = "0.1.88"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhj-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.86
4
+ version: 0.1.88
5
5
  platform: ruby
6
6
  authors:
7
7
  - lihaijian