lhj-tools 0.2.32 → 0.2.34

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: 23e4b1ca63b9edadde731a0fba99ad2815029e3a65fca292d80d5ded572f0cca
4
- data.tar.gz: 01606d47b8191a85c0cd44b9ec15fa069fa0936da3287325abb72ebf90370ac6
3
+ metadata.gz: 3cc00706a73b9e787e9d9336da8f7c8e5e787ff6e6192dff2383e65792561ec0
4
+ data.tar.gz: 83c616ccc6b192910102979f6c091d9e48b36938588391b963a659362dd0604a
5
5
  SHA512:
6
- metadata.gz: c11804e3e40eb39886babf9347106e959d0bf1366f4f89ab0c62174b844fd7e38656f954c658402944a01e110e14506a9cda195952a6e61e144e313ed78f0038
7
- data.tar.gz: aff83c9066ee3975ad45d7ccfa29db7f5cc7bfbe09f8481dd07c5d9d477d67ba2b4e965919935c6f6457e20e9b02af1dfa03637b6318ffc4f501164b1e7442c5
6
+ metadata.gz: e1062fd7c95362b9c0cac73359276d929fe49b30643522f8fb11f4ef8f311fcc505974d934f703bacf29a16d29213906d80a97d96bacad99a467d9ead2c98943
7
+ data.tar.gz: 158f1213427ce173a39537f0b8187c7ad3de2992d4b7bdcf643e46a1d0ab04e478ae0aae25c2b0603e49d328522eaa19ef45ef4303e4ccc0e9592a51d57a7276
@@ -13,7 +13,8 @@ module Lhj
13
13
  self.description = '使用工具前先执行`lhj init --url=http://xxx`'
14
14
 
15
15
  self.arguments = [
16
- CLAide::Argument.new('url', true)
16
+ CLAide::Argument.new('url', false),
17
+ CLAide::Argument.new('key', false)
17
18
  ]
18
19
 
19
20
  def self.options
@@ -22,16 +23,10 @@ module Lhj
22
23
  ]
23
24
  end
24
25
 
25
- def validate!
26
- super
27
- unless @url
28
- path = File.join(target_folder, 'config_file.yml')
29
- help! '配置url必须输入' unless File.exist?(path)
30
- end
31
- end
32
-
33
26
  def initialize(argv)
34
27
  @url = argv.option('url')
28
+ @key = argv.option('key')
29
+ @url = Lhj::CipherHelper.strict_decode64_encode(@key) if @key
35
30
  super
36
31
  end
37
32
 
@@ -46,22 +46,16 @@ module Lhj
46
46
  end
47
47
 
48
48
  def handle
49
- # file = File.join(Lhj::Config.instance.home_dir, 'all_device.txt')
50
- # File.open(file, 'r+') do |f|
51
- # f.each_line do |line|
52
- # ma = line.match(/(?<device>[^\s]*)(\s*)(?<name>.*)/)
53
- # device = ma[:device]
54
- # name = ma[:name].gsub(/(\S*)\s(\S*)\s(.*)/, '\\1-\\2-\\3')
55
- # name = name.gsub(/\s/, '')
56
- # add_device(device, name)
57
- # end
58
- # end
59
- #
60
- api = Lhj::YapiHelper.new(project_id: 694, interface_id: 71426, model_name: 'Result', model_pre: 'ML', language: :java)
61
- api_result = api.process
62
- ss = api_result.reject { |k, v| v.nil? }
63
- # //.map { |key, v| { "#{key}": "```sss #{v}```" } }
64
- puts ss
49
+ file = File.join(Lhj::Config.instance.home_dir, 'all_device.txt')
50
+ File.open(file, 'r+') do |f|
51
+ f.each_line do |line|
52
+ ma = line.match(/(?<device>[^\s]*)(\s*)(?<name>.*)/)
53
+ device = ma[:device]
54
+ name = ma[:name].gsub(/(\S*)\s(\S*)\s(.*)/, '\\1-\\2-\\3')
55
+ name = name.gsub(/\s/, '')
56
+ add_device(device, name)
57
+ end
58
+ end
65
59
 
66
60
  # api = Lhj::YapiHelper.new(project_id: 694, interface_id: 70595, model_name: 'Order', model_pre: 'AA')
67
61
  # api.process
@@ -0,0 +1,56 @@
1
+ require 'openssl'
2
+ require 'base64'
3
+
4
+ module Lhj
5
+ class CipherHelper
6
+ CIPHER_KEY = '1234567890'.freeze
7
+ CIPHERIV = '456'.freeze
8
+
9
+ def self.key
10
+ key = [CIPHER_KEY].pack('H*')
11
+ key << ("\x00" * (32 - key.length))
12
+ key
13
+ end
14
+
15
+ def self.iv
16
+ iv = [CIPHERIV].pack('H*')
17
+ iv << ("\x00" * (16 - iv.length))
18
+ iv
19
+ end
20
+
21
+ def self.strict_encode64_encode(str)
22
+ encode_str = Base64.strict_encode64(str)
23
+ encode(encode_str)
24
+ end
25
+
26
+ def self.encode64_encode(str)
27
+ encode_str = Base64.encode64(str)
28
+ encode(encode_str)
29
+ end
30
+
31
+ def self.strict_decode64_encode(str)
32
+ decode_str = decode(str)
33
+ Base64.strict_decode64(decode_str)
34
+ end
35
+
36
+ def self.decode64_encode(str)
37
+ decode_str = decode(str)
38
+ Base64.decode64(decode_str)
39
+ end
40
+
41
+ def self.encode(data)
42
+ cipher = OpenSSL::Cipher.new('AES-256-CBC').encrypt
43
+ cipher.key = key
44
+ cipher.iv = iv
45
+ encrypted = cipher.update(data) + cipher.final
46
+ Base64.strict_encode64(encrypted)
47
+ end
48
+
49
+ def self.decode(str)
50
+ decipher = OpenSSL::Cipher.new('AES-256-CBC').decrypt
51
+ decipher.key = key
52
+ decipher.iv = iv
53
+ decipher.update(Base64.strict_decode64(str)) + decipher.final
54
+ end
55
+ end
56
+ end
@@ -118,6 +118,8 @@ module Lhj
118
118
  @req_mock_array ||= []
119
119
  @req_mock_array << str
120
120
  when :java
121
+ when :swift
122
+ when :dart
121
123
  end
122
124
  end
123
125
 
@@ -176,6 +178,10 @@ module Lhj
176
178
  print_models_impl(models)
177
179
  when :java
178
180
  print_models_for_java(models)
181
+ when :swift
182
+ print_models_for_swift(models)
183
+ when :dart
184
+ print_models_for_dart(models)
179
185
  end
180
186
  puts "\n<===============打印返回数据模型-End=====================>\n".green
181
187
  models
@@ -196,6 +202,10 @@ module Lhj
196
202
  print_models_impl(models)
197
203
  when :java
198
204
  print_models_for_java(models)
205
+ when :swift
206
+ print_models_for_swift(models)
207
+ when :dart
208
+ print_models_for_dart(models)
199
209
  end
200
210
  puts "\n<===============打印请求模型-End=====================>\n".green
201
211
  models
@@ -252,7 +262,7 @@ module Lhj
252
262
  o = v['items'] || v
253
263
  o['name'] = gen_model_name(k, type)
254
264
  if v['type'].eql?('array') && v['items']['type'].eql?('string')
255
- c_model[:type_name] = 'NSString'
265
+ c_model[:type_name] = 'String'
256
266
  else
257
267
  c_model[:type_name] = o['name']
258
268
  handle_model(o, type, &block)
@@ -293,10 +303,109 @@ module Lhj
293
303
  end
294
304
  end
295
305
 
306
+ def print_models_for_swift(models)
307
+ models.each do |model|
308
+ model_name = model[:name] || ''
309
+ model_properties = model[:properties]
310
+ puts_h "class #{model_name}: NSObject {"
311
+ model_properties.each do |m|
312
+ print_model_for_swift(m)
313
+ end
314
+ puts_h "}\n\n\n"
315
+ end
316
+ end
317
+
318
+ def print_models_for_dart(models)
319
+ models.each do |model|
320
+ model_name = model[:name] || ''
321
+ model_properties = model[:properties]
322
+ puts_h "class #{model_name} {"
323
+ model_properties.each do |m|
324
+ print_model_for_dart(m)
325
+ end
326
+ # init method
327
+ puts_h "\n"
328
+ i_content = model_properties.map { |p| "this.#{p[:key]}" }.join(', ')
329
+ puts_h " #{model_name}({#{i_content}});"
330
+ puts_h "\n"
331
+ # json to model
332
+ puts_h " #{model_name}.fromJson(Map<String, dynamic> json) {"
333
+ puts_h json_to_model_dart(model_properties)
334
+ puts_h ' }'
335
+ # model to json
336
+ puts_h "\n"
337
+ puts_h ' Map<String, dynamic> toJson() {'
338
+ puts_h ' final Map<String, dynamic> data = <String, dynamic>{};'
339
+ puts_h model_to_json_dart(model_properties)
340
+ puts_h ' return data;'
341
+ puts_h ' }'
342
+ puts_h "}\n\n\n"
343
+ end
344
+ end
345
+
346
+ def json_to_model_dart(properties)
347
+ p_s = properties.map do |p|
348
+ case p[:type]
349
+ when 'object'
350
+ " #{p[:key]} = json['#{p[:key]}'] != null ? #{p[:type_name]}.fromJson(json['#{p[:key]}']) : null;"
351
+ when 'array'
352
+ if p[:type_name].eql?('String')
353
+ " #{p[:key]} = json['#{p[:key]}'].cast<String>();"
354
+ else
355
+ json_to_model_array_dart(p)
356
+ end
357
+ else
358
+ " #{p[:key]} = json['#{p[:key]}'];"
359
+ end
360
+ end
361
+ p_s.join("\n")
362
+ end
363
+
364
+ def json_to_model_array_dart(p)
365
+ array = []
366
+ array << " if (json['#{p[:key]}'] != null) {"
367
+ array << " #{p[:key]} = <#{p[:type_name]}>[];"
368
+ array << " json['#{p[:key]}'].forEach((v) {"
369
+ array << " #{p[:key]}!.add(#{p[:type_name]}.fromJson(v));"
370
+ array << ' });'
371
+ array << ' }'
372
+ array.join("\n")
373
+ end
374
+
375
+ def model_to_json_dart(properties)
376
+ p_s = properties.map do |p|
377
+ case p[:type]
378
+ when 'object'
379
+ model_to_model_obj_dart(p)
380
+ when 'array'
381
+ model_to_model_array_dart(p)
382
+ else
383
+ " data['#{p[:key]}'] = #{p[:key]};"
384
+ end
385
+ end
386
+ p_s.join("\n")
387
+ end
388
+
389
+ def model_to_model_obj_dart(p)
390
+ array = []
391
+ array << " if (#{p[:key]} != null) {"
392
+ array << " data['#{p[:key]}'] = #{p[:key]}!.toJson();"
393
+ array << ' }'
394
+ array.join("\n")
395
+ end
396
+
397
+ def model_to_model_array_dart(p)
398
+ array = []
399
+ array << " if (#{p[:key]} != null) {"
400
+ array << " data['#{p[:key]}'] = #{p[:key]}!.map((v) => v.toJson()).toList();"
401
+ array << ' }'
402
+ array.join("\n")
403
+ end
404
+
296
405
  def print_models_impl(models)
297
406
  models.each do |model|
298
407
  puts_m "@implementation #{model[:name]}"
299
- str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('NSString') }.map { |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
408
+ str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('String') }.map { |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
300
409
  if str&.length&.positive?
301
410
  puts_m '+(NSDictionary *)modelContainerPropertyGenericClass {'
302
411
  puts_m " return @{#{str}};"
@@ -376,6 +485,65 @@ module Lhj
376
485
  end
377
486
  end
378
487
 
488
+ def print_model_for_swift(m)
489
+ key = m[:key]
490
+ type_name = m[:type_name]
491
+ type = m[:type]
492
+ des = m[:description] || ''
493
+ des.gsub!(/\n/, ' ')
494
+ default = m[:default]
495
+ case type
496
+ when 'integer'
497
+ puts_h " @objc var #{key}: Int?//#{des} #{default}"
498
+ when 'string'
499
+ puts_h " @objc var #{key}: String?//#{des} #{default}"
500
+ when 'number'
501
+ puts_h " @objc var #{key}: Float?//#{des} #{default}"
502
+ when 'float'
503
+ puts_h " @objc var #{key}: Float?//#{des} #{default}"
504
+ when 'double'
505
+ puts_h " @objc var #{key}: Double?//#{des} #{default}"
506
+ when 'boolean'
507
+ puts_h " @objc var #{key}: Bool?//#{des} #{default}"
508
+ when 'object'
509
+ puts_h " @objc var #{key}: #{type_name}?//#{des} #{default}"
510
+ when 'array'
511
+ puts_h " @objc var #{key}: Array<#{type_name}>?//#{des} #{default}"
512
+ else
513
+ puts_h " @objc var #{key}: String?//#{des} #{default}"
514
+ end
515
+ end
516
+
517
+ def print_model_for_dart(m)
518
+ key = m[:key]
519
+ type_name = m[:type_name]
520
+ type = m[:type]
521
+ des = m[:description] || ''
522
+ des.gsub!(/\n/, ' ')
523
+ default = m[:default]
524
+ puts_h " //#{des} #{default}"
525
+ case type
526
+ when 'integer'
527
+ puts_h " int? #{key};"
528
+ when 'string'
529
+ puts_h " String? #{key};"
530
+ when 'number'
531
+ puts_h " int? #{key};"
532
+ when 'float'
533
+ puts_h " float? #{key};"
534
+ when 'double'
535
+ puts_h " double? #{key};"
536
+ when 'boolean'
537
+ puts_h " bool? #{key};"
538
+ when 'object'
539
+ puts_h " #{type_name}? #{key};"
540
+ when 'array'
541
+ puts_h " List<#{type_name}>? #{key};"
542
+ else
543
+ puts_h " String? #{key};"
544
+ end
545
+ end
546
+
379
547
  # @param [Object] data
380
548
  def print_req_query(data)
381
549
  return unless data && data['req_query']
@@ -394,6 +562,10 @@ module Lhj
394
562
  print_models_impl(models)
395
563
  when :java
396
564
  print_models_for_java(models)
565
+ when :swift
566
+ print_models_for_swift(models)
567
+ when :dart
568
+ print_models_for_dart(models)
397
569
  end
398
570
  models
399
571
  end
@@ -437,6 +609,8 @@ module Lhj
437
609
  yapi_temp_result = Lhj::ErbTemplateHelper.render(yapi_temp, yapi_vars, '-')
438
610
  puts_s(yapi_temp_result)
439
611
  when :java
612
+ when :swift
613
+ when :dart
440
614
  end
441
615
 
442
616
  end
data/lib/lhj/lhj.rb CHANGED
@@ -7,6 +7,7 @@ module Lhj
7
7
  require 'lhj/env'
8
8
  require 'lhj/ui/ui'
9
9
  require 'lhj/config'
10
+ require 'lhj/helper/cipher_helper'
10
11
  require 'lhj/helper/jenkins_config'
11
12
  require 'lhj/helper/apple/apple_jwt_config'
12
13
  require 'lhj/helper/apple/apple_connect_api'
data/lib/lhj/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lhj
4
- VERSION = '0.2.32'
4
+ VERSION = '0.2.34'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhj-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.32
4
+ version: 0.2.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - lihaijian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-29 00:00:00.000000000 Z
11
+ date: 2023-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj
@@ -386,6 +386,7 @@ files:
386
386
  - lib/lhj/helper/apple/apple_jwt_config.rb
387
387
  - lib/lhj/helper/bugly_helper.rb
388
388
  - lib/lhj/helper/chat_gpt_config.rb
389
+ - lib/lhj/helper/cipher_helper.rb
389
390
  - lib/lhj/helper/dingtalk_config.rb
390
391
  - lib/lhj/helper/dingtalk_helper.rb
391
392
  - lib/lhj/helper/erb_template_helper.rb