fastlane-plugin-polidea 1.0.0 → 2.0.0
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41e7f4035f341c048798dcd64a9c242e810fb9d0
|
4
|
+
data.tar.gz: 792f4e2c40045802eaf8260320334ce74e7a192b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52d41e8bc47d3ca0d6839322aabd1d2b9207437a34a253524e9f10aed4c4cb2a72bffe6e0fb928299f1c474900bbcdc36926beb7064051084e2d8d5f747e3fa4
|
7
|
+
data.tar.gz: 103a5e1de80952e759192a70d7a75df6815c2704a4bc73e7895c77340d2992eceea3f33a2d6fbe25587c2db5f1c345f33e8ff3a7ed76aefd9359dce1ed11f3b5
|
data/README.md
CHANGED
@@ -21,7 +21,6 @@ Plugin contains following actions:
|
|
21
21
|
- `get_binary_size`: Measures binary size in bytes
|
22
22
|
- `s3`: Custom version of s3 action with Polidea's installation page
|
23
23
|
- `fota_mail`: Custom version of mailgun action with Polidea's mail template
|
24
|
-
- `polidea_store`: Notifies Polidea Store about new app version
|
25
24
|
|
26
25
|
See more details [here](https://gitlab2.polidea.com/CI/fastlane-plugin-polidea/blob/master/docs/Actions.md).
|
27
26
|
To list all available actions run:
|
@@ -39,7 +38,6 @@ lane :deploy do
|
|
39
38
|
extract_version
|
40
39
|
get_binary_size
|
41
40
|
s3
|
42
|
-
polidea_store
|
43
41
|
fota_mail(
|
44
42
|
to: "piotr.dubiel@polidea.com"
|
45
43
|
)
|
@@ -321,20 +321,21 @@ module Fastlane
|
|
321
321
|
end
|
322
322
|
|
323
323
|
def self.get_bucket(s3_access_key, s3_secret_access_key, s3_region, s3_bucket)
|
324
|
-
self.s3_client(s3_access_key, s3_secret_access_key, s3_region).
|
324
|
+
self.s3_client(s3_access_key, s3_secret_access_key, s3_region).bucket(s3_bucket)
|
325
325
|
end
|
326
326
|
|
327
327
|
def self.s3_client(s3_access_key, s3_secret_access_key, s3_region)
|
328
|
-
Actions.verify_gem!('aws-sdk')
|
329
|
-
require 'aws-sdk'
|
328
|
+
Actions.verify_gem!('aws-sdk-s3')
|
329
|
+
require 'aws-sdk-s3'
|
330
|
+
|
330
331
|
if s3_region
|
331
|
-
s3_client =
|
332
|
+
s3_client = Aws::S3::Resource.new(
|
332
333
|
access_key_id: s3_access_key,
|
333
334
|
secret_access_key: s3_secret_access_key,
|
334
335
|
region: s3_region
|
335
336
|
)
|
336
337
|
else
|
337
|
-
s3_client =
|
338
|
+
s3_client = Aws::S3::Resource.new(
|
338
339
|
access_key_id: s3_access_key,
|
339
340
|
secret_access_key: s3_secret_access_key
|
340
341
|
)
|
@@ -343,13 +344,18 @@ module Fastlane
|
|
343
344
|
end
|
344
345
|
|
345
346
|
def self.upload_file(bucket, file_name, file_data, acl, treat_bucket_as_domain_name)
|
346
|
-
obj = bucket.
|
347
|
+
obj = bucket.put_object({
|
348
|
+
key: file_name,
|
349
|
+
body: file_data,
|
350
|
+
acl: acl,
|
351
|
+
content_type: content_type_for_file(file_name)
|
352
|
+
})
|
347
353
|
|
348
354
|
# When you enable versioning on a S3 bucket,
|
349
355
|
# writing to an object will create an object version
|
350
356
|
# instead of replacing the existing object.
|
351
357
|
# http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
|
352
|
-
if obj.kind_of?
|
358
|
+
if obj.kind_of? Aws::S3::ObjectVersion
|
353
359
|
obj = obj.object
|
354
360
|
end
|
355
361
|
|
@@ -367,8 +373,13 @@ module Fastlane
|
|
367
373
|
files.each do |file|
|
368
374
|
local_path = directory_path + file
|
369
375
|
s3_path = directory_name + file
|
370
|
-
|
371
|
-
|
376
|
+
|
377
|
+
bucket.put_object({
|
378
|
+
key: s3_path,
|
379
|
+
body: File.open(local_path),
|
380
|
+
acl: acl,
|
381
|
+
content_type: content_type_for_file(local_path)
|
382
|
+
})
|
372
383
|
end
|
373
384
|
end
|
374
385
|
|
@@ -519,7 +530,7 @@ module Fastlane
|
|
519
530
|
env_name: "S3_ACL",
|
520
531
|
description: "Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read ",
|
521
532
|
optional: true,
|
522
|
-
default_value: "
|
533
|
+
default_value: "public-read"),
|
523
534
|
FastlaneCore::ConfigItem.new(key: :installation_password,
|
524
535
|
env_name: "INSTALLATION_PASSWORD",
|
525
536
|
description: "Password for installation page",
|
@@ -8,10 +8,10 @@ module Fastlane
|
|
8
8
|
@dark_color = dark_color
|
9
9
|
|
10
10
|
@margin = 20
|
11
|
-
@image = ::ChunkyPNG::Image.new(2 * @margin + @qr_code.module_count * 5, 2 * @margin + @qr_code.module_count * 5, ::ChunkyPNG::Color::WHITE)
|
11
|
+
@image = ::ChunkyPNG::Image.new(2 * @margin + @qr_code.qrcode.module_count * 5, 2 * @margin + @qr_code.qrcode.module_count * 5, ::ChunkyPNG::Color::WHITE)
|
12
12
|
|
13
13
|
@logo = ::ChunkyPNG::Image.from_file("#{path_to_resources}/logo.png")
|
14
|
-
@logo = @logo.resize(2 * @margin + @qr_code.module_count * 5, 2 * @margin + @qr_code.module_count * 5)
|
14
|
+
@logo = @logo.resize(2 * @margin + @qr_code.qrcode.module_count * 5, 2 * @margin + @qr_code.qrcode.module_count * 5)
|
15
15
|
end
|
16
16
|
|
17
17
|
def generate(path)
|
@@ -25,11 +25,11 @@ module Fastlane
|
|
25
25
|
end
|
26
26
|
|
27
27
|
@qr_code.modules.each_index do |row|
|
28
|
-
@qr_code.modules.each_index do |column|
|
29
|
-
if @qr_code.
|
30
|
-
print_symbol(dark_color, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.module_count - 8) || (column >= @qr_code.module_count - 8 && row < 8))
|
28
|
+
@qr_code.modules[row].each_index do |column|
|
29
|
+
if @qr_code.modules[row][column]
|
30
|
+
print_symbol(dark_color, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.qrcode.module_count - 8) || (column >= @qr_code.qrcode.module_count - 8 && row < 8))
|
31
31
|
else
|
32
|
-
print_symbol(white, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.module_count - 8) || (column >= @qr_code.module_count - 8 && row < 8))
|
32
|
+
print_symbol(white, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.qrcode.module_count - 8) || (column >= @qr_code.qrcode.module_count - 8 && row < 8))
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-polidea
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotrek Dubiel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: plist
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: aws-sdk
|
28
|
+
name: aws-sdk-s3
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: premailer
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,6 +58,20 @@ dependencies:
|
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 1.8.7
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: nokogiri
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
61
75
|
- !ruby/object:Gem::Dependency
|
62
76
|
name: rqrcode_png
|
63
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,6 +156,20 @@ dependencies:
|
|
142
156
|
- - ">="
|
143
157
|
- !ruby/object:Gem::Version
|
144
158
|
version: '0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: rb-readline
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
145
173
|
- !ruby/object:Gem::Dependency
|
146
174
|
name: rubocop
|
147
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,7 +230,6 @@ files:
|
|
202
230
|
- lib/fastlane/plugin/polidea/actions/fota_s3.rb
|
203
231
|
- lib/fastlane/plugin/polidea/actions/get_binary_size.rb
|
204
232
|
- lib/fastlane/plugin/polidea/actions/import_provisioning.rb
|
205
|
-
- lib/fastlane/plugin/polidea/actions/polidea_store.rb
|
206
233
|
- lib/fastlane/plugin/polidea/actions/release_notes.rb
|
207
234
|
- lib/fastlane/plugin/polidea/actions/shuttle.rb
|
208
235
|
- lib/fastlane/plugin/polidea/helper/page_generator.rb
|
@@ -1,255 +0,0 @@
|
|
1
|
-
# rubocop:disable Metrics/MethodLength
|
2
|
-
|
3
|
-
require 'net/http'
|
4
|
-
require 'uri'
|
5
|
-
require 'json'
|
6
|
-
|
7
|
-
module Fastlane
|
8
|
-
module Actions
|
9
|
-
class PolideaStoreAction < Action
|
10
|
-
def self.run(params)
|
11
|
-
platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME].to_sym
|
12
|
-
validate(platform, params)
|
13
|
-
config = get_config(platform, params)
|
14
|
-
app_name, app_identifier, version = notify(platform, config)
|
15
|
-
|
16
|
-
UI.success("Successfully uploaded #{app_name} (#{app_identifier})")
|
17
|
-
UI.success("version: #{version}")
|
18
|
-
UI.success("using icon from #{params[:icon_url]}") if params[:icon_url]
|
19
|
-
UI.success("using plist from #{params[:plist_url]}") if platform == :ios
|
20
|
-
UI.success("with release notes: #{params[:release_notes]}") if params[:release_notes]
|
21
|
-
end
|
22
|
-
|
23
|
-
#####################################################
|
24
|
-
# @!group Documentation
|
25
|
-
#####################################################
|
26
|
-
|
27
|
-
def self.description
|
28
|
-
"Polidea Store upload action"
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.details
|
32
|
-
"Notify Polidea Store about new app version"
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.author
|
36
|
-
["Piotrek Dubiel"]
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.available_options
|
40
|
-
[
|
41
|
-
FastlaneCore::ConfigItem.new(key: :api_token,
|
42
|
-
env_name: "POLIDEA_STORE_API_TOKEN",
|
43
|
-
description: "API Token for Polidea Store",
|
44
|
-
verify_block: proc do |value|
|
45
|
-
UI.user_error!("No API token for Polidea Store given, pass using `api_token: 'token'`") unless value and !value.empty?
|
46
|
-
end),
|
47
|
-
FastlaneCore::ConfigItem.new(key: :ipa,
|
48
|
-
env_name: "",
|
49
|
-
description: ".ipa file for the build ",
|
50
|
-
optional: true,
|
51
|
-
default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
|
52
|
-
FastlaneCore::ConfigItem.new(key: :apk,
|
53
|
-
env_name: "",
|
54
|
-
description: ".apk file for the build ",
|
55
|
-
optional: true,
|
56
|
-
default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]),
|
57
|
-
FastlaneCore::ConfigItem.new(key: :plist_url,
|
58
|
-
env_name: "POLIDEA_STORE_PLIST_URL",
|
59
|
-
description: "Url to uploaded plist",
|
60
|
-
default_value: Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH],
|
61
|
-
verify_block: proc do |value|
|
62
|
-
UI.user_error!("No plist url given, pass using `plist_url: 'url'` or make sure s3 action succeded and exposed S3_PLIST_OUTPUT_PATH shared value") unless value and !value.empty?
|
63
|
-
end),
|
64
|
-
FastlaneCore::ConfigItem.new(key: :apk_url,
|
65
|
-
env_name: "POLIDEA_STORE_APK_URL",
|
66
|
-
description: "Url to uploaded apk",
|
67
|
-
default_value: Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH],
|
68
|
-
verify_block: proc do |value|
|
69
|
-
UI.user_error!("No apk url given, pass using `apk_url: 'url'` or make sure s3 action succeded and exposed S3_APK_OUTPUT_PATH shared value") unless value and !value.empty?
|
70
|
-
end),
|
71
|
-
FastlaneCore::ConfigItem.new(key: :icon_url,
|
72
|
-
env_name: "POLIDEA_STORE_ICON_URL",
|
73
|
-
description: "Url to uploaded app icon",
|
74
|
-
default_value: Actions.lane_context[SharedValues::S3_ICON_OUTPUT_PATH],
|
75
|
-
optional: true),
|
76
|
-
FastlaneCore::ConfigItem.new(key: :release_notes,
|
77
|
-
env_name: "",
|
78
|
-
description: "Release notes to be attached to uploaded version",
|
79
|
-
is_string: true,
|
80
|
-
optional: true,
|
81
|
-
default_value: Actions.lane_context[SharedValues::RELEASE_NOTES]),
|
82
|
-
FastlaneCore::ConfigItem.new(key: :app_name,
|
83
|
-
env_name: "",
|
84
|
-
description: "Application name (defaults to results of extract_app_name action)",
|
85
|
-
is_string: true,
|
86
|
-
optional: true),
|
87
|
-
FastlaneCore::ConfigItem.new(key: :bundle_id,
|
88
|
-
env_name: "",
|
89
|
-
description: "Bundle id, used if platform equals :ios",
|
90
|
-
is_string: true,
|
91
|
-
optional: true),
|
92
|
-
FastlaneCore::ConfigItem.new(key: :bundle_version,
|
93
|
-
env_name: "",
|
94
|
-
description: "Bundle version, used if platform equals :ios",
|
95
|
-
is_string: true,
|
96
|
-
optional: true),
|
97
|
-
FastlaneCore::ConfigItem.new(key: :package_name,
|
98
|
-
env_name: "",
|
99
|
-
description: "Package name, used if platform equals :android",
|
100
|
-
is_string: true,
|
101
|
-
optional: true),
|
102
|
-
FastlaneCore::ConfigItem.new(key: :version_name,
|
103
|
-
env_name: "",
|
104
|
-
description: "Version name, used if platform equals :android",
|
105
|
-
is_string: true,
|
106
|
-
optional: true),
|
107
|
-
FastlaneCore::ConfigItem.new(key: :version_code,
|
108
|
-
env_name: "",
|
109
|
-
description: "Version code, used if platform equals :android",
|
110
|
-
type: Integer,
|
111
|
-
optional: true),
|
112
|
-
FastlaneCore::ConfigItem.new(key: :binary_size,
|
113
|
-
env_name: "",
|
114
|
-
description: ".ipa/.apk binary size in bytes",
|
115
|
-
type: Integer,
|
116
|
-
optional: true)
|
117
|
-
]
|
118
|
-
end
|
119
|
-
|
120
|
-
def self.is_supported?(platform)
|
121
|
-
[:ios, :android].include? platform
|
122
|
-
end
|
123
|
-
|
124
|
-
def self.category
|
125
|
-
:deprecated
|
126
|
-
end
|
127
|
-
|
128
|
-
def self.validate(platform, params)
|
129
|
-
binary_size = params[:binary_size] || Actions.lane_context[Actions::SharedValues::BINARY_SIZE]
|
130
|
-
UI.user_error!("No binary size given, pass using `binary_size: bytes` or make sure get_binary_size action succeded and exposed BINARY_SIZE shared value") unless binary_size and !binary_size.nil?
|
131
|
-
|
132
|
-
case platform
|
133
|
-
when :android
|
134
|
-
UI.user_error!("No .apk file given, pass using `apk: 'apk path'` or make sure gradle action succeded and exposed GRADLE_APK_OUTPUT_PATH shared value") unless params[:apk] and !params[:apk].empty?
|
135
|
-
when :ios
|
136
|
-
UI.user_error!("No .ipa file given, pass using `ipa: 'ipa path'` or make sure gym action succeded and exposed IPA_OUTPUT_PATH shared value") unless params[:ipa] and !params[:ipa].empty?
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def self.get_config(platform, params)
|
141
|
-
binary_size = params[:binary_size] || Actions.lane_context[Actions::SharedValues::BINARY_SIZE]
|
142
|
-
api_token = params[:api_token]
|
143
|
-
icon_url = params[:icon_url]
|
144
|
-
release_notes = params[:release_notes]
|
145
|
-
|
146
|
-
case platform
|
147
|
-
when :ios
|
148
|
-
info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(params[:ipa])
|
149
|
-
app_name = params[:app_name] || info['CFBundleDisplayName'] || info['CFBundleName']
|
150
|
-
app_identifier = params[:bundle_id] || info['CFBundleIdentifier']
|
151
|
-
version = params[:bundle_version] || info['CFBundleShortVersionString']
|
152
|
-
href = itms_href(params[:plist_url])
|
153
|
-
url_scheme = get_url_scheme(info)
|
154
|
-
UI.user_error!("No prefix scheme found in Info.plist. Make sure `add_prefix_schema` action succeded before build action") if url_scheme.nil?
|
155
|
-
when :android
|
156
|
-
manifest = Android::Apk.new(params[:apk]).manifest
|
157
|
-
app_name = params[:app_name] || manifest.label
|
158
|
-
app_identifier = params[:package_name] || manifest.package_name
|
159
|
-
version = params[:version_name] || manifest.version_name
|
160
|
-
version_code = params[:version_code] || manifest.version_code
|
161
|
-
href = params[:apk_url]
|
162
|
-
end
|
163
|
-
|
164
|
-
config = {
|
165
|
-
api_token: api_token,
|
166
|
-
app_name: app_name,
|
167
|
-
app_identifier: app_identifier,
|
168
|
-
version: version,
|
169
|
-
version_code: version_code,
|
170
|
-
icon_url: icon_url,
|
171
|
-
href: href,
|
172
|
-
release_notes: release_notes,
|
173
|
-
binary_size: binary_size,
|
174
|
-
url_scheme: url_scheme
|
175
|
-
}
|
176
|
-
|
177
|
-
return config
|
178
|
-
end
|
179
|
-
|
180
|
-
def self.notify(platform, params)
|
181
|
-
uri = URI.parse(url(platform, params[:app_identifier]))
|
182
|
-
|
183
|
-
version = {
|
184
|
-
version: params[:version],
|
185
|
-
releaseNotes: params[:release_notes],
|
186
|
-
href: params[:href],
|
187
|
-
bytes: params[:binary_size]
|
188
|
-
}
|
189
|
-
|
190
|
-
version[:prefixSchema] = params[:url_scheme] if platform == :ios
|
191
|
-
version[:versionCode] = params[:version_code] if platform == :android
|
192
|
-
|
193
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
194
|
-
http.use_ssl = true
|
195
|
-
|
196
|
-
req = create_request(uri, params[:api_token], {
|
197
|
-
name: params[:app_name],
|
198
|
-
icon: {
|
199
|
-
href: params[:icon_url]
|
200
|
-
},
|
201
|
-
versions: [version]
|
202
|
-
})
|
203
|
-
|
204
|
-
response = http.request(req)
|
205
|
-
unless response.code == "204"
|
206
|
-
UI.user_error! "Polidea Store backend responded with [#{response.code}] #{response.body}"
|
207
|
-
end
|
208
|
-
|
209
|
-
return params[:app_name], params[:app_identifier], params[:version]
|
210
|
-
end
|
211
|
-
private_class_method :notify
|
212
|
-
|
213
|
-
def self.url(platform, app_identifier)
|
214
|
-
"#{base_url}/#{platform}/apps/#{app_identifier}/versions"
|
215
|
-
end
|
216
|
-
private_class_method :url
|
217
|
-
|
218
|
-
def self.base_url
|
219
|
-
"https://polideastore.herokuapp.com"
|
220
|
-
# "https://polideastore-staging.herokuapp.com"
|
221
|
-
end
|
222
|
-
private_class_method :base_url
|
223
|
-
|
224
|
-
def self.create_request(uri, upload_token, params)
|
225
|
-
req = Net::HTTP::Post.new(uri.request_uri)
|
226
|
-
req['Content-Type'] = 'application/json'
|
227
|
-
req['Upload-Token'] = upload_token
|
228
|
-
req.body = JSON.generate(params)
|
229
|
-
req
|
230
|
-
end
|
231
|
-
private_class_method :create_request
|
232
|
-
|
233
|
-
def self.itms_href(plist_url)
|
234
|
-
"itms-services://?action=download-manifest&url=#{URI.encode_www_form_component(plist_url)}"
|
235
|
-
end
|
236
|
-
private_class_method :itms_href
|
237
|
-
|
238
|
-
def self.get_url_scheme(plist)
|
239
|
-
url_scheme = nil
|
240
|
-
url_types = plist['CFBundleURLTypes']
|
241
|
-
unless url_types.nil?
|
242
|
-
url_type = url_types[0]
|
243
|
-
url_schemes = url_type['CFBundleURLSchemes']
|
244
|
-
unless url_schemes.nil?
|
245
|
-
url_scheme = url_schemes[0]
|
246
|
-
end
|
247
|
-
end
|
248
|
-
url_scheme
|
249
|
-
end
|
250
|
-
private_class_method :get_url_scheme
|
251
|
-
end
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
|
-
# rubocop:enable Metrics/MethodLength
|