fastlane-plugin-huawei_appgallery_connect 1.0.27 → 1.0.29
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 +4 -4
- data/README.md +11 -0
- data/lib/fastlane/plugin/huawei_appgallery_connect/actions/huawei_appgallery_connect_set_gms_dependency.rb +75 -0
- data/lib/fastlane/plugin/huawei_appgallery_connect/helper/huawei_appgallery_connect_helper.rb +53 -12
- data/lib/fastlane/plugin/huawei_appgallery_connect/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 173402f664ca90b6a05b0f8d61e4b844ab8ff929f420bf45ae889832153e354d
|
4
|
+
data.tar.gz: 44c91af71dc9152b9a35126a6702e220c7c91227d981cf5babdde6af32120d72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 798db4979efd1a8e42920a73463b931947d7e5bc20cbccceead219bdf5112250ccd53bf62d16c962b82c1fcdd96559bad6b63480751b1dde265fcc34b7b4770c
|
7
|
+
data.tar.gz: 76f08835134cf11d4abd1eac939608fd03f79536a35577c3518dabfab6c35fd821f2ea7bc5cdbb5a4e1592b2a227c96cc6f685ec30ff120ca1009a20a25668bc
|
data/README.md
CHANGED
@@ -102,6 +102,17 @@ huawei_appgallery_connect_update_app_localization(
|
|
102
102
|
)
|
103
103
|
```
|
104
104
|
|
105
|
+
To update the GMS dependency of the app, use the following action
|
106
|
+
|
107
|
+
```
|
108
|
+
huawei_appgallery_connect_set_gms_dependency(
|
109
|
+
client_id: "<CLIENT_ID>",
|
110
|
+
client_secret: "<CLIENT_SECRET>",
|
111
|
+
app_id: "<APP_ID>",
|
112
|
+
gms_dependency: 1 #Indicates whether an app depends on GMS. 1: Yes, 0: No
|
113
|
+
)
|
114
|
+
```
|
115
|
+
|
105
116
|
Your folder structure for applying multiple languages for the metadata should look like this:
|
106
117
|
|
107
118
|
```
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'fastlane/action'
|
2
|
+
require_relative '../helper/huawei_appgallery_connect_helper'
|
3
|
+
|
4
|
+
module Fastlane
|
5
|
+
module Actions
|
6
|
+
class HuaweiAppgalleryConnectSetGmsDependencyAction < Action
|
7
|
+
|
8
|
+
def self.run(params)
|
9
|
+
token = Helper::HuaweiAppgalleryConnectHelper.get_token(params[:client_id], params[:client_secret])
|
10
|
+
|
11
|
+
if token.nil?
|
12
|
+
UI.message("Cannot retrieve token, please check your client ID and client secret")
|
13
|
+
else
|
14
|
+
Helper::HuaweiAppgalleryConnectHelper.set_gms_dependency(token,
|
15
|
+
params[:client_id],
|
16
|
+
params[:app_id],
|
17
|
+
params[:gms_dependency]
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.description
|
23
|
+
"Huawei AppGallery Connect Plugin"
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.authors
|
27
|
+
["Shreejan Shrestha"]
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.return_value
|
31
|
+
# If your method provides a return value, you can describe here what it does
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.details
|
35
|
+
# Optional:
|
36
|
+
"Set GMS Dependency"
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.available_options
|
40
|
+
[
|
41
|
+
FastlaneCore::ConfigItem.new(key: :client_id,
|
42
|
+
env_name: "HUAWEI_APPGALLERY_CONNECT_CLIENT_ID",
|
43
|
+
description: "Huawei AppGallery Connect Client ID",
|
44
|
+
optional: false,
|
45
|
+
type: String),
|
46
|
+
|
47
|
+
FastlaneCore::ConfigItem.new(key: :client_secret,
|
48
|
+
env_name: "HUAWEI_APPGALLERY_CONNECT_CLIENT_SECRET",
|
49
|
+
description: "Huawei AppGallery Connect Client Secret",
|
50
|
+
optional: false,
|
51
|
+
type: String),
|
52
|
+
|
53
|
+
FastlaneCore::ConfigItem.new(key: :app_id,
|
54
|
+
env_name: "HUAWEI_APPGALLERY_CONNECT_APP_ID",
|
55
|
+
description: "Huawei AppGallery Connect App ID",
|
56
|
+
optional: false,
|
57
|
+
type: String),
|
58
|
+
|
59
|
+
FastlaneCore::ConfigItem.new(key: :gms_dependency,
|
60
|
+
env_name: "HUAWEI_APPGALLERY_CONNECT_GMS_DEPENDENCY",
|
61
|
+
description: "GMS Dependency of the app. (0 for no, 1 for yes)",
|
62
|
+
optional: false,
|
63
|
+
type: Integer),
|
64
|
+
|
65
|
+
]
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.is_supported?(platform)
|
69
|
+
[:android].include?(platform)
|
70
|
+
true
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/lib/fastlane/plugin/huawei_appgallery_connect/helper/huawei_appgallery_connect_helper.rb
CHANGED
@@ -112,11 +112,14 @@ module Fastlane
|
|
112
112
|
responseData["success"] = false
|
113
113
|
responseData["code"] = 0
|
114
114
|
|
115
|
+
file_size_in_bytes = File.size(apk_path.to_s)
|
116
|
+
sha256 = Digest::SHA256.file(apk_path).hexdigest
|
117
|
+
|
115
118
|
if(is_aab)
|
116
|
-
uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/upload-url?appId=#{app_id}&suffix=aab")
|
119
|
+
uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/upload-url/for-obs?appId=#{app_id}&fileName=release.aab&contentLength=#{file_size_in_bytes}&suffix=aab")
|
117
120
|
upload_filename = "release.aab"
|
118
121
|
else
|
119
|
-
uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/upload-url?appId=#{app_id}&suffix=apk")
|
122
|
+
uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/upload-url/for-obs?appId=#{app_id}&fileName=release.apk&contentLength=#{file_size_in_bytes}&suffix=apk")
|
120
123
|
upload_filename = "release.apk"
|
121
124
|
end
|
122
125
|
|
@@ -137,32 +140,40 @@ module Fastlane
|
|
137
140
|
|
138
141
|
result_json = JSON.parse(response.body)
|
139
142
|
|
140
|
-
if result_json['
|
141
|
-
UI.
|
143
|
+
if result_json['urlInfo']['url'].nil?
|
144
|
+
UI.message('Cannot obtain upload url')
|
145
|
+
UI.user_error!(response.body)
|
146
|
+
|
142
147
|
responseData["success"] = false
|
143
148
|
return responseData
|
144
149
|
else
|
145
150
|
UI.important('Uploading app')
|
146
151
|
# Upload App
|
147
152
|
boundary = "755754302457647"
|
148
|
-
uri = URI(result_json['
|
153
|
+
uri = URI(result_json['urlInfo']['url'])
|
149
154
|
# uri = URI("http://localhost/dashboard/test")
|
150
155
|
http = Net::HTTP.new(uri.host, uri.port)
|
151
156
|
http.use_ssl = true
|
152
|
-
request = Net::HTTP::
|
157
|
+
request = Net::HTTP::Put.new(uri)
|
158
|
+
request["Authorization"] = result_json['urlInfo']['headers']['Authorization']
|
159
|
+
request["Content-Type"] = result_json['urlInfo']['headers']['Content-Type']
|
160
|
+
request["user-agent"] = result_json['urlInfo']['headers']['user-agent']
|
161
|
+
request["Host"] = result_json['urlInfo']['headers']['Host']
|
162
|
+
request["x-amz-date"] = result_json['urlInfo']['headers']['x-amz-date']
|
163
|
+
request["x-amz-content-sha256"] = result_json['urlInfo']['headers']['x-amz-content-sha256']
|
153
164
|
|
154
|
-
|
155
|
-
request.
|
165
|
+
request.body = File.read(apk_path.to_s)
|
166
|
+
request.content_type = 'application/octet-stream'
|
156
167
|
|
157
168
|
result = http.request(request)
|
158
169
|
if !result.kind_of? Net::HTTPSuccess
|
170
|
+
UI.user_error!(result.body)
|
159
171
|
UI.user_error!("Cannot upload app, please check API Token / Permissions (status code: #{result.code})")
|
160
172
|
responseData["success"] = false
|
161
173
|
return responseData
|
162
174
|
end
|
163
|
-
result_json = JSON.parse(result.body)
|
164
175
|
|
165
|
-
if
|
176
|
+
if result.code.to_i == 200
|
166
177
|
UI.success('Upload app to AppGallery Connect successful')
|
167
178
|
UI.important("Saving app information")
|
168
179
|
|
@@ -178,8 +189,8 @@ module Fastlane
|
|
178
189
|
data = {fileType: 5, files: [{
|
179
190
|
|
180
191
|
fileName: upload_filename,
|
181
|
-
fileDestUrl: result_json['
|
182
|
-
size: result_json['result']['UploadFileRsp']['fileInfoList'][0]['size'].to_s
|
192
|
+
fileDestUrl: result_json['urlInfo']['objectId']
|
193
|
+
# size: result_json['result']['UploadFileRsp']['fileInfoList'][0]['size'].to_s
|
183
194
|
|
184
195
|
}] }.to_json
|
185
196
|
|
@@ -369,6 +380,36 @@ module Fastlane
|
|
369
380
|
end
|
370
381
|
end
|
371
382
|
end
|
383
|
+
|
384
|
+
def self.set_gms_dependency(token, client_id, app_id, gms_dependency)
|
385
|
+
UI.message("Setting GMS Dependency")
|
386
|
+
|
387
|
+
uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/properties/gms?appId=#{app_id}")
|
388
|
+
|
389
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
390
|
+
http.use_ssl = true
|
391
|
+
request = Net::HTTP::Put.new(uri.request_uri)
|
392
|
+
request["client_id"] = client_id
|
393
|
+
request["Authorization"] = "Bearer #{token}"
|
394
|
+
request["Content-Type"] = "application/json"
|
395
|
+
|
396
|
+
request.body = {needGms: gms_dependency}.to_json
|
397
|
+
|
398
|
+
response = http.request(request)
|
399
|
+
if !response.kind_of? Net::HTTPSuccess
|
400
|
+
UI.user_error!("Cannot update gms dependency, please check API Token / Permissions (status code: #{response.code})")
|
401
|
+
return false
|
402
|
+
end
|
403
|
+
result_json = JSON.parse(response.body)
|
404
|
+
|
405
|
+
if result_json['ret']['code'] == 0
|
406
|
+
UI.success("Successfully updated GMS Dependency")
|
407
|
+
else
|
408
|
+
UI.user_error!(result_json)
|
409
|
+
UI.user_error!("Failed to update GMS Dependency")
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
372
413
|
end
|
373
414
|
end
|
374
415
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-huawei_appgallery_connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shreejan Shrestha
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- lib/fastlane/plugin/huawei_appgallery_connect/actions/huawei_appgallery_connect_action.rb
|
163
163
|
- lib/fastlane/plugin/huawei_appgallery_connect/actions/huawei_appgallery_connect_get_app_id.rb
|
164
164
|
- lib/fastlane/plugin/huawei_appgallery_connect/actions/huawei_appgallery_connect_get_app_info.rb
|
165
|
+
- lib/fastlane/plugin/huawei_appgallery_connect/actions/huawei_appgallery_connect_set_gms_dependency.rb
|
165
166
|
- lib/fastlane/plugin/huawei_appgallery_connect/actions/huawei_appgallery_connect_submit_for_review.rb
|
166
167
|
- lib/fastlane/plugin/huawei_appgallery_connect/actions/huawei_appgallery_connect_update_app_localization.rb
|
167
168
|
- lib/fastlane/plugin/huawei_appgallery_connect/helper/huawei_appgallery_connect_helper.rb
|