fastlane-plugin-huawei_appgallery_connect 1.0.10 → 1.0.15

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: 4730eea2fe43d0c50a03cab93d475c48d373685456f0735de5d40bfef322944e
4
- data.tar.gz: 49acfbc7cd1932ef5b02fa8412a0abf37caf0e7a50ca83bbc456e1a858bc005e
3
+ metadata.gz: e8ad1b77f355b7d2284ad5e1cd0f161b2c643209cafbe79c3bd11c5de23405f2
4
+ data.tar.gz: f6dd1a859de8909d8e25b1485a5dd98130da965814e6246beadaf4c291f3f41d
5
5
  SHA512:
6
- metadata.gz: ef179ee73d6b189ecd473f9284d7e69e9ba0c83be8c7ec85ce6fa4ccd46bafb18d092460cc6b384a88ae55d739589d6ea05aa1306a3752b2bdc3c57dd3f49881
7
- data.tar.gz: 6d05974036fa6b42ad6a5270d4ce8c5ce395e2450209de88103c7debc65f8e024faadc4fda740f880cb22c3af52596d405d990805cc10b649d46ff6d1ac373a8
6
+ metadata.gz: 1cef05bbe6d2a076cca0e48d42e956717e792ebae5420c00e6c2c0b0ba805a186aa563c70f11268fc0d1b220b1ada355759f555c0f13fa37ad9bf0975b3409bc
7
+ data.tar.gz: 15771fc11e6da6d2deb8eb442c2b05e82c9d2f379bf64658617aa041bcf5f7c9507d926cf27d343bdc189f11c111f0ff91a449360a309801cedbf64ba76e9348
data/README.md CHANGED
@@ -12,41 +12,70 @@ fastlane add_plugin huawei_appgallery_connect
12
12
 
13
13
  ## About huawei_appgallery_connect
14
14
 
15
- Huawei AppGallery Connect Plugin
15
+ Huawei AppGallery Connect Plugin can be used to upload Android application on the Huawei App Gallery using fastlane.
16
16
 
17
- **Note to author:** Add a more detailed description about this plugin here. If your plugin contains multiple actions, make sure to mention them here.
17
+ ## Usage
18
18
 
19
- ## Example
20
-
21
- Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
22
-
23
- **Note to author:** Please set up a sample project to make it easy for users to explore what your plugin does. Provide everything that is necessary to try out the plugin in this project (including a sample Xcode/Android project if necessary)
24
-
25
- ## Run tests for this plugin
26
-
27
- To run both the tests, and code style validation, run
19
+ To get started you will need the client id, client Secret & app ID which can be obtained from your Huawei AppGallery Connect account.
28
20
 
29
21
  ```
30
- rake
22
+ huawei_appgallery_connect(
23
+ client_id: "<CLIENT_ID>",
24
+ client_secret: "<CLIENT_SECRET>",
25
+ app_id: "<APP_ID>",
26
+ apk_path: "<APK_PATH>"
27
+
28
+ # Optional, Parameter beyond this are optional
29
+
30
+ # if you're uploading aab instead of apk, specify is_aab to true and specify path to aab file on apk_path
31
+ is_aab: true
32
+
33
+ submit_for_review: false,
34
+
35
+ privacy_policy_url: "https://example.com",
36
+ changelog_path: "<PATH_TO_CHANGELOG_FILE>",
37
+
38
+ # release time to release app on specific date
39
+ release_time: "2019-12-25T07:05:15+0000",
40
+
41
+ # For phase wise release: set these parameters
42
+ phase_wise_release: true,
43
+ phase_release_start_time: "2019-12-25T07:05:15+0000",
44
+ phase_release_end_time: "2019-12-28T07:05:15+0000",
45
+ phase_release_percent: "10.00",
46
+ phase_release_description: "<DESCRIPTION>"
47
+ )
31
48
  ```
32
49
 
33
- To automatically fix many of the styling issues, use
34
- ```
35
- rubocop -a
36
- ```
50
+ The following action can be used to submit the app for review if submit_for_review was set to false during the upload of apk
37
51
 
38
- ## Issues and Feedback
39
-
40
- For any other issues and feedback about this plugin, please submit it to this repository.
52
+ ```
53
+ huawei_appgallery_connect_submit_for_review(
54
+ client_id: "<CLIENT_ID>",
55
+ client_secret: "<CLIENT_SECRET>",
56
+ app_id: "<APP_ID>",
41
57
 
42
- ## Troubleshooting
43
58
 
44
- If you have trouble using plugins, check out the [Plugins Troubleshooting](https://docs.fastlane.tools/plugins/plugins-troubleshooting/) guide.
59
+ # Optional, Parameter beyond this are optional
45
60
 
46
- ## Using _fastlane_ Plugins
61
+ # release time to release app on specific date
62
+ release_time: "2019-12-25T07:05:15+0000",
47
63
 
48
- For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://docs.fastlane.tools/plugins/create-plugin/).
64
+ # For phase wise release: set these parameters
65
+ phase_wise_release: true,
66
+ phase_release_start_time: "2019-12-25T07:05:15+0000",
67
+ phase_release_end_time: "2019-12-28T07:05:15+0000",
68
+ phase_release_percent: "10.00",
69
+ phase_release_description: "<DESCRIPTION>"
70
+ )
71
+ ```
72
+ You can also retreive app info by making use of the following action
49
73
 
50
- ## About _fastlane_
74
+ ```
75
+ huawei_appgallery_connect_get_app_info(
76
+ client_id: "<CLIENT_ID>",
77
+ client_secret: "<CLIENT_SECRET>",
78
+ app_id: "<APP_ID>"
79
+ )
51
80
 
52
- _fastlane_ is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
81
+ ```
@@ -15,13 +15,28 @@ module Fastlane
15
15
  Helper::HuaweiAppgalleryConnectHelper.update_appinfo(params[:client_id], token, params[:app_id], params[:privacy_policy_url])
16
16
  end
17
17
 
18
- upload_app = Helper::HuaweiAppgalleryConnectHelper.upload_app(token, params[:client_id], params[:app_id], params[:apk_path])
18
+ upload_app = Helper::HuaweiAppgalleryConnectHelper.upload_app(token, params[:client_id], params[:app_id], params[:apk_path], params[:is_aab])
19
+ self.submit_for_review(token, upload_app, params)
19
20
 
20
- if upload_app && params[:submit_for_review] != false
21
+ end
22
+ # Helper::HuaweiAppgalleryConnectHelper.getAppInfo(token, params[:client_id], params[:app_id])
23
+ end
24
+
25
+ def self.submit_for_review(token, upload_app, params)
26
+ if params[:is_aab] && upload_app["success"] == true && params[:submit_for_review] != false
27
+ compilationStatus = Helper::HuaweiAppgalleryConnectHelper.query_aab_compilation_status(token, params, upload_app["pkgVersion"])
28
+ if compilationStatus == 1
29
+ UI.important("aab file is currently processing, waiting for 2 minutes...")
30
+ sleep(10)
31
+ self.submit_for_review(token, upload_app, params)
32
+ elsif compilationStatus == 2
21
33
  Helper::HuaweiAppgalleryConnectHelper.submit_app_for_review(token, params)
34
+ else
35
+ UI.user_error!("Compilation of aab failed")
22
36
  end
37
+ elsif upload_app["success"] == true && params[:submit_for_review] != false
38
+ Helper::HuaweiAppgalleryConnectHelper.submit_app_for_review(token, params)
23
39
  end
24
- # Helper::HuaweiAppgalleryConnectHelper.getAppInfo(token, params[:client_id], params[:app_id])
25
40
  end
26
41
 
27
42
  def self.description
@@ -67,6 +82,12 @@ module Fastlane
67
82
  optional: false,
68
83
  type: String),
69
84
 
85
+ FastlaneCore::ConfigItem.new(key: :is_aab,
86
+ env_name: "HUAWEI_APPGALLERY_CONNECT_IS_AAB",
87
+ description: "Specify this to be true if you're uploading aab instead of apk",
88
+ optional: true,
89
+ type: Boolean),
90
+
70
91
  FastlaneCore::ConfigItem.new(key: :changelog_path,
71
92
  env_name: "HUAWEI_APPGALLERY_CONNECT_CHANGELOG_PATH",
72
93
  description: "Path to Changelog file (Default empty)",
@@ -88,6 +88,12 @@ module Fastlane
88
88
  description: "Release time in UTC format for app release on a specific date. The format is yyyy-MM-dd'T'HH:mm:ssZZ)",
89
89
  optional: true,
90
90
  conflicting_options: [:phase_wise_release],
91
+ type: String),
92
+
93
+ FastlaneCore::ConfigItem.new(key: :changelog_path,
94
+ env_name: "HUAWEI_APPGALLERY_CONNECT_CHANGELOG_PATH",
95
+ description: "Path to Changelog file (Default empty)",
96
+ optional: true,
91
97
  type: String)
92
98
  ]
93
99
  end
@@ -76,10 +76,20 @@ module Fastlane
76
76
  end
77
77
 
78
78
 
79
- def self.upload_app(token, client_id, app_id, apk_path)
79
+ def self.upload_app(token, client_id, app_id, apk_path, is_aab)
80
80
  UI.message("Fetching upload URL")
81
81
 
82
- uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/upload-url?appId=#{app_id}&suffix=apk")
82
+ responseData = JSON.parse("{}")
83
+ responseData["success"] = false
84
+ responseData["code"] = 0
85
+
86
+ if(is_aab)
87
+ uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/upload-url?appId=#{app_id}&suffix=aab")
88
+ upload_filename = "release.aab"
89
+ else
90
+ uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/upload-url?appId=#{app_id}&suffix=apk")
91
+ upload_filename = "release.apk"
92
+ end
83
93
 
84
94
  http = Net::HTTP.new(uri.host, uri.port)
85
95
  http.use_ssl = true
@@ -91,14 +101,16 @@ module Fastlane
91
101
 
92
102
  if !response.kind_of? Net::HTTPSuccess
93
103
  UI.user_error!("Cannot obtain upload url, please check API Token / Permissions (status code: #{response.code})")
94
- return false
104
+ responseData["success"] = false
105
+ return responseData
95
106
  end
96
107
 
97
108
  result_json = JSON.parse(response.body)
98
109
 
99
110
  if result_json['uploadUrl'].nil?
100
111
  UI.user_error!('Cannot obtain upload url')
101
- return false
112
+ responseData["success"] = false
113
+ return responseData
102
114
  else
103
115
  UI.important('Uploading app')
104
116
  # Upload App
@@ -115,7 +127,8 @@ module Fastlane
115
127
  result = http.request(request)
116
128
  if !result.kind_of? Net::HTTPSuccess
117
129
  UI.user_error!("Cannot upload app, please check API Token / Permissions (status code: #{result.code})")
118
- return false
130
+ responseData["success"] = false
131
+ return responseData
119
132
  end
120
133
  result_json = JSON.parse(result.body)
121
134
 
@@ -130,10 +143,11 @@ module Fastlane
130
143
  request = Net::HTTP::Put.new(uri.request_uri)
131
144
  request["client_id"] = client_id
132
145
  request["Authorization"] = "Bearer #{token}"
146
+ request['Content-Type'] = "application/json"
133
147
 
134
148
  data = {fileType: 5, files: [{
135
149
 
136
- fileName: "release.apk",
150
+ fileName: upload_filename,
137
151
  fileDestUrl: result_json['result']['UploadFileRsp']['fileInfoList'][0]['fileDestUlr'],
138
152
  size: result_json['result']['UploadFileRsp']['fileInfoList'][0]['size'].to_s
139
153
 
@@ -143,24 +157,57 @@ module Fastlane
143
157
  response = http.request(request)
144
158
  if !response.kind_of? Net::HTTPSuccess
145
159
  UI.user_error!("Cannot save app info, please check API Token / Permissions (status code: #{response.code})")
146
- return false
160
+ responseData["success"] = false
161
+ return responseData
147
162
  end
148
163
  result_json = JSON.parse(response.body)
149
164
 
150
165
  if result_json['ret']['code'] == 0
151
166
  UI.success("App information saved.")
152
- return true
167
+ responseData["success"] = true
168
+ responseData["pkgVersion"] = result_json["pkgVersion"][0]
169
+ return responseData
153
170
  else
154
171
  UI.user_error!(result_json)
155
172
  UI.user_error!("Failed to save app information")
156
- return false
173
+ responseData["success"] = false
174
+ return responseData
157
175
  end
158
176
  else
159
- return false
177
+ responseData["success"] = false
178
+ return responseData
160
179
  end
161
180
  end
162
181
  end
163
182
 
183
+ def self.query_aab_compilation_status(token,params, pkgVersion)
184
+ UI.important("Checking aab compilation status")
185
+
186
+ uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/aab/complile/status?appId=#{params[:app_id]}&pkgVersion=#{pkgVersion}")
187
+
188
+ http = Net::HTTP.new(uri.host, uri.port)
189
+ http.use_ssl = true
190
+ request = Net::HTTP::Get.new(uri.request_uri)
191
+ request["client_id"] = params[:client_id]
192
+ request["Authorization"] = "Bearer #{token}"
193
+
194
+ response = http.request(request)
195
+
196
+ if !response.kind_of? Net::HTTPSuccess
197
+ UI.user_error!("Cannot query compilation status (status code: #{response.code}, body: #{response.body})")
198
+ return false
199
+ end
200
+
201
+ result_json = JSON.parse(response.body)
202
+
203
+ if result_json['ret']['code'] == 0
204
+ return result_json['aabCompileStatus']
205
+ else
206
+ UI.user_error!(result_json)
207
+ return -999
208
+ end
209
+ end
210
+
164
211
  def self.submit_app_for_review(token, params)
165
212
  UI.important("Submitting app for review")
166
213
 
@@ -226,6 +273,11 @@ module Fastlane
226
273
 
227
274
  if result_json['ret']['code'] == 0
228
275
  UI.success("Successfully submitted app for review")
276
+ elsif result_json['ret']['code'] == 204144660 && result_json['ret']['msg'].include?("It may take 2-5 minutes")
277
+ UI.important(result_json)
278
+ UI.important("Build is currently processing, waiting for 2 minutes before submitting again...")
279
+ sleep(120)
280
+ self.submit_app_for_review(token, params)
229
281
  else
230
282
  UI.user_error!(result_json)
231
283
  UI.user_error!("Failed to submit app for review.")
@@ -235,3 +287,4 @@ module Fastlane
235
287
  end
236
288
  end
237
289
  end
290
+
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module HuaweiAppgalleryConnect
3
- VERSION = "1.0.10"
3
+ VERSION = "1.0.15"
4
4
  end
5
5
  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.10
4
+ version: 1.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shreejan Shrestha
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-29 00:00:00.000000000 Z
11
+ date: 2020-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry