cocoapods-aomi-bin 0.1.17 → 0.1.18

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: 49133e2b9dbd7b9dc71db8acab55373cdff0edc852c389d77807af522c1626dd
4
- data.tar.gz: 42f7f78c46513a26710835aa834d1e05b67e7ada7b524c87bda676e0912dd348
3
+ metadata.gz: bd8c44d20bbf16495837fc21e0473aaf2060431d581740e4890d8430c2dde61a
4
+ data.tar.gz: 90329076ca43ca7b8636a25fa13313a3af1e1d923995313a58c2246d8f256ab6
5
5
  SHA512:
6
- metadata.gz: e71bf10b411685698e9f2f42ae0d4d252112cba5c63c245395aa30a66cafa44e81a8984ab67b9a31ad68aabf9a52c11f7056590bd9f6e7898c2281fef6c6a658
7
- data.tar.gz: 158c7b60ee4561488d8ad22c5e4a01bc6bdecc79cf4a37e87a3ca8362e6c541506edc29b3cbd07e98eb707990017036eccd71169e206be5680e7e27054a32c4c
6
+ metadata.gz: ec55a2ad458dd66862271722a285e4bdffc774f9ef66a981834c54b0c00c61e60e136c6f6a25c933caf1fe40307635b02be6c31660760325389972a201316abf
7
+ data.tar.gz: 707d281f506be358883240885a13a81de2574f03276440aab7d517e657a8fa05f5580f7236c7f564f508353627e6c4b3f9ca1089ba76689508e986aa89f6b731
@@ -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!
@@ -0,0 +1,221 @@
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_models
29
+ print_models_implementation
30
+ print_methods
31
+ end
32
+
33
+ def url_str
34
+ "#{@http_url}#{api_id}"
35
+ end
36
+
37
+ def load_config
38
+ yml = File.join(Pod::Config.instance.home_dir, 'yapi.yml')
39
+ config = YAML.load_file(yml)
40
+ config.each do |k, v|
41
+ @http_headers << "#{k}=#{v}" if (k.eql?('__wpkreporterwid_') || k.eql?('_yapi_token') || k.eql?('_yapi_uid'))
42
+ end
43
+ @http_url = config['url']
44
+ @config_id = config['id']
45
+ @config_model_pre = config['model_pre']
46
+ @config_model_names = config['model_names']
47
+ @type_trans = config['type_trans']
48
+ end
49
+
50
+ def api_id
51
+ @id || @config_id.to_s
52
+ end
53
+
54
+ def model_pre
55
+ @model_pre_name || @config_model_pre
56
+ end
57
+
58
+ def req_model
59
+ uri = URI.parse(url_str)
60
+ req = Net::HTTP::Get.new(uri)
61
+ req['Cookie'] = @http_headers.join('; ')
62
+ res = Net::HTTP.start(uri.hostname, uri.port) do |http|
63
+ http.request(req)
64
+ end
65
+ puts res.body
66
+ JSON.parse(res.body)
67
+ end
68
+
69
+ def fetch_model
70
+ res_json = req_model
71
+ if res_json && res_json['data']
72
+ @data_json = res_json['data']
73
+ if @data_json['res_body']
74
+ begin
75
+ res_body = JSON.parse(@data_json['res_body'])
76
+ detail_obj = res_body['properties']['detailMsg'] || {}
77
+ detail_obj['name'] = gen_model_name('')
78
+ handle_model(detail_obj)
79
+ rescue => ex
80
+ puts ex
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ def gen_model_name(name)
87
+ n = name.gsub(/vo|model|list/i, '').gsub(/(.*)s$/, '\1').gsub(/^\w/) { $&.upcase }
88
+ if n.length <= 0
89
+ n = @config_model_names.detect{ |c| !@model_names.any?{ |n| n.gsub(/#{model_pre}(.*)Model/, '\1').eql?(c) } }
90
+ end
91
+ model_name = "#{model_pre}#{n}Model"
92
+ @model_names << model_name
93
+ model_name
94
+ end
95
+
96
+ def handle_model(model)
97
+ p_type = model['type']
98
+ p_name = model['name']
99
+ p_properties = model['properties']
100
+ p_model = { name: p_name }
101
+
102
+ properties = []
103
+ if p_type.eql?('object')
104
+ p_properties.each do |k, v|
105
+ c_type = @type_trans[v['type']] || v['type']
106
+ c_model = {key: k, type: c_type, description: v['description'], default: ''}
107
+ if v['type'].eql?('object') || v['type'].eql?('array')
108
+ o = v['items'] || v
109
+ o['name'] = gen_model_name(k)
110
+ if v['type'].eql?('array') && v['items']['type'].eql?('string')
111
+ c_model[:type_name] = "NSString"
112
+ else
113
+ c_model[:type_name] = o['name']
114
+ handle_model(o)
115
+ end
116
+ end
117
+ properties << c_model
118
+ end
119
+ p_model[:properties] = properties
120
+ @models << p_model
121
+ elsif p_type.eql?('array')
122
+ t = model['items']
123
+ t['name'] = p_name
124
+ handle_model(t)
125
+ end
126
+ end
127
+
128
+ def print_models
129
+ puts "\n<===============打印模型=====================>\n"
130
+ @models.each do |model|
131
+ model_name = model[:name] || ''
132
+ model_properties = model[:properties]
133
+ puts "@interface #{model_name} : NSObject"
134
+ model_properties.each do |m|
135
+ print_model(m)
136
+ end
137
+ puts "@end\n\n\n"
138
+ end
139
+ end
140
+
141
+ def print_models_implementation
142
+ @models.each do |model|
143
+ puts "@implementation #{model[:name]}"
144
+ str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('NSString') }.map{ |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
145
+ if str && str.length > 0
146
+ puts "+(NSDictionary *)modelContainerPropertyGenericClass {"
147
+ puts " return @{#{str}};"
148
+ puts "}"
149
+ end
150
+ puts "@end\n\n\n"
151
+ end
152
+ end
153
+
154
+ def print_model(m)
155
+ key = m[:key]
156
+ type_name = m[:type_name]
157
+ type = m[:type]
158
+ des = m[:description] || ''
159
+ des.gsub!(/\n/, '')
160
+ default = m[:default]
161
+ puts "///#{des} #{default}"
162
+ if type.eql?('integer')
163
+ puts "@property (nonatomic, assign) NSInteger #{key};"
164
+ elsif type.eql?('cent')
165
+ puts "@property (nonatomic, strong) MLCentNumber *#{key};"
166
+ elsif type.eql?('string')
167
+ puts "@property (nonatomic, copy) NSString *#{key};"
168
+ elsif type.eql?('number')
169
+ puts "@property (nonatomic, strong) NSNumber *#{key};"
170
+ elsif type.eql?('float')
171
+ puts "@property (nonatomic, assign) CGFloat #{key};"
172
+ elsif type.eql?('double')
173
+ puts "@property (nonatomic, assign) double #{key};"
174
+ elsif type.eql?('boolean')
175
+ puts "@property (nonatomic, assign) BOOL #{key};"
176
+ elsif type.eql?('object')
177
+ puts "@property (nonatomic, strong) #{type_name} *#{key};"
178
+ elsif type.eql?('array')
179
+ puts "@property (nonatomic, strong) NSArray<#{type_name} *> *#{key};"
180
+ else
181
+ puts "@property (nonatomic, copy) NSString *#{key};"
182
+ end
183
+ end
184
+
185
+ def print_methods
186
+ puts "\n<===============方法调用=====================>\n"
187
+ puts "/**"
188
+ puts " * #{@data_json['title']} -- #{@data_json['username']}"
189
+ puts " */"
190
+ key_str = @data_json['path'].split('/').map{ |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/){ $&.upcase } }.join('')
191
+ key = "k#{key_str}URL"
192
+ puts "static NSString * const #{key} = @\"#{@data_json['path']}\";"
193
+ puts "\n\n"
194
+ puts "@interface MLParamModel : NSObject"
195
+ @data_json['req_headers'].each do |h|
196
+ puts "///#{h['desc']} #{h['value']}"
197
+ puts "@property (nonatomic, copy) NSString *#{h['name']}"
198
+ end
199
+ puts "@end"
200
+ puts "\n\n"
201
+ model = @models.last
202
+ if @data_json['method'].eql?('GET')
203
+ puts " [MLNetworkingManager getWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
204
+ puts " if (response.resultCode == 0 && !response.error){"
205
+ puts " NSDictionary *detailMsg = response.detailMsg"
206
+ puts " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];"
207
+ puts " }"
208
+ puts " }];"
209
+ else
210
+ puts " [MLNetworkingManager postWithUrl:#{key} params:nil response:^(MLResponseMessage *responseMessage) {"
211
+ puts " if (response.resultCode == 0 && !response.error){"
212
+ puts " NSDictionary *detailMsg = response.detailMsg"
213
+ puts " #{model[:name]} *model = [#{model[:name]} yy_modelWithDictionary:detailMsg];"
214
+ puts " }"
215
+ puts " }];"
216
+ end
217
+ end
218
+ end
219
+ end
220
+ end
221
+ end
@@ -1,5 +1,5 @@
1
1
  module CBin
2
- VERSION = '0.1.17'
2
+ VERSION = '0.1.18'
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.17
4
+ version: 0.1.18
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-23 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