app_store_connect 0.2.0 → 0.3.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 +4 -4
- data/.rubocop.yml +19 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +41 -5
- data/README.md +1 -1
- data/Rakefile +4 -2
- data/app_store_connect.gemspec +22 -18
- data/bin/console +4 -3
- data/exe/app_store_connect +1 -0
- data/lib/app_store_connect/authorization.rb +6 -11
- data/lib/app_store_connect/bundle_id_create_request/data/attributes.rb +27 -0
- data/lib/app_store_connect/bundle_id_create_request/data.rb +28 -0
- data/lib/app_store_connect/bundle_id_create_request.rb +19 -0
- data/lib/app_store_connect/cli.rb +25 -24
- data/lib/app_store_connect/client.rb +49 -12
- data/lib/app_store_connect/user_invitation_create_request.rb +15 -0
- data/lib/app_store_connect/version.rb +3 -1
- data/lib/app_store_connect.rb +10 -6
- metadata +61 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4b2c4d83e880edac137a3d8a6b46da40e3ec239f4258175eee7206de53c92506
|
|
4
|
+
data.tar.gz: 1f902bc3963bfbdeb678252fcae19c3607203c1c47a7bc3b70bbf8697457b5a3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 86438e4528f070a37c36a8b9744f38a410821a26c606e249498a9cffa5a5bd063841c28a92e1d06cd79164dff2adc4dcbbd41c5b0224552fd7bda297f612935b
|
|
7
|
+
data.tar.gz: 106e7dfea9dfbdd4b809d2c909613b9d5b4fec602e210d04e21bec3c7bdc8eb5984b4296a5c93583f23e34ba5ac73664a9730a0f6e394a8e7e2c1df6ef0ff319
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# The behavior of RuboCop can be controlled via the .rubocop.yml
|
|
2
|
+
# configuration file. It makes it possible to enable/disable
|
|
3
|
+
# certain cops (checks) and to alter their behavior if they accept
|
|
4
|
+
# any parameters. The file can be placed either in your home
|
|
5
|
+
# directory or in some project directory.
|
|
6
|
+
#
|
|
7
|
+
# RuboCop will start looking for the configuration file in the directory
|
|
8
|
+
# where the inspected file is and continue its way up to the root directory.
|
|
9
|
+
#
|
|
10
|
+
# See https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md
|
|
11
|
+
#
|
|
12
|
+
Style/Documentation:
|
|
13
|
+
Enabled: false
|
|
14
|
+
|
|
15
|
+
Metrics/LineLength:
|
|
16
|
+
Enabled: false
|
|
17
|
+
|
|
18
|
+
Style/StructInheritance:
|
|
19
|
+
Enabled: false
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.6.3
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
app_store_connect (0.
|
|
4
|
+
app_store_connect (0.3.0)
|
|
5
|
+
activesupport (~> 5.2.3)
|
|
5
6
|
gli (~> 2.17)
|
|
6
7
|
httparty (~> 0.16)
|
|
7
8
|
jwt (~> 2.1)
|
|
@@ -9,17 +10,38 @@ PATH
|
|
|
9
10
|
GEM
|
|
10
11
|
remote: https://rubygems.org/
|
|
11
12
|
specs:
|
|
13
|
+
activesupport (5.2.3)
|
|
14
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
15
|
+
i18n (>= 0.7, < 2)
|
|
16
|
+
minitest (~> 5.1)
|
|
17
|
+
tzinfo (~> 1.1)
|
|
18
|
+
ast (2.4.0)
|
|
12
19
|
coderay (1.1.2)
|
|
20
|
+
concurrent-ruby (1.1.5)
|
|
13
21
|
diff-lcs (1.3)
|
|
14
|
-
|
|
15
|
-
|
|
22
|
+
factory_bot (5.0.2)
|
|
23
|
+
activesupport (>= 4.2.0)
|
|
24
|
+
gli (2.18.0)
|
|
25
|
+
httparty (0.17.0)
|
|
26
|
+
mime-types (~> 3.0)
|
|
16
27
|
multi_xml (>= 0.5.2)
|
|
17
|
-
|
|
28
|
+
i18n (1.6.0)
|
|
29
|
+
concurrent-ruby (~> 1.0)
|
|
30
|
+
jaro_winkler (1.5.3)
|
|
31
|
+
jwt (2.2.1)
|
|
18
32
|
method_source (0.9.2)
|
|
33
|
+
mime-types (3.2.2)
|
|
34
|
+
mime-types-data (~> 3.2015)
|
|
35
|
+
mime-types-data (3.2019.0331)
|
|
36
|
+
minitest (5.11.3)
|
|
19
37
|
multi_xml (0.6.0)
|
|
38
|
+
parallel (1.17.0)
|
|
39
|
+
parser (2.6.3.0)
|
|
40
|
+
ast (~> 2.4.0)
|
|
20
41
|
pry (0.12.2)
|
|
21
42
|
coderay (~> 1.1.0)
|
|
22
43
|
method_source (~> 0.9.0)
|
|
44
|
+
rainbow (3.0.0)
|
|
23
45
|
rake (10.5.0)
|
|
24
46
|
rspec (3.8.0)
|
|
25
47
|
rspec-core (~> 3.8.0)
|
|
@@ -34,6 +56,18 @@ GEM
|
|
|
34
56
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
35
57
|
rspec-support (~> 3.8.0)
|
|
36
58
|
rspec-support (3.8.0)
|
|
59
|
+
rubocop (0.71.0)
|
|
60
|
+
jaro_winkler (~> 1.5.1)
|
|
61
|
+
parallel (~> 1.10)
|
|
62
|
+
parser (>= 2.6)
|
|
63
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
64
|
+
ruby-progressbar (~> 1.7)
|
|
65
|
+
unicode-display_width (>= 1.4.0, < 1.7)
|
|
66
|
+
ruby-progressbar (1.10.1)
|
|
67
|
+
thread_safe (0.3.6)
|
|
68
|
+
tzinfo (1.2.5)
|
|
69
|
+
thread_safe (~> 0.1)
|
|
70
|
+
unicode-display_width (1.6.0)
|
|
37
71
|
|
|
38
72
|
PLATFORMS
|
|
39
73
|
ruby
|
|
@@ -41,9 +75,11 @@ PLATFORMS
|
|
|
41
75
|
DEPENDENCIES
|
|
42
76
|
app_store_connect!
|
|
43
77
|
bundler (~> 2.0)
|
|
78
|
+
factory_bot (~> 5.0.2)
|
|
44
79
|
pry (~> 0.12)
|
|
45
80
|
rake (~> 10.0)
|
|
46
81
|
rspec (~> 3.0)
|
|
82
|
+
rubocop (~> 0.71.0)
|
|
47
83
|
|
|
48
84
|
BUNDLED WITH
|
|
49
|
-
2.0.
|
|
85
|
+
2.0.2
|
data/README.md
CHANGED
data/Rakefile
CHANGED
data/app_store_connect.gemspec
CHANGED
|
@@ -1,33 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
|
|
2
|
-
lib = File.expand_path(
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require
|
|
5
|
+
require 'app_store_connect/version'
|
|
5
6
|
|
|
6
7
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
8
|
+
spec.name = 'app_store_connect'
|
|
8
9
|
spec.version = AppStoreConnect::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
10
|
+
spec.authors = ['Kyle Decot']
|
|
11
|
+
spec.email = ['kyle.decot@icloud.com']
|
|
11
12
|
|
|
12
|
-
spec.summary =
|
|
13
|
+
spec.summary = 'Write a short summary, because RubyGems requires one.'
|
|
13
14
|
# spec.description = %q{TODO: Write a longer description or delete this line.}
|
|
14
|
-
spec.homepage =
|
|
15
|
-
spec.license =
|
|
15
|
+
spec.homepage = 'https://github.com/kyledecot/app_store_connect'
|
|
16
|
+
spec.license = 'MIT'
|
|
16
17
|
|
|
17
|
-
spec.files = Dir.chdir(File.expand_path(
|
|
18
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
18
19
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
19
20
|
end
|
|
20
21
|
|
|
21
|
-
spec.bindir =
|
|
22
|
+
spec.bindir = 'exe'
|
|
22
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
23
|
-
spec.require_paths = [
|
|
24
|
+
spec.require_paths = ['lib']
|
|
24
25
|
|
|
25
|
-
spec.add_runtime_dependency
|
|
26
|
-
spec.add_runtime_dependency
|
|
27
|
-
spec.add_runtime_dependency
|
|
26
|
+
spec.add_runtime_dependency 'activesupport', '~> 5.2.3'
|
|
27
|
+
spec.add_runtime_dependency 'gli', '~> 2.17'
|
|
28
|
+
spec.add_runtime_dependency 'httparty', '~> 0.16'
|
|
29
|
+
spec.add_runtime_dependency 'jwt', '~> 2.1'
|
|
28
30
|
|
|
29
|
-
spec.add_development_dependency
|
|
30
|
-
spec.add_development_dependency
|
|
31
|
-
spec.add_development_dependency
|
|
32
|
-
spec.add_development_dependency
|
|
31
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
|
32
|
+
spec.add_development_dependency 'factory_bot', '~> 5.0.2'
|
|
33
|
+
spec.add_development_dependency 'pry', '~> 0.12'
|
|
34
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
36
|
+
spec.add_development_dependency 'rubocop', '~> 0.71.0'
|
|
33
37
|
end
|
data/bin/console
CHANGED
data/exe/app_store_connect
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module AppStoreConnect
|
|
2
4
|
class Authorization
|
|
3
|
-
AUDIENCE =
|
|
5
|
+
AUDIENCE = 'appstoreconnect-v1'
|
|
4
6
|
|
|
5
|
-
def initialize(key_id:, issuer_id:,
|
|
7
|
+
def initialize(key_id:, issuer_id:, private_key:)
|
|
6
8
|
@key_id = key_id
|
|
7
9
|
@issuer_id = issuer_id
|
|
8
|
-
@
|
|
10
|
+
@private_key = OpenSSL::PKey.read(private_key)
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def payload
|
|
@@ -17,14 +19,7 @@ module AppStoreConnect
|
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def token
|
|
20
|
-
JWT.encode(payload, private_key,
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def private_key
|
|
24
|
-
@private_key ||= begin
|
|
25
|
-
path = File.expand_path(@private_key_path)
|
|
26
|
-
OpenSSL::PKey.read(File.read(path))
|
|
27
|
-
end
|
|
22
|
+
JWT.encode(payload, @private_key, 'ES256', kid: @key_id)
|
|
28
23
|
end
|
|
29
24
|
end
|
|
30
25
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module AppStoreConnect
|
|
4
|
+
class BundleIdCreateRequest
|
|
5
|
+
class Data
|
|
6
|
+
class Attributes
|
|
7
|
+
attr_accessor :identifier, :name, :platform, :seed_id
|
|
8
|
+
|
|
9
|
+
def initialize(identifier:, name:, platform:, seed_id:)
|
|
10
|
+
self.identifier = identifier
|
|
11
|
+
self.name = name
|
|
12
|
+
self.platform = platform
|
|
13
|
+
self.seed_id = seed_id
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def to_hash
|
|
17
|
+
{
|
|
18
|
+
identifier: identifier,
|
|
19
|
+
name: name,
|
|
20
|
+
platform: platform,
|
|
21
|
+
seed_id: seed_id
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative './data/attributes'
|
|
4
|
+
|
|
5
|
+
module AppStoreConnect
|
|
6
|
+
class BundleIdCreateRequest
|
|
7
|
+
class Data
|
|
8
|
+
TYPE = 'bundleIds'
|
|
9
|
+
|
|
10
|
+
attr_reader :attributes
|
|
11
|
+
|
|
12
|
+
def initialize(*args)
|
|
13
|
+
@attributes = Attributes.new(*args)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def type
|
|
17
|
+
TYPE
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def to_hash
|
|
21
|
+
{
|
|
22
|
+
attributes: attributes.to_hash,
|
|
23
|
+
type: type
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative './bundle_id_create_request/data'
|
|
4
|
+
|
|
5
|
+
module AppStoreConnect
|
|
6
|
+
class BundleIdCreateRequest
|
|
7
|
+
attr_reader :data
|
|
8
|
+
|
|
9
|
+
def initialize(*args)
|
|
10
|
+
@data = Data.new(*args)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def to_hash
|
|
14
|
+
{
|
|
15
|
+
data: data.to_hash
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -1,43 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require 'gli'
|
|
4
|
+
|
|
5
|
+
require 'app_store_connect/version'
|
|
4
6
|
|
|
5
7
|
module AppStoreConnect
|
|
6
8
|
class CLI
|
|
7
9
|
extend GLI::App
|
|
8
10
|
|
|
9
|
-
program_desc
|
|
11
|
+
program_desc 'Here is my program description'
|
|
10
12
|
version AppStoreConnect::VERSION
|
|
11
13
|
|
|
12
14
|
flag [:i, 'issuer-id'],
|
|
13
|
-
|
|
15
|
+
default_value: ENV['APP_STORE_CONNECT_ISSUER_ID']
|
|
14
16
|
|
|
15
|
-
flag [:p, 'private-key
|
|
16
|
-
|
|
17
|
+
flag [:p, 'private-key'],
|
|
18
|
+
default_value: ENV['APP_STORE_CONNECT_PRIVATE_KEY']
|
|
17
19
|
|
|
18
20
|
flag [:k, 'key-id'],
|
|
19
|
-
|
|
21
|
+
default_value: ENV['APP_STORE_CONNECT_KEY_ID']
|
|
20
22
|
|
|
21
|
-
command
|
|
22
|
-
c.flag [
|
|
23
|
+
command 'app' do |c|
|
|
24
|
+
c.flag %i[a app_id], required: true
|
|
23
25
|
|
|
24
26
|
c.action do |_, options|
|
|
25
27
|
app_id = options[:app_id]
|
|
26
|
-
|
|
28
|
+
puts client.app(app_id).to_json
|
|
27
29
|
end
|
|
28
30
|
end
|
|
29
31
|
|
|
30
|
-
command
|
|
31
|
-
c.desc
|
|
32
|
-
c.long_desc
|
|
32
|
+
command 'apps' do |c|
|
|
33
|
+
c.desc 'Gets all of the apps'
|
|
34
|
+
c.long_desc 'The long desc'
|
|
33
35
|
|
|
34
|
-
c.action do |global_options, _,_|
|
|
36
|
+
c.action do |global_options, _, _|
|
|
35
37
|
puts client(global_options).apps.to_json
|
|
36
38
|
end
|
|
37
39
|
end
|
|
38
40
|
|
|
39
|
-
command
|
|
40
|
-
c.flag [
|
|
41
|
+
command 'builds' do |c|
|
|
42
|
+
c.flag %i[a app_id], required: true
|
|
41
43
|
|
|
42
44
|
c.action do |global_options, options|
|
|
43
45
|
app_id = options[:app_id]
|
|
@@ -46,9 +48,9 @@ module AppStoreConnect
|
|
|
46
48
|
end
|
|
47
49
|
end
|
|
48
50
|
|
|
49
|
-
command
|
|
50
|
-
c.flag [
|
|
51
|
-
c.switch [
|
|
51
|
+
command 'build' do |c|
|
|
52
|
+
c.flag %i[a app_id], required: true
|
|
53
|
+
c.switch %i[b build_id], required: true
|
|
52
54
|
|
|
53
55
|
c.action do |global_options, options|
|
|
54
56
|
app_id = options[:app_id]
|
|
@@ -58,14 +60,13 @@ module AppStoreConnect
|
|
|
58
60
|
end
|
|
59
61
|
end
|
|
60
62
|
|
|
61
|
-
private
|
|
62
|
-
|
|
63
63
|
def self.client(global_options)
|
|
64
64
|
AppStoreConnect::Client.new(
|
|
65
|
-
:
|
|
66
|
-
:
|
|
67
|
-
:
|
|
65
|
+
private_key: global_options[:private_key],
|
|
66
|
+
issuer_id: global_options[:issuer_id],
|
|
67
|
+
key_id: global_options[:key_id]
|
|
68
68
|
)
|
|
69
69
|
end
|
|
70
|
+
private_class_method :client
|
|
70
71
|
end
|
|
71
72
|
end
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'active_support/all'
|
|
4
|
+
|
|
1
5
|
module AppStoreConnect
|
|
2
6
|
class Client
|
|
3
|
-
ENDPOINT =
|
|
7
|
+
ENDPOINT = 'https://api.appstoreconnect.apple.com/v1'
|
|
4
8
|
|
|
5
|
-
def initialize(key_id:, issuer_id:,
|
|
9
|
+
def initialize(key_id:, issuer_id:, private_key:)
|
|
6
10
|
@authorization = Authorization.new(
|
|
7
|
-
:
|
|
8
|
-
:
|
|
9
|
-
:
|
|
11
|
+
private_key: private_key,
|
|
12
|
+
key_id: key_id,
|
|
13
|
+
issuer_id: issuer_id
|
|
10
14
|
)
|
|
11
15
|
end
|
|
12
16
|
|
|
13
17
|
def apps
|
|
14
|
-
get(
|
|
18
|
+
get('apps')
|
|
15
19
|
end
|
|
16
20
|
|
|
17
21
|
def app(id)
|
|
@@ -26,24 +30,57 @@ module AppStoreConnect
|
|
|
26
30
|
get("apps/#{app_id}/builds/#{build_id}")
|
|
27
31
|
end
|
|
28
32
|
|
|
33
|
+
def invite_user(first_name:, last_name:, email:, roles:)
|
|
34
|
+
invitation = UserInvitationCreateRequest.new(
|
|
35
|
+
first_name: first_name,
|
|
36
|
+
last_name: last_name,
|
|
37
|
+
email: email,
|
|
38
|
+
roles: roles
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
post('userInvitations', invitation.body.to_json)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def create_bundle_id(*args)
|
|
45
|
+
request = BundleIdCreateRequest.new(*args)
|
|
46
|
+
|
|
47
|
+
post('bundleIds', body(request))
|
|
48
|
+
end
|
|
49
|
+
|
|
29
50
|
def users
|
|
30
|
-
get(
|
|
31
|
-
end
|
|
51
|
+
get('users')
|
|
52
|
+
end
|
|
32
53
|
|
|
33
54
|
def user_invitations
|
|
34
|
-
get(
|
|
35
|
-
end
|
|
55
|
+
get('userInvitations')
|
|
56
|
+
end
|
|
36
57
|
|
|
37
58
|
private
|
|
38
59
|
|
|
60
|
+
def body(request)
|
|
61
|
+
request
|
|
62
|
+
.to_hash
|
|
63
|
+
.deep_transform_keys { |k| k.to_s.camelize(:lower) }
|
|
64
|
+
.to_json
|
|
65
|
+
end
|
|
66
|
+
|
|
39
67
|
def get(path)
|
|
40
68
|
response = HTTParty.get("#{ENDPOINT}/#{path}", headers: headers)
|
|
41
69
|
|
|
42
|
-
response[
|
|
70
|
+
response['data']
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def post(path, body)
|
|
74
|
+
response = HTTParty.post("#{ENDPOINT}/#{path}", headers: headers, body: body)
|
|
75
|
+
|
|
76
|
+
response
|
|
43
77
|
end
|
|
44
78
|
|
|
45
79
|
def headers
|
|
46
|
-
{
|
|
80
|
+
{
|
|
81
|
+
'Authorization' => "Bearer #{@authorization.token}",
|
|
82
|
+
'Content-Type' => 'application/json'
|
|
83
|
+
}
|
|
47
84
|
end
|
|
48
85
|
end
|
|
49
86
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module AppStoreConnect
|
|
4
|
+
class UserInvitationCreateRequest < Struct.new(:first_name, :last_name, :email, :roles)
|
|
5
|
+
def body
|
|
6
|
+
{ 'data' =>
|
|
7
|
+
{ 'type' => 'userInvitations', 'attributes' =>
|
|
8
|
+
{ 'firstName' => @first_name, 'lastName' => @last_name, 'email' => @email, 'roles' => @roles, 'allAppsVisible' => true, 'provisioningAllowed' => true } } }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def to_s
|
|
12
|
+
body.to_json
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/app_store_connect.rb
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
require "httparty"
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
|
|
7
|
-
require
|
|
3
|
+
require 'jwt'
|
|
4
|
+
require 'httparty'
|
|
5
|
+
|
|
6
|
+
require 'app_store_connect/authorization'
|
|
7
|
+
require 'app_store_connect/client'
|
|
8
|
+
require 'app_store_connect/cli'
|
|
9
|
+
require 'app_store_connect/bundle_id_create_request'
|
|
10
|
+
require 'app_store_connect/user_invitation_create_request'
|
|
11
|
+
require 'app_store_connect/version'
|
|
8
12
|
|
|
9
13
|
module AppStoreConnect
|
|
10
14
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: app_store_connect
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kyle Decot
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-06-
|
|
11
|
+
date: 2019-06-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: activesupport
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 5.2.3
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 5.2.3
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: gli
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '2.17'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '2.17'
|
|
13
41
|
- !ruby/object:Gem::Dependency
|
|
14
42
|
name: httparty
|
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,33 +67,47 @@ dependencies:
|
|
|
39
67
|
- !ruby/object:Gem::Version
|
|
40
68
|
version: '2.1'
|
|
41
69
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
70
|
+
name: bundler
|
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
|
44
72
|
requirements:
|
|
45
73
|
- - "~>"
|
|
46
74
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '2.
|
|
48
|
-
type: :
|
|
75
|
+
version: '2.0'
|
|
76
|
+
type: :development
|
|
49
77
|
prerelease: false
|
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
79
|
requirements:
|
|
52
80
|
- - "~>"
|
|
53
81
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '2.
|
|
82
|
+
version: '2.0'
|
|
55
83
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
84
|
+
name: factory_bot
|
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
|
58
86
|
requirements:
|
|
59
87
|
- - "~>"
|
|
60
88
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
89
|
+
version: 5.0.2
|
|
62
90
|
type: :development
|
|
63
91
|
prerelease: false
|
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
93
|
requirements:
|
|
66
94
|
- - "~>"
|
|
67
95
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
96
|
+
version: 5.0.2
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: pry
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0.12'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0.12'
|
|
69
111
|
- !ruby/object:Gem::Dependency
|
|
70
112
|
name: rake
|
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -95,19 +137,19 @@ dependencies:
|
|
|
95
137
|
- !ruby/object:Gem::Version
|
|
96
138
|
version: '3.0'
|
|
97
139
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
140
|
+
name: rubocop
|
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
|
100
142
|
requirements:
|
|
101
143
|
- - "~>"
|
|
102
144
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
145
|
+
version: 0.71.0
|
|
104
146
|
type: :development
|
|
105
147
|
prerelease: false
|
|
106
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
149
|
requirements:
|
|
108
150
|
- - "~>"
|
|
109
151
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
152
|
+
version: 0.71.0
|
|
111
153
|
description:
|
|
112
154
|
email:
|
|
113
155
|
- kyle.decot@icloud.com
|
|
@@ -118,6 +160,8 @@ extra_rdoc_files: []
|
|
|
118
160
|
files:
|
|
119
161
|
- ".gitignore"
|
|
120
162
|
- ".rspec"
|
|
163
|
+
- ".rubocop.yml"
|
|
164
|
+
- ".ruby-version"
|
|
121
165
|
- ".travis.yml"
|
|
122
166
|
- Gemfile
|
|
123
167
|
- Gemfile.lock
|
|
@@ -130,8 +174,12 @@ files:
|
|
|
130
174
|
- exe/app_store_connect
|
|
131
175
|
- lib/app_store_connect.rb
|
|
132
176
|
- lib/app_store_connect/authorization.rb
|
|
177
|
+
- lib/app_store_connect/bundle_id_create_request.rb
|
|
178
|
+
- lib/app_store_connect/bundle_id_create_request/data.rb
|
|
179
|
+
- lib/app_store_connect/bundle_id_create_request/data/attributes.rb
|
|
133
180
|
- lib/app_store_connect/cli.rb
|
|
134
181
|
- lib/app_store_connect/client.rb
|
|
182
|
+
- lib/app_store_connect/user_invitation_create_request.rb
|
|
135
183
|
- lib/app_store_connect/version.rb
|
|
136
184
|
homepage: https://github.com/kyledecot/app_store_connect
|
|
137
185
|
licenses:
|
|
@@ -152,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
152
200
|
- !ruby/object:Gem::Version
|
|
153
201
|
version: '0'
|
|
154
202
|
requirements: []
|
|
155
|
-
rubygems_version: 3.0.
|
|
203
|
+
rubygems_version: 3.0.3
|
|
156
204
|
signing_key:
|
|
157
205
|
specification_version: 4
|
|
158
206
|
summary: Write a short summary, because RubyGems requires one.
|