app_store_connect 0.4.0 → 0.5.0

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: 981dee27af144a014c32c7bdbc11287a99de7bf0105448625a24a8023c61d4fc
4
- data.tar.gz: a7ba2630349bf2761f3b136968b9fa5aedf6fdec9a6f2278952bb1c44da90e0b
3
+ metadata.gz: a5f4c797a32fb88d807db77e401dac1f6d0d6fe74e027735eec4d855d4896115
4
+ data.tar.gz: f2d5a2e9e29687b1ae1dffa5d2e716fff950267149cad74d835482bfa987db6e
5
5
  SHA512:
6
- metadata.gz: d6850e6d871b0f651381cfe0862d26e56be84a59ec8b8d848190168ec5fe39bc9db9079968c10ec4f88b713dab7840edcf4ea20f1d727febbfff67133d61c2b7
7
- data.tar.gz: e7ce9a165daed457422bdee412aa8f06ba33d9c37d5a0fcaa3a455bb813e828b5d597b96bd6df16b69d906983fb46cabe28f438ecb7a9210749c5620e74c86d5
6
+ metadata.gz: 1a080cac1b6c67278e1aa3f909cae54cc1b7c7d14147ea08facfdac81ca7701c6732e11dbe3a8d4fc3c9556d2958308b46982de46ee5b58a7c5b863b57eca83c
7
+ data.tar.gz: 7dbae88cb1af01353d7d296269dfa673dc1cd96c4aaec3bc3c4ae2a196a8dd2296be84b4cbec866da85e0fb8e3caba3d11910696015f9c076e6d0a5ec3149916
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **Desktop (please complete the following information):**
27
+ - OS: [e.g. iOS]
28
+ - Browser [e.g. chrome, safari]
29
+ - Version [e.g. 22]
30
+
31
+ **Smartphone (please complete the following information):**
32
+ - Device: [e.g. iPhone6]
33
+ - OS: [e.g. iOS8.1]
34
+ - Browser [e.g. stock browser, safari]
35
+ - Version [e.g. 22]
36
+
37
+ **Additional context**
38
+ Add any other context about the problem here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
data/.rubocop.yml CHANGED
@@ -9,6 +9,12 @@
9
9
  #
10
10
  # See https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md
11
11
  #
12
+ Metrics/MethodLength:
13
+ Enabled: false
14
+
15
+ Metrics/BlockLength:
16
+ Enabled: false
17
+
12
18
  Style/Documentation:
13
19
  Enabled: false
14
20
 
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ ruby-2.6.3
data/.travis.yml CHANGED
@@ -1,11 +1,14 @@
1
1
  ---
2
- sudo: false
3
2
  language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.5.1
7
- before_install: gem install bundler -v 2.0.1
8
-
3
+ before_install:
4
+ - gem update --system --no-document
5
+ - gem install bundler --no-document
6
+ before_script:
7
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
8
+ - chmod +x ./cc-test-reporter
9
+ - ./cc-test-reporter before-build
9
10
  script:
10
11
  - bundle exec rspec
11
12
  - bundle exec rubocop
13
+ after_script:
14
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT -t simplecov
@@ -0,0 +1,76 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, sex characteristics, gender identity and expression,
9
+ level of experience, education, socio-economic status, nationality, personal
10
+ appearance, race, religion, or sexual identity and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at kyle.decot@icloud.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72
+
73
+ [homepage]: https://www.contributor-covenant.org
74
+
75
+ For answers to common questions about this code of conduct, see
76
+ https://www.contributor-covenant.org/faq
data/Gemfile.lock CHANGED
@@ -15,10 +15,15 @@ GEM
15
15
  i18n (>= 0.7, < 2)
16
16
  minitest (~> 5.1)
17
17
  tzinfo (~> 1.1)
18
+ addressable (2.6.0)
19
+ public_suffix (>= 2.0.2, < 4.0)
18
20
  ast (2.4.0)
19
21
  coderay (1.1.2)
20
22
  concurrent-ruby (1.1.5)
23
+ crack (0.4.3)
24
+ safe_yaml (~> 1.0.0)
21
25
  diff-lcs (1.3)
26
+ docile (1.3.2)
22
27
  factory_bot (5.0.2)
23
28
  activesupport (>= 4.2.0)
24
29
  ffi (1.11.1)
@@ -38,12 +43,14 @@ GEM
38
43
  guard (~> 2.1)
39
44
  guard-compat (~> 1.1)
40
45
  rspec (>= 2.99.0, < 4.0)
46
+ hashdiff (0.4.0)
41
47
  httparty (0.17.0)
42
48
  mime-types (~> 3.0)
43
49
  multi_xml (>= 0.5.2)
44
50
  i18n (1.6.0)
45
51
  concurrent-ruby (~> 1.0)
46
52
  jaro_winkler (1.5.3)
53
+ json (2.2.0)
47
54
  jwt (2.2.1)
48
55
  listen (3.1.5)
49
56
  rb-fsevent (~> 0.9, >= 0.9.4)
@@ -66,6 +73,7 @@ GEM
66
73
  pry (0.12.2)
67
74
  coderay (~> 1.1.0)
68
75
  method_source (~> 0.9.0)
76
+ public_suffix (3.1.1)
69
77
  rainbow (3.0.0)
70
78
  rake (10.5.0)
71
79
  rb-fsevent (0.10.3)
@@ -93,12 +101,23 @@ GEM
93
101
  unicode-display_width (>= 1.4.0, < 1.7)
94
102
  ruby-progressbar (1.10.1)
95
103
  ruby_dep (1.5.0)
104
+ safe_yaml (1.0.5)
96
105
  shellany (0.0.1)
106
+ simplecov (0.16.1)
107
+ docile (~> 1.1)
108
+ json (>= 1.8, < 3)
109
+ simplecov-html (~> 0.10.0)
110
+ simplecov-html (0.10.2)
97
111
  thor (0.20.3)
98
112
  thread_safe (0.3.6)
113
+ timecop (0.9.1)
99
114
  tzinfo (1.2.5)
100
115
  thread_safe (~> 0.1)
101
116
  unicode-display_width (1.6.0)
117
+ webmock (3.6.0)
118
+ addressable (>= 2.3.6)
119
+ crack (>= 0.3.2)
120
+ hashdiff (>= 0.4.0, < 2.0.0)
102
121
 
103
122
  PLATFORMS
104
123
  ruby
@@ -112,6 +131,9 @@ DEPENDENCIES
112
131
  rake (~> 10.0)
113
132
  rspec (~> 3.0)
114
133
  rubocop (~> 0.71.0)
134
+ simplecov (~> 0.16.1)
135
+ timecop (~> 0.9.1)
136
+ webmock (~> 3.6.0)
115
137
 
116
138
  BUNDLED WITH
117
139
  2.0.2
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
- # AppStoreConnect [![Build Status](https://travis-ci.com/kyledecot/app_store_connect.svg?branch=master)](https://travis-ci.com/kyledecot/app_store_connect) [![Gem Version](https://badge.fury.io/rb/app_store_connect.svg)](https://badge.fury.io/rb/app_store_connect)
1
+ # App Store Connect
2
2
 
3
- TODO
3
+ [![Build Status](https://travis-ci.com/kyledecot/app_store_connect.svg?branch=master)](https://travis-ci.com/kyledecot/app_store_connect) [![Gem Version](https://badge.fury.io/rb/app_store_connect.svg)](https://badge.fury.io/rb/app_store_connect) [![Maintainability](https://api.codeclimate.com/v1/badges/eb09ffa68f84f8da0b6d/maintainability)](https://codeclimate.com/github/kyledecot/app_store_connect/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/eb09ffa68f84f8da0b6d/test_coverage)](https://codeclimate.com/github/kyledecot/app_store_connect/test_coverage)
4
+
5
+ A Ruby interface to the [App Store Connect API](https://developer.apple.com/app-store-connect/api/)
4
6
 
5
7
  ## Installation
6
8
 
@@ -20,7 +22,17 @@ Or install it yourself as:
20
22
 
21
23
  ## Usage
22
24
 
23
- TODO
25
+ ```ruby
26
+ client = AppStoreConnect::Client.new(
27
+ issuer_id: issuer_id,
28
+ key_id: key_id,
29
+ private_key: private_key
30
+ )
31
+
32
+ client.apps
33
+ client.app('1234')
34
+ client.builds('1234')
35
+ ```
24
36
 
25
37
  ## Development
26
38
 
@@ -34,4 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency 'rake', '~> 10.0'
35
35
  spec.add_development_dependency 'rspec', '~> 3.0'
36
36
  spec.add_development_dependency 'rubocop', '~> 0.71.0'
37
+ spec.add_development_dependency 'simplecov', '~> 0.16.1'
38
+ spec.add_development_dependency 'timecop', '~> 0.9.1'
39
+ spec.add_development_dependency 'webmock', '~> 3.6.0'
37
40
  end
@@ -4,11 +4,22 @@ require 'jwt'
4
4
  require 'httparty'
5
5
 
6
6
  require 'app_store_connect/authorization'
7
+ require 'app_store_connect/parser'
7
8
  require 'app_store_connect/client'
8
9
  require 'app_store_connect/cli'
9
10
  require 'app_store_connect/bundle_id_create_request'
10
11
  require 'app_store_connect/user_invitation_create_request'
11
12
  require 'app_store_connect/version'
13
+ require 'app_store_connect/config'
14
+
15
+ require 'app_store_connect/type'
16
+ require 'app_store_connect/type/enum'
17
+
18
+ require 'app_store_connect/factory'
19
+ require 'app_store_connect/factory/builder/enum'
12
20
 
13
21
  module AppStoreConnect
22
+ Factory.register('enum', Factory::Builder::Enum)
23
+
24
+ Parser.parse!(Config::API)
14
25
  end
@@ -3,6 +3,9 @@
3
3
  module AppStoreConnect
4
4
  class Authorization
5
5
  AUDIENCE = 'appstoreconnect-v1'
6
+ ALGORITHM = 'ES256'
7
+
8
+ attr_reader :key_id, :issuer_id, :private_key
6
9
 
7
10
  def initialize(key_id:, issuer_id:, private_key:)
8
11
  @key_id = key_id
@@ -13,13 +16,17 @@ module AppStoreConnect
13
16
  def payload
14
17
  {
15
18
  exp: Time.now.to_i + 20 * 60,
16
- iss: @issuer_id,
19
+ iss: issuer_id,
17
20
  aud: AUDIENCE
18
21
  }
19
22
  end
20
23
 
24
+ def header_fields
25
+ { kid: key_id }
26
+ end
27
+
21
28
  def token
22
- JWT.encode(payload, @private_key, 'ES256', kid: @key_id)
29
+ JWT.encode(payload, private_key, ALGORITHM, header_fields)
23
30
  end
24
31
  end
25
32
  end
@@ -10,9 +10,9 @@ module AppStoreConnect
10
10
  @data = Data.new(*args)
11
11
  end
12
12
 
13
- def to_hash
13
+ def to_h
14
14
  {
15
- data: data.to_hash
15
+ data: data.to_h
16
16
  }
17
17
  end
18
18
  end
@@ -17,9 +17,9 @@ module AppStoreConnect
17
17
  TYPE
18
18
  end
19
19
 
20
- def to_hash
20
+ def to_h
21
21
  {
22
- attributes: attributes.to_hash,
22
+ attributes: attributes.to_h,
23
23
  type: type
24
24
  }
25
25
  end
@@ -6,20 +6,21 @@ module AppStoreConnect
6
6
  class Attributes
7
7
  attr_accessor :identifier, :name, :platform, :seed_id
8
8
 
9
- def initialize(identifier:, name:, platform:, seed_id:)
9
+ def initialize(identifier:, name:, platform:, seed_id: nil)
10
10
  self.identifier = identifier
11
11
  self.name = name
12
12
  self.platform = platform
13
13
  self.seed_id = seed_id
14
14
  end
15
15
 
16
- def to_hash
16
+ def to_h
17
17
  {
18
18
  identifier: identifier,
19
19
  name: name,
20
- platform: platform,
21
- seed_id: seed_id
22
- }
20
+ platform: platform
21
+ }.tap do |hash|
22
+ hash[:seed_id] = seed_id unless seed_id.nil?
23
+ end
23
24
  end
24
25
  end
25
26
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Config
5
+ API = JSON.parse(
6
+ File.read(
7
+ File.join(__dir__, '../config/api.json')
8
+ )
9
+ )
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ class Factory
5
+ class BuilderNotRegistered < StandardError
6
+ def initialize(name)
7
+ super("Builder not registered: #{name}")
8
+ end
9
+ end
10
+
11
+ def self.register(name, builder)
12
+ builders[name] = builder
13
+ end
14
+
15
+ def self.builders
16
+ @builders ||= {}
17
+ end
18
+
19
+ def self.build(name, options = {})
20
+ builders.fetch(name) do
21
+ raise BuilderNotRegistered, name
22
+ end.call(options)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ class Factory
5
+ module Builder
6
+ class Enum
7
+ def self.call(values:)
8
+ Class.new(Type::Enum) do |base|
9
+ base.const_set('VALUES', values)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ class Parser
5
+ def self.parse!(config)
6
+ parse_types(config['Type'])
7
+ end
8
+
9
+ def self.parse_types(types)
10
+ types.each do |name, options|
11
+ type = options.delete('type')
12
+
13
+ klass = Factory.build(type, options.deep_symbolize_keys)
14
+
15
+ AppStoreConnect::Type.const_set(name, klass)
16
+ end
17
+ end
18
+ private_class_method :parse_types
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Type
5
+ end
6
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AppStoreConnect
4
+ module Type
5
+ class Enum
6
+ attr_reader :value
7
+
8
+ def initialize(value:)
9
+ @value = value
10
+ end
11
+
12
+ def self.const_missing(const)
13
+ return const_set(const, new(value: const.to_s)) if const.to_s.in?(const_get('VALUES'))
14
+
15
+ super(const)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppStoreConnect
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
@@ -0,0 +1,67 @@
1
+ {
2
+ "Type": {
3
+ "CapabilityType": {
4
+ "type": "enum",
5
+ "values": [
6
+ "ICLOUD",
7
+ "IN_APP_PURCHASE",
8
+ "GAME_CENTER",
9
+ "PUSH_NOTIFICATIONS",
10
+ "WALLET",
11
+ "INTER_APP_AUDIO",
12
+ "MAPS",
13
+ "ASSOCIATED_DOMAINS",
14
+ "PERSONAL_VPN",
15
+ "APP_GROUPS",
16
+ "HEALTHKIT",
17
+ "HOMEKIT",
18
+ "WIRELESS_ACCESSORY_CONFIGURATION",
19
+ "APPLE_PAY",
20
+ "DATA_PROTECTION",
21
+ "SIRIKIT",
22
+ "NETWORK_EXTENSIONS",
23
+ "MULTIPATH",
24
+ "HOT_SPOT",
25
+ "NFC_TAG_READING",
26
+ "CLASSKIT",
27
+ "AUTOFILL_CREDENTIAL_PROVIDER",
28
+ "ACCESS_WIFI_INFORMATION"
29
+ ]
30
+ },
31
+ "CertificateType": {
32
+ "type": "enum",
33
+ "values": [
34
+ "OS_DEVELOPMENT",
35
+ "IOS_DISTRIBUTION",
36
+ "MAC_APP_DISTRIBUTION",
37
+ "MAC_INSTALLER_DISTRIBUTION",
38
+ "MAC_APP_DEVELOPMENT",
39
+ "DEVELOPER_ID_KEXT",
40
+ "DEVELOPER_ID_APPLICATION"
41
+ ]
42
+ },
43
+ "BundleIdPlatform": {
44
+ "type": "enum",
45
+ "values": [
46
+ "IOS",
47
+ "MAC_OS"
48
+ ]
49
+ },
50
+ "UserRole": {
51
+ "type": "enum",
52
+ "values": [
53
+ "ADMIN",
54
+ "FINANCE",
55
+ "TECHNICAL",
56
+ "SALES",
57
+ "MARKETING",
58
+ "DEVELOPER",
59
+ "ACCOUNT_HOLDER",
60
+ "READ_ONLY",
61
+ "APP_MANAGER",
62
+ "ACCESS_TO_REPORTS",
63
+ "CUSTOMER_REPORTS"
64
+ ]
65
+ }
66
+ }
67
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_store_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.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-21 00:00:00.000000000 Z
11
+ date: 2019-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -164,6 +164,48 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.71.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: simplecov
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.16.1
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.16.1
181
+ - !ruby/object:Gem::Dependency
182
+ name: timecop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.9.1
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.9.1
195
+ - !ruby/object:Gem::Dependency
196
+ name: webmock
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: 3.6.0
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: 3.6.0
167
209
  description:
168
210
  email:
169
211
  - kyle.decot@icloud.com
@@ -172,11 +214,14 @@ executables:
172
214
  extensions: []
173
215
  extra_rdoc_files: []
174
216
  files:
217
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
218
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
175
219
  - ".gitignore"
176
220
  - ".rspec"
177
221
  - ".rubocop.yml"
178
222
  - ".ruby-version"
179
223
  - ".travis.yml"
224
+ - CODE_OF_CONDUCT.md
180
225
  - Gemfile
181
226
  - Gemfile.lock
182
227
  - Guardfile
@@ -194,8 +239,15 @@ files:
194
239
  - lib/app_store_connect/bundle_id_create_request/data/attributes.rb
195
240
  - lib/app_store_connect/cli.rb
196
241
  - lib/app_store_connect/client.rb
242
+ - lib/app_store_connect/config.rb
243
+ - lib/app_store_connect/factory.rb
244
+ - lib/app_store_connect/factory/builder/enum.rb
245
+ - lib/app_store_connect/parser.rb
246
+ - lib/app_store_connect/type.rb
247
+ - lib/app_store_connect/type/enum.rb
197
248
  - lib/app_store_connect/user_invitation_create_request.rb
198
249
  - lib/app_store_connect/version.rb
250
+ - lib/config/api.json
199
251
  homepage: https://github.com/kyledecot/app_store_connect
200
252
  licenses:
201
253
  - MIT