app_store_connect 0.26.0 → 0.28.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
  SHA256:
3
- metadata.gz: ef752f09a7b3d400e0ece9a9cf89ec86b1957f794e9950b84608d0f2b6670b1a
4
- data.tar.gz: 1fdb0410a3a9c51a93c02bb847879b2ce08d4cd495c59594220dbf98b5d64df7
3
+ metadata.gz: 5ef9f9632eeaad4a816afb0d83fcaa7ff57e794246d596a5c915336574bfa99c
4
+ data.tar.gz: 0b428bdd0afd39c066a49bf43fc5471710c70db5e24dd2f65b54d00235db6ef7
5
5
  SHA512:
6
- metadata.gz: 42edf337f0421cf95315a8c90bca374af21838c704dd41023dd7facc7b437e3646250cb937d5849577791b79efa632764f285d24a648e883fc88a9f8563072aa
7
- data.tar.gz: 483c6dd94e28128403f02921bda793550b578da97e8e2b8e3aa1a87029232f4e50dc38f9d774c25270efa184f75561c4258b65ba59055e4ca7437c4bd6f3deaf
6
+ metadata.gz: 9b47b98cc719f0a1b94ea6feecd68f714a4078f24059e9619bc2ae1bfc92f8e3bbf79432f101e4fbdbf2f3e024501e9c9d9b44ad635074f00426c18007b7b5b1
7
+ data.tar.gz: 6f23cbefcc7dee9f6ca0d7b2f6795c8111b0b9acfbbfdfbef75d4ff0d9ef6d90fa007d30ac4305881e6b1d102c9bb0ccfe3c835918af5e68d0e23cba9f00c6c8
@@ -143,7 +143,7 @@ jobs:
143
143
  - name: Upload Release Asset
144
144
  uses: actions/upload-release-asset@v1
145
145
  env:
146
- GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKENt }}
146
+ GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
147
147
  with:
148
148
  upload_url: ${{ steps.create_release.outputs.upload_url }}
149
149
  asset_path: app_store_connect-${{ env.APP_STORE_CONNECT_VERSION }}.gem
data/README.md CHANGED
@@ -7,25 +7,29 @@ A Ruby interface to the [App Store Connect API](https://developer.apple.com/app-
7
7
 
8
8
  Add this line to your application's Gemfile:
9
9
 
10
- ```ruby
10
+ ```Ruby
11
11
  gem 'app_store_connect'
12
12
  ```
13
13
 
14
14
  And then execute:
15
15
 
16
- $ bundle
16
+ ```Bash
17
+ $ bundle
18
+ ```
17
19
 
18
20
  Or install it yourself as:
19
21
 
20
- $ gem install app_store_connect
22
+ ```Bash
23
+ $ gem install app_store_connect
24
+ ```
21
25
 
22
26
  ## Usage
23
27
 
24
- ```ruby
28
+ ```ruby
25
29
  AppStoreConnect.config = {
26
- issuer_id: issuer_id,
27
- key_id: key_id,
28
- private_key: private_key
30
+ issuer_id: 'issuer_id',
31
+ key_id: 'key_id',
32
+ private_key: File.read(File.new("/Path/AuthKey.p8"))
29
33
  }
30
34
 
31
35
  app_store_connect = AppStoreConnect::Client.new
@@ -58,6 +62,60 @@ app_store_connect.sales_reports(
58
62
  )
59
63
  ```
60
64
 
65
+ ### Fetch All Devices
66
+
67
+ ```ruby
68
+
69
+ fetchAllDevices = app_store_connect.devices
70
+ puts JSON.pretty_generate(fetchAllDevice)
71
+
72
+ ```
73
+
74
+ ### Register a New Device
75
+
76
+ ```ruby
77
+ result = app_store_connect.create_device(
78
+ name: 'name',
79
+ platform: 'IOS',
80
+ udid: 'udid'
81
+ )
82
+
83
+ puts JSON.pretty_generate(result)
84
+ ```
85
+
86
+ ### Update an App Store Version
87
+
88
+ ```ruby
89
+ app_store_connect.update_app_store_version id: '<app-store-version-id>', version_string: '1.0'
90
+ ```
91
+
92
+ ### Link a Build to an App Store Version
93
+
94
+ ```ruby
95
+ app_store_connect.update_app_store_version_build id: '<app-store-version-id>', build_id: '<build-id>'
96
+ ```
97
+
98
+ ### Create a Review Submission Item
99
+
100
+ ```ruby
101
+ app_store_connect.create_review_submission_item relationships: {reviewSubmission: {data: {id: '<review-submission-id>', type: 'reviewSubmissions'}},
102
+ appStoreVersion: {data: {id: '<app-store-version-id>', type: 'appStoreVersions'}}}
103
+ ```
104
+
105
+ ## Q&A
106
+
107
+ ### How to understand the `devices, sales_reports, create_bundle_id` keyword seen in the demo?
108
+
109
+ It's function key from `schema.json` file.
110
+
111
+ ### How to understand `()` in the demo, and when should use it? eg: `create_bundle_id()`, `sales_reports()`
112
+
113
+ `()` is mean: you have mapped to `http_body_type` in file `schema.json`
114
+
115
+ ### How to set this content in `()`
116
+
117
+ `http_body_type` have a value type. Based on this value, we can find the definition of the relevant configuration in the source code of ruby.
118
+
61
119
  ## Development
62
120
 
63
121
  After checking out the repo, run `bundle install` to install dependencies. Then, run `rake spec` to run the tests. You can also run `rake console` for an interactive prompt that will allow you to experiment.
@@ -25,7 +25,6 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_runtime_dependency 'activesupport', '>= 6.0.0'
27
27
  spec.add_runtime_dependency 'jwt', '>= 1.4', '<= 2.5.0'
28
- spec.add_runtime_dependency 'mixpanel-ruby', '<= 2.2.0'
29
28
 
30
29
  spec.add_development_dependency 'bundler'
31
30
  spec.add_development_dependency 'factory_bot', '~> 6.2.1'
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class AppStoreVersionBuildLinkageRequest < CreateRequest
7
+ data do
8
+ id :build_id
9
+ type 'builds'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class AppStoreVersionCreateRequest < CreateRequest
7
+ data do
8
+ type 'appStoreVersions'
9
+
10
+ attributes do
11
+ property :copyright
12
+ property :earliest_release_date
13
+ property :platform, required: true
14
+ property :release_type
15
+ property :version_string, required: true
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class AppStoreVersionPhasedReleaseCreateRequest < CreateRequest
7
+ data do
8
+ type 'appStoreVersionPhasedReleases'
9
+
10
+ attributes do
11
+ property :phased_release_state
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class AppStoreVersionPhasedReleaseUpdateRequest < CreateRequest
7
+ data do
8
+ id
9
+ type 'appStoreVersionPhasedReleases'
10
+
11
+ attributes do
12
+ property :phased_release_state
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class AppStoreVersionUpdateRequest < CreateRequest
7
+ data do
8
+ id
9
+ type 'appStoreVersions'
10
+
11
+ attributes do
12
+ property :copyright
13
+ property :earliest_release_date
14
+ property :release_type
15
+ property :version_string
16
+ property :downloadable
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class BuildUpdateRequest < CreateRequest
7
+ data do
8
+ id
9
+ type 'builds'
10
+
11
+ attributes do
12
+ property :expired
13
+ property :uses_non_exempt_encryption
14
+ end
15
+ end
16
+ end
17
+ end
@@ -6,7 +6,6 @@ require 'app_store_connect/request'
6
6
  require 'app_store_connect/schema'
7
7
  require 'app_store_connect/client/authorization'
8
8
  require 'app_store_connect/client/options'
9
- require 'app_store_connect/client/usage'
10
9
  require 'app_store_connect/client/registry'
11
10
  require 'app_store_connect/client/utils'
12
11
 
@@ -14,7 +13,6 @@ module AppStoreConnect
14
13
  class Client
15
14
  def initialize(**kwargs)
16
15
  @options = Options.new(kwargs)
17
- @usage = Usage.new(@options.slice(*Usage::OPTIONS))
18
16
  @authorization = Authorization.new(@options.slice(*Authorization::OPTIONS))
19
17
  @registry = Registry.new(@options.slice(*Registry::OPTIONS))
20
18
  end
@@ -44,11 +42,10 @@ module AppStoreConnect
44
42
  private
45
43
 
46
44
  def call(web_service_endpoint, **kwargs)
47
- raise "invalid http method: #{web_service_endpoint.http_method}" unless %i[get delete post].include?(web_service_endpoint.http_method)
45
+ raise "invalid http method: #{web_service_endpoint.http_method}" unless %i[get delete post patch].include?(web_service_endpoint.http_method)
48
46
 
49
47
  request = build_request(web_service_endpoint, **kwargs)
50
48
 
51
- @usage.track
52
49
  response = request.execute
53
50
 
54
51
  Utils.decode(response.body, response.content_type) if response.body
@@ -80,7 +77,7 @@ module AppStoreConnect
80
77
  headers: headers
81
78
  }
82
79
 
83
- options[:http_body] = http_body(web_service_endpoint, **kwargs) if web_service_endpoint.http_method == :post
80
+ options[:http_body] = http_body(web_service_endpoint, **kwargs) if %i[post patch].include?(web_service_endpoint.http_method)
84
81
 
85
82
  Request.new(**options)
86
83
  end
@@ -13,18 +13,22 @@ module AppStoreConnect
13
13
  klass = Class.new do |data|
14
14
  include Object::Attributes
15
15
  include Object::Type
16
+ include Object::Id
16
17
 
17
18
  data.send(:define_method, :initialize) do |**kwargs|
18
19
  instance_variable_set('@relationships', kwargs.delete(:relationships).to_h)
19
20
  instance_variable_set('@attributes', data::Attributes.new(**kwargs))
21
+ instance_variable_set('@id', kwargs[id_arg_name])
20
22
  end
21
23
 
22
24
  def to_h
23
- {
25
+ props = {
24
26
  relationships: @relationships,
25
27
  attributes: attributes.to_h,
26
28
  type: type
27
29
  }
30
+ props[:id] = @id if id?
31
+ props.reject { |_k, v| v.blank? }
28
32
  end
29
33
  end
30
34
 
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+
5
+ module AppStoreConnect
6
+ module Object
7
+ module Id
8
+ extend ActiveSupport::Concern
9
+
10
+ class_methods do
11
+ def id(arg_name = :id)
12
+ @include_id_in_body = true
13
+ @id_arg_name = arg_name
14
+ end
15
+ end
16
+
17
+ included do
18
+ def id?
19
+ self.class.instance_variable_get('@include_id_in_body')
20
+ end
21
+
22
+ def id_arg_name
23
+ self.class.instance_variable_get('@id_arg_name')
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class ReviewSubmissionCreateRequest < CreateRequest
7
+ data do
8
+ type 'reviewSubmissions'
9
+
10
+ attributes do
11
+ property :platform, required: true
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class ReviewSubmissionItemCreateRequest < CreateRequest
7
+ data do
8
+ type 'reviewSubmissionItems'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'app_store_connect/create_request'
4
+
5
+ module AppStoreConnect
6
+ class ReviewSubmissionUpdateRequest < CreateRequest
7
+ data do
8
+ id
9
+ type 'reviewSubmissions'
10
+
11
+ attributes do
12
+ property :canceled
13
+ property :submitted
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppStoreConnect
4
- VERSION = '0.26.0'
4
+ VERSION = '0.28.0'
5
5
  end
@@ -2,17 +2,27 @@
2
2
 
3
3
  require 'app_store_connect/client'
4
4
  require 'app_store_connect/object/type'
5
+ require 'app_store_connect/object/id'
5
6
  require 'app_store_connect/object/attributes'
6
7
  require 'app_store_connect/object/properties'
7
8
  require 'app_store_connect/object/data'
8
9
  require 'app_store_connect/version'
9
10
 
10
- require 'app_store_connect/bundle_id_create_request'
11
+ require 'app_store_connect/app_store_version_build_linkage_request'
12
+ require 'app_store_connect/app_store_version_create_request'
13
+ require 'app_store_connect/app_store_version_phased_release_create_request'
14
+ require 'app_store_connect/app_store_version_phased_release_update_request'
15
+ require 'app_store_connect/app_store_version_update_request'
16
+ require 'app_store_connect/build_update_request'
11
17
  require 'app_store_connect/bundle_id_capability_create_request'
18
+ require 'app_store_connect/bundle_id_create_request'
12
19
  require 'app_store_connect/certificate_create_request'
13
20
  require 'app_store_connect/device_create_request'
14
- require 'app_store_connect/user_invitation_create_request'
15
21
  require 'app_store_connect/profile_create_request'
22
+ require 'app_store_connect/review_submission_create_request'
23
+ require 'app_store_connect/review_submission_item_create_request'
24
+ require 'app_store_connect/review_submission_update_request'
25
+ require 'app_store_connect/user_invitation_create_request'
16
26
 
17
27
  module AppStoreConnect
18
28
  @config = {}