lhj-tools 0.2.32 → 0.2.34

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: 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