fastlane-plugin-huawei_appgallery_connect 1.0.0 → 1.0.1

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: 25f1bb76a7a14a6e23b597d3ff499066c6849e7b530078e7910a9d19338e4976
4
- data.tar.gz: b3d95a8e6a8314cda7f723e5ad59557c92f2d8f1c97c51f11d9a680090e827bb
3
+ metadata.gz: 44e2a92f0fd3533438a85c05db67fb92bede709ec85c24d6fbb42fdfc67df709
4
+ data.tar.gz: 62a88a91bbd6cb152eca59681b49ffc3403a42f3db111695b3c2ef58ac21d422
5
5
  SHA512:
6
- metadata.gz: 06ab6f1bbdd03677c614c3de62f165fd7be3ccf126fb94d0001b923c1f74146d9207e0e444538e0f539acfa26140255e8c7045022bd6b2501335bb9d39134869
7
- data.tar.gz: 3bd5599433e4d95f9fe90d081acc6c97be2641a8d0b75dfbd441ddebb3b9b0198129f142c4fc41b81288973bd985a24b5f85bfd0d6b534fad90e097904a2b0d5
6
+ metadata.gz: fbf2dcf0b3e1a7bd63c2f6b5146fbd7b2674254e58fad9c8b2a4d75d3e1c63142aeca309bb6de057b1e43a1bdc5bdb8205afbe52b3f5f83410eb193612702f74
7
+ data.tar.gz: 3b709b637bef4a6f0808d97a68fda4923fdd86d3506359628b4b9c0f182cfdc11bc2e566111df84fae77f4d3333541953a0c648d4ea799a3604477bacbe6d517
@@ -10,10 +10,15 @@ module Fastlane
10
10
  if token.nil?
11
11
  UI.message("Cannot retrieve token, please check your client ID and client secret")
12
12
  else
13
+
14
+ if params[:privacy_policy_url] != nil
15
+ Helper::HuaweiAppgalleryConnectHelper.update_appinfo(params[:client_id], token, params[:app_id], params[:privacy_policy_url])
16
+ end
17
+
13
18
  upload_app = Helper::HuaweiAppgalleryConnectHelper.upload_app(token, params[:client_id], params[:app_id], params[:apk_path])
14
19
 
15
20
  if upload_app
16
- Helper::HuaweiAppgalleryConnectHelper.submit_app_for_review(token, params[:client_id], params[:app_id])
21
+ Helper::HuaweiAppgalleryConnectHelper.submit_app_for_review(token, params)
17
22
  end
18
23
  end
19
24
  # Helper::HuaweiAppgalleryConnectHelper.getAppInfo(token, params[:client_id], params[:app_id])
@@ -60,6 +65,56 @@ module Fastlane
60
65
  env_name: "HUAWEI_APPGALLERY_CONNECT_APK_PATH",
61
66
  description: "Path to APK file for upload",
62
67
  optional: false,
68
+ type: String),
69
+
70
+ FastlaneCore::ConfigItem.new(key: :changelog_path,
71
+ env_name: "HUAWEI_APPGALLERY_CONNECT_CHANGELOG_PATH",
72
+ description: "Path to Changelog file (Default empty)",
73
+ optional: true,
74
+ type: String),
75
+
76
+ FastlaneCore::ConfigItem.new(key: :privacy_policy_url,
77
+ env_name: "HUAWEI_APPGALLERY_CONNECT_PRIVACY",
78
+ description: "Privacy Policy URL",
79
+ optional: true,
80
+ type: String),
81
+
82
+ FastlaneCore::ConfigItem.new(key: :phase_wise_release,
83
+ env_name: "HUAWEI_APPGALLERY_CONNECT_PHASE_WISE_RELEASE",
84
+ description: "Phase wise release",
85
+ optional: true,
86
+ conflicting_options: [:release_time],
87
+ type: Boolean),
88
+
89
+ FastlaneCore::ConfigItem.new(key: :phase_release_start_time,
90
+ env_name: "HUAWEI_APPGALLERY_CONNECT_PHASE_WISE_RELEASE_START_TIME",
91
+ description: "Start time of the validity period of the release by phase. The value is UTC time in the following format: yyyy-MM-dd 'T' HH:mm:ssZZ",
92
+ optional: true,
93
+ type: String),
94
+
95
+ FastlaneCore::ConfigItem.new(key: :phase_release_end_time,
96
+ env_name: "HUAWEI_APPGALLERY_CONNECT_PHASE_WISE_RELEASE_END_TIME",
97
+ description: "End time of the validity period of the release by phase. The value is UTC time in the following format: yyyy-MM-dd 'T' HH:mm:ssZZ",
98
+ optional: true,
99
+ type: String),
100
+
101
+ FastlaneCore::ConfigItem.new(key: :phase_release_percent,
102
+ env_name: "HUAWEI_APPGALLERY_CONNECT_PHASE_WISE_RELEASE_PERCENT",
103
+ description: "Percentage of the release by phase. The value must be accurate to two decimal places and does not contain the percent sign (%)",
104
+ optional: true,
105
+ type: String),
106
+
107
+ FastlaneCore::ConfigItem.new(key: :phase_release_description,
108
+ env_name: "HUAWEI_APPGALLERY_CONNECT_PHASE_WISE_RELEASE_DESCRIPTION",
109
+ description: "Phase-based release description. (Max 500 characters)",
110
+ optional: true,
111
+ type: String),
112
+
113
+ FastlaneCore::ConfigItem.new(key: :release_time,
114
+ env_name: "HUAWEI_APPGALLERY_CONNECT_RELEASE_TIME",
115
+ description: "Release time in UTC format for app release on a specific date. The format is yyyy-MM-dd'T'HH:mm:ssZZ)",
116
+ optional: true,
117
+ conflicting_options: [:phase_wise_release],
63
118
  type: String)
64
119
  ]
65
120
  end
@@ -6,7 +6,7 @@ module Fastlane
6
6
  module Helper
7
7
  class HuaweiAppgalleryConnectHelper
8
8
  def self.get_token(client_id, client_secret)
9
- UI.message("Fetching app access token")
9
+ UI.important("Fetching app access token")
10
10
 
11
11
  uri = URI('https://connect-api.cloud.huawei.com/api/oauth2/v1/token')
12
12
  http = Net::HTTP.new(uri.host, uri.port)
@@ -33,10 +33,33 @@ module Fastlane
33
33
  response = http.request(request)
34
34
 
35
35
  result_json = JSON.parse(res.body)
36
+ end
37
+
38
+ def self.update_appinfo(client_id, token, app_id, privacy_policy_url)
39
+ UI.important("Updating app info")
40
+
41
+ uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/app-info?appId=#{app_id}")
42
+
43
+ http = Net::HTTP.new(uri.host, uri.port)
44
+ http.use_ssl = true
45
+ request = Net::HTTP::Put.new(uri.request_uri)
46
+ request["client_id"] = client_id
47
+ request["Authorization"] = "Bearer #{token}"
36
48
 
37
- UI.message(response.body)
49
+ request.body = {privacyPolicy: privacy_policy_url}.to_json
50
+
51
+ response = http.request(request)
52
+
53
+ result_json = JSON.parse(response.body)
54
+
55
+ if result_json['ret']['code'] == 0
56
+ UI.success("Successfully updated app info")
57
+ else
58
+ UI.user_error!("Failed to update app info")
59
+ end
38
60
  end
39
61
 
62
+
40
63
  def self.upload_app(token, client_id, app_id, apk_path)
41
64
  UI.message("Fetching upload URL")
42
65
 
@@ -47,15 +70,16 @@ module Fastlane
47
70
  request = Net::HTTP::Get.new(uri.request_uri)
48
71
  request["client_id"] = client_id
49
72
  request["Authorization"] = "Bearer #{token}"
73
+
50
74
  response = http.request(request)
51
75
 
52
76
  result_json = JSON.parse(response.body)
53
77
 
54
78
  if result_json['uploadUrl'].nil?
55
- UI.message('Cannot obtain upload url')
79
+ UI.user_error!('Cannot obtain upload url')
56
80
  return false
57
81
  else
58
- UI.message('Uploading app')
82
+ UI.important('Uploading app')
59
83
  # Upload App
60
84
  boundary = "755754302457647"
61
85
  uri = URI(result_json['uploadUrl'])
@@ -86,8 +110,8 @@ module Fastlane
86
110
  result_json = JSON.parse(result.body)
87
111
 
88
112
  if result_json['result']['result_code'].to_i == 0
89
- UI.message('Upload app to AppGallery Connect successful')
90
- UI.message("Saving app information")
113
+ UI.success('Upload app to AppGallery Connect successful')
114
+ UI.important("Saving app information")
91
115
 
92
116
  uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/app-file-info?appId=#{app_id}")
93
117
 
@@ -97,7 +121,7 @@ module Fastlane
97
121
  request["client_id"] = client_id
98
122
  request["Authorization"] = "Bearer #{token}"
99
123
 
100
- data = {fileType: 5, lang: 'en-GB', files: [{
124
+ data = {fileType: 5, lang: "en-GB", files: [{
101
125
 
102
126
  fileName: "release.apk",
103
127
  fileDestUrl: result_json['result']['UploadFileRsp']['fileInfoList'][0]['fileDestUlr'],
@@ -111,10 +135,10 @@ module Fastlane
111
135
  result_json = JSON.parse(response.body)
112
136
 
113
137
  if result_json['ret']['code'] == 0
114
- UI.message("App information saved.")
138
+ UI.success("App information saved.")
115
139
  return true
116
140
  else
117
- UI.message("Failed to save app information")
141
+ UI.user_error!("Failed to save app information")
118
142
  return false
119
143
  end
120
144
  else
@@ -123,24 +147,68 @@ module Fastlane
123
147
  end
124
148
  end
125
149
 
126
- def self.submit_app_for_review(token, client_id, app_id)
127
- UI.message("Submitting app for review")
150
+ def self.submit_app_for_review(token, params)
151
+ UI.important("Submitting app for review")
152
+
153
+ release_type = ''
154
+ release_time = ''
155
+
156
+ if (params[:phase_wise_release] != nil && params[:phase_wise_release]) && (
157
+ params[:phase_release_start_time] == nil ||
158
+ params[:phase_release_end_time] == nil ||
159
+ params[:phase_release_percent] == nil ||
160
+ params[:phase_release_description] == nil
161
+ )
162
+ UI.user_error!("Submit for review failed. Phase wise release requires Start time, End time Release Percent & Descrption")
163
+ return
164
+ elsif params[:phase_wise_release] != nil && params[:phase_wise_release]
165
+ release_type = '&releaseType=3'
166
+ end
167
+
168
+ if params[:release_time] != nil
169
+ params[:release_time] = URI::encode(params[:release_time], /\W/)
170
+ release_time = "&releaseTime=#{params[:release_time]}"
171
+ end
172
+
173
+ changelog = ''
174
+
175
+ if params[:changelog_path] != nil
176
+ changelog_data = File.read(params[:changelog_path])
177
+
178
+ if changelog_data.length < 3 || changelog_data.length > 300
179
+ UI.user_error!("Failed to submit app for review. Changelog file length is invalid")
180
+ return
181
+ else
182
+ changelog = "&remark=" + URI::encode(changelog_data)
183
+ end
184
+ end
128
185
 
129
- uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/app-submit?appId=#{app_id}")
186
+ uri = URI.parse("https://connect-api.cloud.huawei.com/api/publish/v2/app-submit?appId=#{params[:app_id]}" + changelog + release_type + release_time)
130
187
 
131
188
  http = Net::HTTP.new(uri.host, uri.port)
132
189
  http.use_ssl = true
133
190
  request = Net::HTTP::Post.new(uri.request_uri)
134
- request["client_id"] = client_id
191
+ request["client_id"] = params[:client_id]
135
192
  request["Authorization"] = "Bearer #{token}"
193
+
194
+ if params[:phase_wise_release] != nil && params[:phase_wise_release]
195
+ request.body = {
196
+ phasedReleaseStartTime: params[:phase_release_start_time],
197
+ phasedReleaseEndTime: params[:phase_release_end_time],
198
+ phasedReleasePercent: params[:phase_release_percent],
199
+ phasedReleaseDescription: params[:phase_release_description]
200
+ }.to_json
201
+ end
202
+
203
+
136
204
  response = http.request(request)
137
205
 
138
206
  result_json = JSON.parse(response.body)
139
207
 
140
208
  if result_json['ret']['code'] == 0
141
- UI.message("Successfully submitted app for review")
209
+ UI.success("Successfully submitted app for review")
142
210
  else
143
- UI.message("Failed to submit app for review")
211
+ UI.user_error!("Failed to submit app for review")
144
212
  end
145
213
 
146
214
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module HuaweiAppgalleryConnect
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1"
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.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shreejan Shrestha
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-14 00:00:00.000000000 Z
11
+ date: 2019-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry