cocoapods-aomi-bin 0.1.16 → 0.1.21

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: 8f9ff1941c6a02f6e30fded1d370fedd44b658e3cb91970dcbfbc5a19241076f
4
- data.tar.gz: 2bf6fef91f8ba2e53be60d814eafc1b1f83153a0a23b0d9716af8b6acdf194b1
3
+ metadata.gz: cea7471eae842634649c220a62e11f4589f20634d5b9c0808f4408316b49d3de
4
+ data.tar.gz: 643fc2465fc83994e6438ccb12f9f93c8aa0b94762bf98c1e1fbb63c08567fc7
5
5
  SHA512:
6
- metadata.gz: 369fafb90bc74dbd9e234f2d4da1a98cfc46579673041129d874b73d448953bb566c94dc2ee45ebb877fd93ffc5a29780f75b00dd1968d877cae514f85da4447
7
- data.tar.gz: 204cdff62de43760770fd3c2a5ccf1370451dc01f39bb623550eb679f7a5cdaa7a3fad85419abc67f20abc91af73956c639e83c85d8a281efc5fd4ad5096e0a7
6
+ metadata.gz: 71c5d7acda6dc021b007cb27b81bc7ddc37b8d24f6a143236650d8054b07231fd1d98fe25df236b901530c2990f53716df4473ebd33b55f62e1d3dde62896d8d
7
+ data.tar.gz: 2256e7b73731522f3e649141332db91f3328b2c0d83cfd0c84feb4ab4e4d57de8b021ee624cf5e29efd3f26dc6813f2e326f69ac6cdebc27fede34a5a2d6936d
@@ -15,6 +15,7 @@ require 'cocoapods-lhj-bin/command/bin/local/upload'
15
15
  require 'cocoapods-lhj-bin/command/bin/trans'
16
16
  require 'cocoapods-lhj-bin/command/bin/lhj'
17
17
  require 'cocoapods-lhj-bin/command/bin/model'
18
+ require 'cocoapods-lhj-bin/command/bin/yapi'
18
19
  require 'cocoapods-lhj-bin/command/bin/view'
19
20
  require 'cocoapods-lhj-bin/command/bin/config/push'
20
21
  require 'cocoapods-lhj-bin/command/bin/oss/list'
@@ -15,13 +15,17 @@ module Pod
15
15
  end
16
16
 
17
17
  def run
18
+ model = fetch_model
19
+ fetch_models(nil, model) if model
20
+ print_models
21
+ print_models_implementation
22
+ end
23
+
24
+ def fetch_model
18
25
  uri = URI.parse(@url)
19
26
  res = Net::HTTP.get_response(uri)
20
27
  res_body = JSON.parse(res.body)
21
- detail_msg = res_body['detailMsg']
22
- fetch_models(nil, detail_msg) if detail_msg
23
- print_models
24
- print_models_implementation
28
+ res_body['detailMsg']
25
29
  end
26
30
 
27
31
  def validate!
@@ -19,6 +19,8 @@ module Pod
19
19
  print_instance
20
20
  puts "\n\n"
21
21
  print_layout
22
+ puts "\n\n"
23
+ print_value
22
24
  end
23
25
 
24
26
  def print_declare
@@ -37,7 +39,7 @@ module Pod
37
39
  puts " _#{name}.translatesAutoresizingMaskIntoConstraints = NO;"
38
40
  print_property(name)
39
41
  puts " }"
40
- puts " return _#{name}"
42
+ puts " return _#{name};"
41
43
  puts "}"
42
44
  puts "\n"
43
45
  end
@@ -56,6 +58,7 @@ module Pod
56
58
  def print_property(name)
57
59
  if @type.eql?('UILabel')
58
60
  puts " _#{name}.textColor = kSetCOLOR(0x333333);"
61
+ puts " _#{name}.text = @\"xxxxxxxx\";"
59
62
  puts " _#{name}.font = [UIFont systemFontOfSize:12.0 weight:UIFontWeightRegular];"
60
63
  puts " _#{name}.textAlignment = NSTextAlignmentCenter;"
61
64
  elsif @type.eql?('UIImageView')
@@ -91,6 +94,14 @@ module Pod
91
94
  end
92
95
  end
93
96
 
97
+ def print_value
98
+ names.each do |name|
99
+ if @type.eql?('UILabel')
100
+ puts "self.#{name}.text = @\"xxxxx\";"
101
+ end
102
+ end
103
+ end
104
+
94
105
  end
95
106
  end
96
107
  end
@@ -0,0 +1,252 @@
1
+ require 'net/https'
2
+ require 'uri'
3
+ require 'json'
4
+
5
+ module Pod
6
+ class Command
7
+ class Bin < Command
8
+ class Yapi < Bin
9
+ self.summary = '通过yapi接口生成请求'
10
+
11
+ def initialize(argv)
12
+ @id = argv.option('id')
13
+ @model_pre_name = argv.option('model-pre')
14
+ @http_url = ''
15
+ @http_headers = []
16
+ @data_json = {}
17
+ @models = []
18
+ @config_id = ''
19
+ @config_model_pre = 'ML'
20
+ @type_trans = {}
21
+ @config_model_names = []
22
+ @model_names = []
23
+ end
24
+
25
+ def run
26
+ load_config
27
+ fetch_model
28
+ print_methods
29
+ end
30
+
31
+ def url_str
32
+ "#{@http_url}#{api_id}"
33
+ end
34
+
35
+ def load_config
36
+ yml = File.join(Pod::Config.instance.home_dir, 'yapi.yml')
37
+ config = YAML.load_file(yml)
38
+ config.each do |k, v|
39
+ @http_headers << "#{k}=#{v}" if (k.eql?('__wpkreporterwid_') || k.eql?('_yapi_token') || k.eql?('_yapi_uid'))
40
+ end
41
+ @http_url = config['url']
42
+ @config_id = config['id']
43
+ @config_model_pre = config['model_pre']
44
+ @config_model_names = config['model_names']
45
+ @type_trans = config['type_trans']
46
+ end
47
+
48
+ def api_id
49
+ @id || @config_id.to_s
50
+ end
51
+
52
+ def model_pre
53
+ @model_pre_name || @config_model_pre
54
+ end
55
+
56
+ def req_model
57
+ uri = URI.parse(url_str)
58
+ req = Net::HTTP::Get.new(uri)
59
+ req['Cookie'] = @http_headers.join('; ')
60
+ res = Net::HTTP.start(uri.hostname, uri.port) do |http|
61
+ http.request(req)
62
+ end
63
+ puts res.body
64
+ JSON.parse(res.body)
65
+ end
66
+
67
+ def fetch_model
68
+ res_json = req_model
69
+ begin
70
+ puts "\n<===============打印返回数据模型-Begin=====================>\n"
71
+ fetch_res_boy(res_json)
72
+ print_models
73
+ print_models_implementation
74
+ puts "\n<===============打印返回数据模型-End=====================>\n"
75
+ end
76
+ begin
77
+ puts "\n<===============打印请求模型-Begin=====================>\n"
78
+ @models = []
79
+ @model_names = []
80
+ fetch_req_body(res_json)
81
+ print_models
82
+ print_models_implementation
83
+ puts "\n<===============打印请求模型-End=====================>\n"
84
+ end
85
+ end
86
+
87
+ def fetch_res_boy(res_json)
88
+ if res_json && res_json['data']
89
+ @data_json = res_json['data']
90
+ if @data_json['res_body']
91
+ begin
92
+ res_body = JSON.parse(@data_json['res_body'])
93
+ detail_obj = res_body['properties']['detailMsg'] || {}
94
+ detail_obj['name'] = gen_model_name('')
95
+ handle_model(detail_obj)
96
+ rescue => ex
97
+ puts ex
98
+ end
99
+ end
100
+ end
101
+ end
102
+
103
+ def fetch_req_body(res_json)
104
+ if res_json && res_json['data']
105
+ @data_json = res_json['data']
106
+ if @data_json['req_body_other']
107
+ begin
108
+ res_body = JSON.parse(@data_json['req_body_other'])
109
+ res_body['name'] = gen_model_name('')
110
+ handle_model(res_body)
111
+ rescue => ex
112
+ puts ex
113
+ end
114
+ end
115
+ end
116
+ end
117
+
118
+ def gen_model_name(name)
119
+ n = name.gsub(/vo|model|list/i, '').gsub(/(.*)s$/, '\1').gsub(/^\w/) { $&.upcase }
120
+ if n.length <= 0
121
+ n = @config_model_names.detect{ |c| !@model_names.any?{ |n| n.gsub(/#{model_pre}(.*)Model/, '\1').eql?(c) } }
122
+ end
123
+ model_name = "#{model_pre}#{n}Model"
124
+ @model_names << model_name
125
+ model_name
126
+ end
127
+
128
+ def handle_model(model)
129
+ p_type = model['type']
130
+ p_name = model['name']
131
+ p_properties = model['properties']
132
+ p_model = { name: p_name }
133
+
134
+ properties = []
135
+ if p_type.eql?('object')
136
+ p_properties.each do |k, v|
137
+ c_type = @type_trans[v['type']] || v['type']
138
+ c_model = {key: k, type: c_type, description: v['description'], default: ''}
139
+ if v['type'].eql?('object') || v['type'].eql?('array')
140
+ o = v['items'] || v
141
+ o['name'] = gen_model_name(k)
142
+ if v['type'].eql?('array') && v['items']['type'].eql?('string')
143
+ c_model[:type_name] = "NSString"
144
+ else
145
+ c_model[:type_name] = o['name']
146
+ handle_model(o)
147
+ end
148
+ end
149
+ properties << c_model
150
+ end
151
+ p_model[:properties] = properties
152
+ @models << p_model
153
+ elsif p_type.eql?('array')
154
+ t = model['items']
155
+ t['name'] = p_name
156
+ handle_model(t)
157
+ end
158
+ end
159
+
160
+ def print_models
161
+ @models.each do |model|
162
+ model_name = model[:name] || ''
163
+ model_properties = model[:properties]
164
+ puts "@interface #{model_name} : NSObject"
165
+ model_properties.each do |m|
166
+ print_model(m)
167
+ end
168
+ puts "@end\n\n\n"
169
+ end
170
+ end
171
+
172
+ def print_models_implementation
173
+ @models.each do |model|
174
+ puts "@implementation #{model[:name]}"
175
+ str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('NSString') }.map{ |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
176
+ if str && str.length > 0
177
+ puts "+(NSDictionary *)modelContainerPropertyGenericClass {"
178
+ puts " return @{#{str}};"
179
+ puts "}"
180
+ end
181
+ puts "@end\n\n\n"
182
+ end
183
+ end
184
+
185
+ def print_model(m)
186
+ key = m[:key]
187
+ type_name = m[:type_name]
188
+ type = m[:type]
189
+ des = m[:description] || ''
190
+ des.gsub!(/\n/, '')
191
+ default = m[:default]
192
+ puts "///#{des} #{default}"
193
+ if type.eql?('integer')
194
+ puts "@property (nonatomic, assign) NSInteger #{key};"
195
+ elsif type.eql?('cent')
196
+ puts "@property (nonatomic, strong) MLCentNumber *#{key};"
197
+ elsif type.eql?('string')
198
+ puts "@property (nonatomic, copy) NSString *#{key};"
199
+ elsif type.eql?('number')
200
+ puts "@property (nonatomic, strong) NSNumber *#{key};"
201
+ elsif type.eql?('float')
202
+ puts "@property (nonatomic, assign) CGFloat #{key};"
203
+ elsif type.eql?('double')
204
+ puts "@property (nonatomic, assign) double #{key};"
205
+ elsif type.eql?('boolean')
206
+ puts "@property (nonatomic, assign) BOOL #{key};"
207
+ elsif type.eql?('object')
208
+ puts "@property (nonatomic, strong) #{type_name} *#{key};"
209
+ elsif type.eql?('array')
210
+ puts "@property (nonatomic, strong) NSArray<#{type_name} *> *#{key};"
211
+ else
212
+ puts "@property (nonatomic, copy) NSString *#{key};"
213
+ end
214
+ end
215
+
216
+ def print_methods
217
+ puts "\n<===============方法调用=====================>\n"
218
+ puts "/**"
219
+ puts " * #{@data_json['title']} -- #{@data_json['username']}"
220
+ puts " */"
221
+ key_str = @data_json['path'].split('/').map{ |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/){ $&.upcase } }.join('')
222
+ key = "k#{key_str}URL"
223
+ puts "static NSString * const #{key} = @\"#{@data_json['path']}\";"
224
+ puts "\n\n"
225
+ puts "@interface MLParamModel : NSObject"
226
+ @data_json['req_query'].each do |h|
227
+ puts "///#{h['desc']} #{h['example']}"
228
+ puts "@property (nonatomic, copy) NSString *#{h['name']};"
229
+ end
230
+ puts "@end"
231
+ puts "\n\n"
232
+ model = @models.last
233
+ if @data_json['method'].eql?('GET')
234
+ puts " [MLNetworkingManager getWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
235
+ puts " if (response.resultCode == 0 && !response.error){"
236
+ puts " NSDictionary *detailMsg = response.detailMsg"
237
+ puts " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];" if model
238
+ puts " }"
239
+ puts " }];"
240
+ else
241
+ puts " [MLNetworkingManager postWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
242
+ puts " if (response.resultCode == 0 && !response.error){"
243
+ puts " NSDictionary *detailMsg = response.detailMsg"
244
+ puts " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];" if model
245
+ puts " }"
246
+ puts " }];"
247
+ end
248
+ end
249
+ end
250
+ end
251
+ end
252
+ end
@@ -1,5 +1,5 @@
1
1
  module CBin
2
- VERSION = '0.1.16'
2
+ VERSION = '0.1.21'
3
3
  end
4
4
 
5
5
  module Pod
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-aomi-bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - lihaijian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-18 00:00:00.000000000 Z
11
+ date: 2021-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -132,6 +132,7 @@ files:
132
132
  - lib/cocoapods-lhj-bin/command/bin/trans.rb
133
133
  - lib/cocoapods-lhj-bin/command/bin/update.rb
134
134
  - lib/cocoapods-lhj-bin/command/bin/view.rb
135
+ - lib/cocoapods-lhj-bin/command/bin/yapi.rb
135
136
  - lib/cocoapods-lhj-bin/config/config.rb
136
137
  - lib/cocoapods-lhj-bin/config/config_asker.rb
137
138
  - lib/cocoapods-lhj-bin/config/config_builder.rb