cocoapods-byte-panglem 0.0.13
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 +7 -0
- data/Gemfile +13 -0
- data/LICENSE.txt +22 -0
- data/README.md +11 -0
- data/Rakefile +13 -0
- data/cocoapods-byte-panglem.gemspec +25 -0
- data/lib/cocoapods-byte-panglem/analyzer.rb +212 -0
- data/lib/cocoapods-byte-panglem/command.rb +4 -0
- data/lib/cocoapods-byte-panglem/config.rb +174 -0
- data/lib/cocoapods-byte-panglem/gem_version.rb +11 -0
- data/lib/cocoapods-byte-panglem/net.rb +68 -0
- data/lib/cocoapods-byte-panglem/panglem.rb +203 -0
- data/lib/cocoapods-byte-panglem/plugin.rb +2 -0
- data/lib/cocoapods-byte-panglem/recorder.rb +464 -0
- data/lib/cocoapods-byte-panglem/tool.rb +62 -0
- data/lib/cocoapods-byte-panglem.rb +4 -0
- data/lib/cocoapods_plugin.rb +4 -0
- data/spec/command/panglem_spec.rb +12 -0
- data/spec/spec_helper.rb +50 -0
- metadata +125 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 26b854a81df5e6720c7d4811ac2769e670909bfacf64e0dc25d2fc404763c9e6
|
4
|
+
data.tar.gz: 208b20bf28b0d10dd192b34328c593dac9b76cd7714365ef45f8b2cd04b773ff
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 681642db0afe73dbafce4325eef618d2470f402fa08677d7a6479459e69197775db758068e7b827e3c1eee4878c5a58a47b3a9560063035ea3dad836048a9b7e
|
7
|
+
data.tar.gz: '08ef5bb2c679b75bbf7b8bbb744bd24f0853f3fe5e4ef4fc775b78e27527ca43508c5194b0887a709213815fa7f77d612c8cfd5e48d7a85a754c94f0e9a168dd'
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2023 zhangtianhao.1230@bytedance.com <zhangtianhao.1230@bytedance.com>
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cocoapods-byte-panglem/gem_version.rb'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'cocoapods-byte-panglem'
|
8
|
+
spec.version = CocoapodsBytePanglem::VERSION
|
9
|
+
spec.authors = ['zhangtianhao.1230@bytedance.com']
|
10
|
+
spec.email = ['zhangtianhao.1230@bytedance.com']
|
11
|
+
spec.description = %q{A short description of cocoapods-byte-panglem.}
|
12
|
+
spec.summary = %q{A longer description of cocoapods-byte-panglem.}
|
13
|
+
spec.homepage = 'https://github.com/EXAMPLE/cocoapods-byte-panglem'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
# spec.files = Dir['lib/**/*']
|
17
|
+
spec.files = `git ls-files`.split($/)
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
spec.add_dependency "cocoapods", '>= 1.1.1', '< 2.0'
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
23
|
+
spec.add_development_dependency 'rake'
|
24
|
+
spec.add_development_dependency 'highline'
|
25
|
+
end
|
@@ -0,0 +1,212 @@
|
|
1
|
+
##Copyright 2023 ByteDance Ltd. and/or its affiliates
|
2
|
+
##SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
require_relative 'tool'
|
5
|
+
require_relative 'recorder'
|
6
|
+
require 'highline'
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
module PM
|
11
|
+
|
12
|
+
# 处理器
|
13
|
+
#
|
14
|
+
class Analyzer
|
15
|
+
|
16
|
+
def self.resolve_release_target(target, specs)
|
17
|
+
|
18
|
+
is_exist, hash = PM::Lockfile.read_from_path(File.expand_path("#{Pod::Config.instance.installation_root}/Podfile.pangle"))
|
19
|
+
if is_exist
|
20
|
+
## 校验.pangle文件有无改动
|
21
|
+
checksum = hash.delete("RECODER_CHECKSUM")
|
22
|
+
verified_checksum = Digest::SHA1.hexdigest(hash.inspect).encode('UTF-8') if checksum.respond_to?(:encode)
|
23
|
+
if verified_checksum != checksum
|
24
|
+
raise "[cocoapods-byte-panglem][error] Podfile.pangle file verification failed, you should not modify this file, please delete this file, re-execute 'pod iinstall', if you confirm that it has not been modified, please contact us "
|
25
|
+
end
|
26
|
+
result = UpdateResut.from_hash(hash)
|
27
|
+
## 校验Pangle SDK是否符合预期
|
28
|
+
pm_spec = specs.find do |spec|
|
29
|
+
result.sdk_name==Pod::Specification.root_name(spec.spec.name)
|
30
|
+
end
|
31
|
+
if pm_spec.nil?
|
32
|
+
raise "[cocoapods-byte-panglem][error] #{result.sdk_name} not found}"
|
33
|
+
end
|
34
|
+
if pm_spec.spec.version.version != result.sdk_original_version
|
35
|
+
raise "[cocoapods-byte-panglem][error] #{result.sdk_name} version has change(#{result.sdk_original_version}->#{pm_spec.spec.version.version}),After generating the Podfile.panglewe file, you may have made some changes in the podfile, causing the version of Pangle SDK to change. Please change 'use_pangm_sdk_update! :is_release => true
|
36
|
+
',delete':is_release => true' and re-execute 'pod install'"
|
37
|
+
end
|
38
|
+
if result.is_sdk_update
|
39
|
+
title_options = { :verbose_prefix => '-> '.green }
|
40
|
+
Pod::UserInterface.titled_section("[cocoapods-byte-panglem][info] will change pangle sdk version , the current version will change from #{result.sdk_original_version} to #{result.sdk_target_version}", title_options)
|
41
|
+
specs.delete_if{|spec|
|
42
|
+
Pod::Specification.root_name(spec.spec.name) == result.sdk_name && spec.spec.version.version == result.sdk_original_version
|
43
|
+
}
|
44
|
+
result.sdk_list.each{ |spec|
|
45
|
+
specs << Pod::Resolver::ResolverSpecification.new(spec, false, spec.spec_source)
|
46
|
+
}
|
47
|
+
|
48
|
+
if result.is_rely_update
|
49
|
+
specs.delete_if{|spec|
|
50
|
+
Pod::Specification.root_name(spec.spec.name) == result.rely_name && spec.spec.version.version == result.rely_original_version
|
51
|
+
}
|
52
|
+
result.rely_list.each{ |spec|
|
53
|
+
specs << Pod::Resolver::ResolverSpecification.new(spec, false, spec.spec_source)
|
54
|
+
}
|
55
|
+
end
|
56
|
+
end
|
57
|
+
specs.sort_by!{|spec| spec.spec.name}
|
58
|
+
specs
|
59
|
+
else
|
60
|
+
raise "[cocoapods-byte-panglem][error] #{File.expand_path("#{Pod::Config.instance.installation_root}/Podfile.pangle")} not found, please check"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.resolve_last(target, specs)
|
65
|
+
is_update_finish = false
|
66
|
+
sdk_spec = nil
|
67
|
+
adapter_list = []
|
68
|
+
## SDK 场景下不需要
|
69
|
+
if false
|
70
|
+
pm_spec = nil
|
71
|
+
adn_specs = specs.select do |spec|
|
72
|
+
name = spec.spec.name
|
73
|
+
if name == PM::BuildConfig.mediation_name
|
74
|
+
pm_spec = spec
|
75
|
+
target.PM_build_config.PM_info = PM::PMInfo.new(spec.spec.name, spec.spec.version.version)
|
76
|
+
end
|
77
|
+
if PM::Adn_Adapter.is_adapter?(name)
|
78
|
+
adn_note = target.PM_build_config.find_note PM::Adn_Adapter.get_adn name
|
79
|
+
adn_note.adapter_name = name
|
80
|
+
adn_note.adapter_original_version = spec.spec.version.version
|
81
|
+
elsif PM::Adn_Adapter.is_adn?(name)
|
82
|
+
adn_note = target.PM_build_config.find_note name
|
83
|
+
adn_note.adn_version = spec.spec.version.version
|
84
|
+
end
|
85
|
+
target.PM_build_config.is_adn_update_or_detect?(name)
|
86
|
+
end
|
87
|
+
# raise " error: Ads-Mediation-CN not found,please check" if pm_spec == nil
|
88
|
+
adn_info_list = adn_specs.map{|adn_spec|
|
89
|
+
adn_note = target.PM_build_config.find_note adn_spec.spec.name
|
90
|
+
adn_note.adn_version = adn_spec.spec.version.version
|
91
|
+
{"adn_name" => PM::Adn_Adapter.get_adn_abbreviation(adn_spec.spec.name),"adn_version" => adn_spec.spec.version.version}
|
92
|
+
# {"adn_name" => "ks","adn_version" => adn_spec.spec.version.version}
|
93
|
+
|
94
|
+
# {"adn_name" => adn_spec.spec.name,"adn_version" => adn_spec.spec.version.version, "auto_update" => adn_note.auto_update, "load_detect" => adn_note.load_detect, "adapter_name" => adn_note.adapter_name, "adapter_version" => adn_note.adapter_original_version}
|
95
|
+
} if pm_spec
|
96
|
+
end
|
97
|
+
specs.map do |spec|
|
98
|
+
if PM::MapRelations.is_sdk?(spec.spec.name)
|
99
|
+
sdk_spec = spec
|
100
|
+
elsif PM::MapRelations.is_adapter?(spec.spec.name)
|
101
|
+
map = {}
|
102
|
+
map["adapter"] = PM::MapRelations.get_adapter_from_adn_abbreviation(spec.spec.name)
|
103
|
+
map["adapter_version"] = spec.spec.version.version
|
104
|
+
adapter_list << map
|
105
|
+
else
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
raise "[cocoapods-byte-panglem][error] Ads-Global not found,please add" if sdk_spec == nil
|
110
|
+
PM::Recorder.instance.adapter_list = adapter_list
|
111
|
+
is_exist, wish_info = read_user_wishes
|
112
|
+
response_data = request_adapter sdk_spec.spec.version.version ,adapter_list, wish_info
|
113
|
+
result = PM::SpecificationInfo.get_specfication response_data, sdk_spec
|
114
|
+
## 1. 判断sdk是否要更新, YES 则将旧的全部删除, 新的全部挂载
|
115
|
+
## 2. 判断rely 是否要更新, YES 则同上
|
116
|
+
if result.is_sdk_update
|
117
|
+
## 这里截断,询问是否更新
|
118
|
+
cli = HighLine.new
|
119
|
+
is_allow_update =cli.ask("[cocoapods-byte-panglem][info] Whether to allow automatic upgrade of pangle sdk(#{result.sdk_original_version} to #{result.sdk_target_version}),yes/no?")
|
120
|
+
# is_allow_update = 'yes'
|
121
|
+
if is_allow_update == 'yes' or is_allow_update == 'y' or is_allow_update == 'Y'
|
122
|
+
title_options = { :verbose_prefix => '-> '.green }
|
123
|
+
Pod::UserInterface.titled_section("[cocoapods-byte-panglem][info] will change pangle sdk version , the current version will change from #{result.sdk_original_version} to #{result.sdk_target_version}", title_options)
|
124
|
+
specs.delete_if{|spec|
|
125
|
+
Pod::Specification.root_name(spec.spec.name) == result.sdk_name && spec.spec.version.version == result.sdk_original_version
|
126
|
+
}
|
127
|
+
result.sdk_list.each{ |spec|
|
128
|
+
specs << Pod::Resolver::ResolverSpecification.new(spec, false, spec.spec_source)
|
129
|
+
}
|
130
|
+
|
131
|
+
if result.is_rely_update
|
132
|
+
specs.delete_if{|spec|
|
133
|
+
Pod::Specification.root_name(spec.spec.name) == result.rely_name && spec.spec.version.version == result.rely_original_version
|
134
|
+
}
|
135
|
+
result.rely_list.each{ |spec|
|
136
|
+
specs << Pod::Resolver::ResolverSpecification.new(spec, false, spec.spec_source)
|
137
|
+
}
|
138
|
+
end
|
139
|
+
specs.sort_by!{|spec| spec.spec.name}
|
140
|
+
is_update_finish = true
|
141
|
+
request_track result.sdk_original_version, result.sdk_target_version, result.sdk_target_version, response_data["code"], response_data["message"]
|
142
|
+
|
143
|
+
else
|
144
|
+
wish_info = {"no_auto_update"=>true,"timestamp" =>Time.now.to_i}
|
145
|
+
recode_user_wishes wish_info
|
146
|
+
end
|
147
|
+
end
|
148
|
+
is_update_finish
|
149
|
+
end
|
150
|
+
|
151
|
+
def self.recode_user_wishes(wish_info)
|
152
|
+
PM::Lockfile.new(wish_info.to_hash).write_to_disk(File.expand_path("#{Pod::Config.instance.installation_root}/pangle.temp"))
|
153
|
+
end
|
154
|
+
|
155
|
+
def self.read_user_wishes()
|
156
|
+
PM::Lockfile.read_from_path(File.expand_path("#{Pod::Config.instance.installation_root}/pangle.temp"))
|
157
|
+
end
|
158
|
+
|
159
|
+
def self.delete_invalid_adapters(target, specs)
|
160
|
+
un_den_adn_list= PM::Adn_Adapter.get_all_adn - specs.map(&:spec).map(&:name).map do |item|
|
161
|
+
PM::Adn_Adapter.is_adn?(item) ? Pod::Specification.root_name(item) : nil
|
162
|
+
end.compact.uniq
|
163
|
+
un_den_adapter_list = []
|
164
|
+
un_den_adapter_list = un_den_adn_list.map {|item|
|
165
|
+
PM::Adn_Adapter.get_adapter item
|
166
|
+
}
|
167
|
+
specs.delete_if { |spec|
|
168
|
+
result = un_den_adapter_list.include?(Pod::Specification.root_name(spec.spec.name)) && !PM::Recorder.instance.global_note.auto_load_whitelist.keys.include?(Pod::Specification.root_name(spec.spec.name))
|
169
|
+
if result
|
170
|
+
title_options = { :verbose_prefix => '-> '.red}
|
171
|
+
Pod::UserInterface.titled_section("remove #{spec.spec.name}", title_options)
|
172
|
+
end
|
173
|
+
result
|
174
|
+
}
|
175
|
+
end
|
176
|
+
|
177
|
+
def self.request_adapter(version, adapter_list, wish_info = nil)
|
178
|
+
|
179
|
+
package_name = PM::MProject.get_package_name
|
180
|
+
body = Hash["package_name"=>package_name, "pangle_sdk_version"=>version, "os_type"=>"ios","adapter"=>adapter_list]
|
181
|
+
if wish_info
|
182
|
+
body["media_prefer"] = wish_info
|
183
|
+
end
|
184
|
+
data = PM::Network.request_adapter(body,PM::Recorder.instance.use_service_local)
|
185
|
+
data
|
186
|
+
end
|
187
|
+
|
188
|
+
def self.request_track(old_ad_sdk_version, new_ad_sdk_version, target_ad_sdk_version, code, message)
|
189
|
+
package_name = PM::MProject.get_package_name
|
190
|
+
plugin_version = CocoapodsBytePanglem::Version.version
|
191
|
+
event_extra = Hash["old_ad_sdk_version" => old_ad_sdk_version, "new_ad_sdk_version" => new_ad_sdk_version, "target_ad_sdk_version" => target_ad_sdk_version, "package_name" => package_name,"plugin_version"=>plugin_version,"error_code"=>code,"error_msg"=>message].to_json
|
192
|
+
stats_list = []
|
193
|
+
stats_list << Hash["event_extra" => event_extra, "is_ad_event"=> 1, "type"=>"update_version_code","os"=>"ios"]
|
194
|
+
|
195
|
+
message = Hash["ts"=>Time.now.to_i,"stats_list"=>stats_list].to_json
|
196
|
+
body = Hash["message"=>message,"cypher"=>0]
|
197
|
+
PM::Network.request_track(body,old_ad_sdk_version)
|
198
|
+
end
|
199
|
+
|
200
|
+
def self.is_update?(value)
|
201
|
+
is_auto_update?(value) || is_stable_update?(value)
|
202
|
+
end
|
203
|
+
|
204
|
+
def self.is_auto_update?(value)
|
205
|
+
value == PM::BuildConfig.update_value_last_version
|
206
|
+
end
|
207
|
+
|
208
|
+
def self.is_stable_update?(value)
|
209
|
+
value == PM::BuildConfig.update_value_last_stable_version
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
##Copyright 2023 ByteDance Ltd. and/or its affiliates
|
2
|
+
##SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
|
5
|
+
module PM
|
6
|
+
|
7
|
+
# 配置项key
|
8
|
+
#
|
9
|
+
class BuildConfig
|
10
|
+
|
11
|
+
def self.get_load_key
|
12
|
+
:gm_auto_load
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.get_update_key
|
16
|
+
:gm_auto_update
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.get_load_detect_key
|
20
|
+
:gm_load_detect
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.get_load_whitelist_key
|
24
|
+
:auto_load_whitelist
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.get_is_release_key
|
28
|
+
:is_release
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.get_use_service_local_key
|
32
|
+
:use_service_local
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.update_value_last_version
|
36
|
+
return "last" ## 最新版本
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.update_value_last_stable_version
|
40
|
+
return "last_stable" ## 最新稳定版本
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.update_value_non
|
44
|
+
return "not_update" ## 不自动更新
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.mediation_name
|
48
|
+
return "Ads-Global"
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.get_all_config
|
52
|
+
[BuildConfig.get_update_key,BuildConfig.get_load_key,BuildConfig.get_load_detect_key]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# admob:
|
57
|
+
# IS:IronSourcePangleAdapter
|
58
|
+
# max:
|
59
|
+
# tradplus:
|
60
|
+
# pod 'TradPlusAdSDK/PangleAdapter', '9.9.0'
|
61
|
+
|
62
|
+
# topon:
|
63
|
+
|
64
|
+
# pod '','6.2.66'
|
65
|
+
|
66
|
+
# adn mediation adapter 三者之间的映射关系, mediation后续会用到
|
67
|
+
class MapRelations
|
68
|
+
|
69
|
+
ADNADAPTER = Hash[
|
70
|
+
## sdk 不需要
|
71
|
+
# 'Ads-CN' => 'ABUAdCsjAdapter',
|
72
|
+
'UnityAds' => 'ABUAdUnityAdapter',
|
73
|
+
'Google-Mobile-Ads-SDK'=> 'ABUAdAdmobAdapter',
|
74
|
+
'BaiduMobAdSDK'=> 'ABUAdBaiduAdapter',
|
75
|
+
'GDTMobSDK'=> 'ABUAdGdtAdapter',
|
76
|
+
'SigmobAd-iOS'=> 'ABUAdSigmobAdapter',
|
77
|
+
'KSAdSDK'=> 'ABUAdKsAdapter',
|
78
|
+
'KlevinAdSDK'=> 'ABUAdKlevinAdapter',
|
79
|
+
'MintegralAdSDK'=> 'ABUAdMintegralAdapter',
|
80
|
+
].freeze
|
81
|
+
|
82
|
+
## sdk 被接入adapter的映射关系
|
83
|
+
SERVERMAPADAPTER = Hash[
|
84
|
+
|
85
|
+
'GoogleMobileAdsMediationPangle'=> 'admob',
|
86
|
+
'IronSourcePangleAdapter'=> 'ironsource',
|
87
|
+
'AppLovinMediationByteDanceAdapter'=> 'max',
|
88
|
+
'TradPlusAdSDK/PangleAdapter'=> 'tradplus',
|
89
|
+
'AnyThinkiOS/AnyThinkPangleAdapter'=> 'topon',
|
90
|
+
].freeze
|
91
|
+
|
92
|
+
SERVERMAPADN = Hash[
|
93
|
+
'UnityAds' => 'unity',
|
94
|
+
'Google-Mobile-Ads-SDK'=> 'admob',
|
95
|
+
'BaiduMobAdSDK'=> 'baidu',
|
96
|
+
'GDTMobSDK'=> 'gdt',
|
97
|
+
'SigmobAd-iOS'=> 'sigmob',
|
98
|
+
'KSAdSDK'=> 'ks',
|
99
|
+
'KlevinAdSDK'=> 'klevin',
|
100
|
+
'MintegralAdSDK'=> 'mtg',
|
101
|
+
].freeze
|
102
|
+
|
103
|
+
SDKNAME = "Ads-Global".freeze
|
104
|
+
SDKRELY = "BURelyFoundation_Global".freeze
|
105
|
+
SHOULD_REMOVE = [SDKNAME,SDKRELY]
|
106
|
+
|
107
|
+
def self.is_adn?(name)
|
108
|
+
name == SDKNAME
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.get_adn_abbreviation(name)
|
112
|
+
SERVERMAPADN[name]
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.get_adapter_from_adn_abbreviation(name)
|
116
|
+
SERVERMAPADAPTER[name]
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.is_adn?(name)
|
120
|
+
ADNADAPTER.has_key?(name)
|
121
|
+
end
|
122
|
+
|
123
|
+
def self.is_sdk?(name)
|
124
|
+
SDKNAME==name
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.is_adapter?(name)
|
128
|
+
SERVERMAPADAPTER.has_key?(name)
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.should_remove_requirements?(name)
|
132
|
+
SHOULD_REMOVE.include?(name)
|
133
|
+
end
|
134
|
+
|
135
|
+
def self.get_adapter(name)
|
136
|
+
adapter = ''
|
137
|
+
if is_adn?(name)
|
138
|
+
adapter = ADNADAPTER[name]
|
139
|
+
end
|
140
|
+
adapter
|
141
|
+
end
|
142
|
+
|
143
|
+
def self.get_adn(name)
|
144
|
+
adn_name = ''
|
145
|
+
if is_adapter?(name)
|
146
|
+
## .index 在调试时候会报错
|
147
|
+
ADNADAPTER.select{ |key, value|
|
148
|
+
if value == name
|
149
|
+
adn_name = key
|
150
|
+
break
|
151
|
+
end
|
152
|
+
true
|
153
|
+
}
|
154
|
+
end
|
155
|
+
adn_name
|
156
|
+
end
|
157
|
+
|
158
|
+
def self.get_all_adapter
|
159
|
+
ADNADAPTER.values
|
160
|
+
end
|
161
|
+
|
162
|
+
def self.get_all_adn
|
163
|
+
ADNADAPTER.keys
|
164
|
+
end
|
165
|
+
|
166
|
+
def self.get_sdk
|
167
|
+
SDKNAME
|
168
|
+
end
|
169
|
+
|
170
|
+
|
171
|
+
end
|
172
|
+
|
173
|
+
|
174
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
##Copyright 2023 ByteDance Ltd. and/or its affiliates
|
2
|
+
##SPDX-License-Identifier: MIT
|
3
|
+
|
4
|
+
require 'uri'
|
5
|
+
require 'net/http'
|
6
|
+
require 'net/https'
|
7
|
+
require 'json'
|
8
|
+
|
9
|
+
module PM
|
10
|
+
# 网络请求
|
11
|
+
class Network
|
12
|
+
## post请求
|
13
|
+
def Network.post (url,body)
|
14
|
+
# puts "start net request:#{body}"
|
15
|
+
uri = URI.parse(url)
|
16
|
+
https = Net::HTTP.new(uri.host,uri.port)
|
17
|
+
https.use_ssl = true ## 正式时请打开
|
18
|
+
request = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})
|
19
|
+
# request["Cookie"]="__union_admin_sess_cookie=232301_noduimkpdwrbyrkr1qih; _ssa_userphone=; _ssa_username=zhangtianhao.1230"
|
20
|
+
request.body = body.to_json
|
21
|
+
if PM::Recorder.instance.is_debug
|
22
|
+
puts "[cocoapods-byte-panglem][debug] 网络请求信息: #{body.to_json}, url:#{url}"
|
23
|
+
end
|
24
|
+
res = https.request(request)
|
25
|
+
|
26
|
+
if res.code == "200"
|
27
|
+
data = JSON.parse(res.body)
|
28
|
+
if PM::Recorder.instance.is_debug
|
29
|
+
puts "[cocoapods-byte-panglem][debug] 网络返回信息: #{data}"
|
30
|
+
end
|
31
|
+
return data
|
32
|
+
else
|
33
|
+
## 网络请求异常的提示
|
34
|
+
puts "[cocoapods-byte-panglem][error] response code = #{res.code}, message = #{res.message}"
|
35
|
+
end
|
36
|
+
nil
|
37
|
+
end
|
38
|
+
|
39
|
+
def Network.request_adapter(body, is_debug = false)
|
40
|
+
if is_debug
|
41
|
+
url = URI.parse('http://localhost:8080/index.html')
|
42
|
+
http = Net::HTTP.new(url.host, url.port)
|
43
|
+
request = Net::HTTP::Get.new(url.path, initheader = {'Content-Type' =>'application/json'})
|
44
|
+
response = http.request(request)
|
45
|
+
if PM::Recorder.instance.is_debug
|
46
|
+
puts "[cocoapods-byte-panglem][debug] 网络请求信息: #{body.to_json}, url:#{url}"
|
47
|
+
end
|
48
|
+
data = JSON.parse(response.body)
|
49
|
+
if PM::Recorder.instance.is_debug
|
50
|
+
puts "[cocoapods-byte-panglem][debug] 网络返回信息: #{data}"
|
51
|
+
end
|
52
|
+
|
53
|
+
data
|
54
|
+
else
|
55
|
+
data = post("https://open-api.pangleglobal.com/union/media/open_api/auto_upgrade/config",body)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def Network.request_track(body, version_code)
|
60
|
+
## https://api16-access-sg.pangle.io/api/ad/union/sdk/stats/batch/
|
61
|
+
url = "https://api16-access-sg.pangle.io/api/ad/union/sdk/stats/batch/"+"?aid=5000546&version_code=#{version_code}&device_platform=iphone"
|
62
|
+
data = post(url,body)
|
63
|
+
data
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
end
|