app_store_connect-0.38.0/0000755000004100000410000000000014453372134015345 5ustar www-datawww-dataapp_store_connect-0.38.0/Gemfile.lock0000644000004100000410000001121214453372134017564 0ustar www-datawww-dataPATH remote: . specs: app_store_connect (0.38.0) activesupport (>= 6.0.0) jwt (>= 1.4) zeitwerk (>= 2.6.7) GEM remote: https://rubygems.org/ specs: activesupport (7.0.4.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) addressable (2.8.1) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) async (1.30.3) console (~> 1.10) nio4r (~> 2.3) timers (~> 4.1) async-http (0.60.1) async (>= 1.25) async-io (>= 1.28) async-pool (>= 0.2) protocol-http (~> 0.24.0) protocol-http1 (~> 0.15.0) protocol-http2 (~> 0.15.0) traces (>= 0.8.0) async-http-faraday (0.11.0) async-http (~> 0.42) faraday async-io (1.34.3) async async-pool (0.3.12) async (>= 1.25) cgi (0.3.6) coderay (1.1.3) concurrent-ruby (1.2.2) console (1.16.2) fiber-local crack (0.4.5) rexml diff-lcs (1.5.0) docile (1.4.0) erb (4.0.2) cgi (>= 0.3.3) factory_bot (6.2.1) activesupport (>= 5.0.0) faraday (2.7.4) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-http-cache (2.4.1) faraday (>= 0.8) faraday-net_http (3.0.2) ffi (1.15.5) fiber-local (1.0.0) formatador (1.1.0) github_changelog_generator (1.16.4) activesupport async (>= 1.25.0) async-http-faraday faraday-http-cache multi_json octokit (~> 4.6) rainbow (>= 2.2.1) rake (>= 10.0) guard (2.18.0) formatador (>= 0.2.4) listen (>= 2.7, < 4.0) lumberjack (>= 1.0.12, < 2.0) nenv (~> 0.1) notiffany (~> 0.0) pry (>= 0.13.0) shellany (~> 0.0) thor (>= 0.18.1) guard-compat (1.2.1) guard-rspec (4.7.3) guard (~> 2.1) guard-compat (~> 1.1) rspec (>= 2.99.0, < 4.0) hashdiff (1.0.1) i18n (1.12.0) concurrent-ruby (~> 1.0) json (2.6.3) jwt (2.7.0) listen (3.7.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) lumberjack (1.2.8) method_source (1.0.0) minitest (5.18.0) multi_json (1.15.0) nenv (0.3.0) nio4r (2.5.8) notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) octokit (4.25.1) faraday (>= 1, < 3) sawyer (~> 0.9) parallel (1.23.0) parser (3.2.2.0) ast (~> 2.4.1) protocol-hpack (1.4.2) protocol-http (0.24.0) protocol-http1 (0.15.0) protocol-http (~> 0.22) protocol-http2 (0.15.0) protocol-hpack (~> 1.4) protocol-http (~> 0.18) pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) public_suffix (5.0.0) rainbow (3.1.1) rake (13.0.6) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) regexp_parser (2.8.0) rexml (3.2.5) rspec (3.12.0) rspec-core (~> 3.12.0) rspec-expectations (~> 3.12.0) rspec-mocks (~> 3.12.0) rspec-core (3.12.1) rspec-support (~> 3.12.0) rspec-expectations (3.12.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-mocks (3.12.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) rubocop (1.50.2) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.28.0) parser (>= 3.2.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) semantic (1.6.1) shellany (0.0.1) simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) thor (1.2.1) timecop (0.9.6) timers (4.3.5) traces (0.8.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) unicode-display_width (2.4.2) webmock (3.18.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) zeitwerk (2.6.8) PLATFORMS arm64-darwin-21 arm64-darwin-22 x86_64-darwin-22 x86_64-linux DEPENDENCIES app_store_connect! bundler erb (~> 4.0.2) factory_bot (~> 6.2.1) github_changelog_generator (= 1.16.4) guard-rspec (~> 4.7.3) pry (~> 0.14.1) rake (~> 13.0.6) rspec (~> 3.12.0) rubocop (~> 1.50.1) rubyzip semantic (~> 1.6.1) simplecov (~> 0.22.0) timecop (~> 0.9.5) webmock (~> 3.18.1) BUNDLED WITH 2.3.24 app_store_connect-0.38.0/.rspec0000644000004100000410000000006514453372134016463 0ustar www-datawww-data--format documentation --color --require spec_helper app_store_connect-0.38.0/README.md0000644000004100000410000001076014453372134016630 0ustar www-datawww-data

App Store Connect for Ruby

[![CI/CD](https://github.com/kyledecot/app_store_connect/actions/workflows/default.yml/badge.svg)](https://github.com/kyledecot/app_store_connect/actions/workflows/default.yml)
A Ruby interface to the [App Store Connect API](https://developer.apple.com/app-store-connect/api/) ## Installation Add this line to your application's Gemfile: ```Ruby gem 'app_store_connect' ``` And then execute: ```Bash $ bundle ``` Or install it yourself as: ```Bash $ gem install app_store_connect ``` ## Usage ```ruby AppStoreConnect.config = { issuer_id: 'issuer_id', key_id: 'key_id', private_key: File.read(File.new("/Path/AuthKey.p8")) } app_store_connect = AppStoreConnect::Client.new app_store_connect.apps app_store_connect.app(id: '1234') app_store_connect.builds(id: '1234') ``` ### Create Bundle ID ```ruby app_store_connect.create_bundle_id( name: 'Example', identifier: 'com.kyledecot.Example', platform: 'IOS' ) ``` ### Sales Reports ```ruby app_store_connect.sales_reports( filter: { report_type: 'SALES', report_sub_type: 'SUMMARY', frequency: 'DAILY', vendor_number: '123456' } ) ``` ### Fetch All Devices ```ruby devices = app_store_connect.devices puts JSON.pretty_generate(devices) ``` ### Register a New Device ```ruby created_device = app_store_connect.create_device( name: 'name', platform: 'IOS', udid: 'udid' ) puts JSON.pretty_generate(created_device) ``` ### Update an App Store Version ```ruby app_store_connect.update_app_store_version( id: '', version_string: '1.0' ) ``` ### Link a Build to an App Store Version ```ruby app_store_connect.update_app_store_version_build( id: '', build_id: '' ) ``` ### Create a Review Submission Item ```ruby app_store_connect.create_review_submission_item( relationships: { reviewSubmission: { data: { id: '', type: 'reviewSubmissions' } }, appStoreVersion: { data: { id: '', type: 'appStoreVersions' } } } ) ``` ### Create In-App Purchase Price Schedule ```ruby app_store_connect.create_in_app_purchase_price_schedule( relationships: { manual_prices: { data: [ { type: 'inAppPurchasePrices', id: '${price1}' } ] }, in_app_purchase: { data: { type: 'inAppPurchases', id: '' } } }, included: [ { type: 'inAppPurchasePrices', id: '${price1}', attributes: { startDate: nil }, relationships: { inAppPurchaseV2: { data: { type: 'inAppPurchases', id: '' } }, inAppPurchasePricePoint: { data: { type: 'inAppPurchasePricePoints', id: '' } } } } ] ) ``` ### Add or remove access for a Beta Group to a Build ```ruby app_store_connect.add_build_beta_groups( id: '', data: [{id: ''}] ) app_store_connect.delete_build_beta_groups( id: '', data: [{id: ''}] ) ``` ## FAQ ### How to understand the `devices, sales_reports, create_bundle_id` keyword seen in the demo? It's function key from `schema.json` file. ### How to understand `()` in the demo, and when should use it? eg: `create_bundle_id()`, `sales_reports()` `()` is mean: you have mapped to `http_body_type` in file `schema.json` ### How to set this content in `()` `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. ### How to include related resources? ```ruby app_store_connect.in_app_purchase(id: 123, include: 'appStoreReviewScreenshot,pricePoints') ``` ### How to filter fields? ```ruby app_store_connect.in_app_purchase(id: 123, fields: 'name,productId') ``` ## Development 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. ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/kyledecot/app_store_connect. ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). app_store_connect-0.38.0/bin/0000755000004100000410000000000014453372134016115 5ustar www-datawww-dataapp_store_connect-0.38.0/bin/console0000755000004100000410000000026614453372134017511 0ustar www-datawww-data#!/usr/bin/env ruby # frozen_string_literal: true require 'bundler/setup' require 'app_store_connect' require 'rake' load './lib/tasks/console.rake' Rake::Task['console'].execute app_store_connect-0.38.0/CHANGELOG.md0000644000004100000410000006677514453372134017203 0ustar www-datawww-data# Changelog ## [v0.38.0](https://github.com/kyledecot/app_store_connect/tree/v0.38.0) (2023-05-02) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.37.0...v0.38.0) **Closed issues:** - execution expired \(Net::OpenTimeout\) [\#128](https://github.com/kyledecot/app_store_connect/issues/128) **Merged pull requests:** - Bump zeitwerk from 2.6.7 to 2.6.8 [\#166](https://github.com/kyledecot/app_store_connect/pull/166) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump rubocop from 1.50.1 to 1.50.2 [\#165](https://github.com/kyledecot/app_store_connect/pull/165) ([dependabot[bot]](https://github.com/apps/dependabot)) - Add ability to add or remove access for beta groups to a build [\#164](https://github.com/kyledecot/app_store_connect/pull/164) ([zormandi](https://github.com/zormandi)) - Update rubocop requirement from ~\> 1.49.0 to ~\> 1.50.1 [\#163](https://github.com/kyledecot/app_store_connect/pull/163) ([dependabot[bot]](https://github.com/apps/dependabot)) - Update rubocop requirement from ~\> 1.48.0 to ~\> 1.49.0 [\#162](https://github.com/kyledecot/app_store_connect/pull/162) ([dependabot[bot]](https://github.com/apps/dependabot)) - Update deprecated app price points endpoint [\#161](https://github.com/kyledecot/app_store_connect/pull/161) ([tmarkanov](https://github.com/tmarkanov)) - Bump rubocop from 1.48.0 to 1.48.1 [\#160](https://github.com/kyledecot/app_store_connect/pull/160) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump activesupport from 7.0.4.2 to 7.0.4.3 [\#159](https://github.com/kyledecot/app_store_connect/pull/159) ([dependabot[bot]](https://github.com/apps/dependabot)) - Update rubocop requirement from ~\> 1.47.0 to ~\> 1.48.0 [\#157](https://github.com/kyledecot/app_store_connect/pull/157) ([dependabot[bot]](https://github.com/apps/dependabot)) - Fix bug in BetaBuildLocalizationModifyRequest [\#156](https://github.com/kyledecot/app_store_connect/pull/156) ([zormandi](https://github.com/zormandi)) - Update rubocop requirement from ~\> 1.46.0 to ~\> 1.47.0 [\#155](https://github.com/kyledecot/app_store_connect/pull/155) ([dependabot[bot]](https://github.com/apps/dependabot)) - Update rubocop requirement from ~\> 1.45.1 to ~\> 1.46.0 [\#153](https://github.com/kyledecot/app_store_connect/pull/153) ([dependabot[bot]](https://github.com/apps/dependabot)) - Add Spec for Request Body [\#152](https://github.com/kyledecot/app_store_connect/pull/152) ([kyledecot](https://github.com/kyledecot)) - Add Spec for Object::Properties [\#151](https://github.com/kyledecot/app_store_connect/pull/151) ([kyledecot](https://github.com/kyledecot)) - Add App Store Version Localization management capability [\#150](https://github.com/kyledecot/app_store_connect/pull/150) ([zormandi](https://github.com/zormandi)) - Commit In-App Purchase Review Screenshot [\#149](https://github.com/kyledecot/app_store_connect/pull/149) ([gregg-platogo](https://github.com/gregg-platogo)) - Add Client Builder [\#147](https://github.com/kyledecot/app_store_connect/pull/147) ([kyledecot](https://github.com/kyledecot)) - Add Request Body \(Create/Update\) [\#146](https://github.com/kyledecot/app_store_connect/pull/146) ([kyledecot](https://github.com/kyledecot)) - Use zeitwerk for autoloading [\#145](https://github.com/kyledecot/app_store_connect/pull/145) ([kyledecot](https://github.com/kyledecot)) - Ability to build create request from schema [\#144](https://github.com/kyledecot/app_store_connect/pull/144) ([kyledecot](https://github.com/kyledecot)) - Add ability to read/file specification [\#143](https://github.com/kyledecot/app_store_connect/pull/143) ([kyledecot](https://github.com/kyledecot)) - Add ability to download OpenAPI Specification [\#142](https://github.com/kyledecot/app_store_connect/pull/142) ([kyledecot](https://github.com/kyledecot)) - Add Create Request Builder [\#141](https://github.com/kyledecot/app_store_connect/pull/141) ([kyledecot](https://github.com/kyledecot)) - Update rubocop requirement from ~\> 1.36.0 to ~\> 1.45.1 [\#140](https://github.com/kyledecot/app_store_connect/pull/140) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump timecop from 0.9.5 to 0.9.6 [\#139](https://github.com/kyledecot/app_store_connect/pull/139) ([dependabot[bot]](https://github.com/apps/dependabot)) - Update simplecov requirement from ~\> 0.21.2 to ~\> 0.22.0 [\#138](https://github.com/kyledecot/app_store_connect/pull/138) ([dependabot[bot]](https://github.com/apps/dependabot)) - Update rspec requirement from ~\> 3.11.0 to ~\> 3.12.0 [\#137](https://github.com/kyledecot/app_store_connect/pull/137) ([dependabot[bot]](https://github.com/apps/dependabot)) - Bump pry from 0.14.1 to 0.14.2 [\#136](https://github.com/kyledecot/app_store_connect/pull/136) ([dependabot[bot]](https://github.com/apps/dependabot)) - Create Included Concern [\#135](https://github.com/kyledecot/app_store_connect/pull/135) ([kyledecot](https://github.com/kyledecot)) ## [v0.37.0](https://github.com/kyledecot/app_store_connect/tree/v0.37.0) (2023-02-14) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.36.0...v0.37.0) **Merged pull requests:** - Manage In-App Purchase Localizations and Price Points [\#133](https://github.com/kyledecot/app_store_connect/pull/133) ([tmarkanov](https://github.com/tmarkanov)) ## [v0.36.0](https://github.com/kyledecot/app_store_connect/tree/v0.36.0) (2023-02-08) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.35.0...v0.36.0) ## [v0.35.0](https://github.com/kyledecot/app_store_connect/tree/v0.35.0) (2023-02-08) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.34.0...v0.35.0) ## [v0.34.0](https://github.com/kyledecot/app_store_connect/tree/v0.34.0) (2023-02-08) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.33.0...v0.34.0) **Merged pull requests:** - Readme [\#132](https://github.com/kyledecot/app_store_connect/pull/132) ([kyledecot](https://github.com/kyledecot)) ## [v0.33.0](https://github.com/kyledecot/app_store_connect/tree/v0.33.0) (2023-02-07) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.32.0...v0.33.0) **Merged pull requests:** - Manage in app purchases [\#131](https://github.com/kyledecot/app_store_connect/pull/131) ([gregg-platogo](https://github.com/gregg-platogo)) ## [v0.32.0](https://github.com/kyledecot/app_store_connect/tree/v0.32.0) (2023-02-02) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.31.0...v0.32.0) ## [v0.31.0](https://github.com/kyledecot/app_store_connect/tree/v0.31.0) (2023-02-02) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.30.0...v0.31.0) **Merged pull requests:** - Bump activesupport from 7.0.4 to 7.0.4.2 [\#130](https://github.com/kyledecot/app_store_connect/pull/130) ([dependabot[bot]](https://github.com/apps/dependabot)) - Add `create_beta_build_localization` & `modify_beta_build_localization` support [\#106](https://github.com/kyledecot/app_store_connect/pull/106) ([RishatShamsutdinov](https://github.com/RishatShamsutdinov)) ## [v0.30.0](https://github.com/kyledecot/app_store_connect/tree/v0.30.0) (2023-02-02) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.29.0...v0.30.0) **Merged pull requests:** - Support Ruby versions 3.x [\#129](https://github.com/kyledecot/app_store_connect/pull/129) ([tmarkanov](https://github.com/tmarkanov)) - Remove max version limit for jwt dependency [\#127](https://github.com/kyledecot/app_store_connect/pull/127) ([darbyfrey](https://github.com/darbyfrey)) - Fix bug where manual app release failed because of missing required class [\#126](https://github.com/kyledecot/app_store_connect/pull/126) ([zormandi](https://github.com/zormandi)) ## [v0.29.0](https://github.com/kyledecot/app_store_connect/tree/v0.29.0) (2022-11-17) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.28.0...v0.29.0) **Merged pull requests:** - Add new endpoint for creating App Store Version Release Requests [\#125](https://github.com/kyledecot/app_store_connect/pull/125) ([zormandi](https://github.com/zormandi)) - Create FUNDING.yml [\#124](https://github.com/kyledecot/app_store_connect/pull/124) ([kyledecot](https://github.com/kyledecot)) ## [v0.28.0](https://github.com/kyledecot/app_store_connect/tree/v0.28.0) (2022-10-28) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.27.0...v0.28.0) **Closed issues:** - Can we remove tracking? [\#121](https://github.com/kyledecot/app_store_connect/issues/121) - How does use it? [\#119](https://github.com/kyledecot/app_store_connect/issues/119) **Merged pull requests:** - Add new endpoints and remove MixPanel [\#123](https://github.com/kyledecot/app_store_connect/pull/123) ([zormandi](https://github.com/zormandi)) - Update README.md [\#120](https://github.com/kyledecot/app_store_connect/pull/120) ([RbBtSn0w](https://github.com/RbBtSn0w)) ## [v0.27.0](https://github.com/kyledecot/app_store_connect/tree/v0.27.0) (2022-09-30) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.26.0...v0.27.0) **Merged pull requests:** - Add new endpoints [\#118](https://github.com/kyledecot/app_store_connect/pull/118) ([zormandi](https://github.com/zormandi)) ## [v0.26.0](https://github.com/kyledecot/app_store_connect/tree/v0.26.0) (2022-09-28) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.25.0...v0.26.0) **Closed issues:** - Ruby 2.7 compatibility [\#111](https://github.com/kyledecot/app_store_connect/issues/111) **Merged pull requests:** - Use Ruby 2.7 in GHA [\#117](https://github.com/kyledecot/app_store_connect/pull/117) ([kyledecot](https://github.com/kyledecot)) - Bring back Ruby 2.7 compatibility [\#116](https://github.com/kyledecot/app_store_connect/pull/116) ([zormandi](https://github.com/zormandi)) - Updates for Ruby 3 [\#110](https://github.com/kyledecot/app_store_connect/pull/110) ([kyledecot](https://github.com/kyledecot)) - Bump jwt version to 2.5.0 [\#109](https://github.com/kyledecot/app_store_connect/pull/109) ([bejczib](https://github.com/bejczib)) ## [v0.25.0](https://github.com/kyledecot/app_store_connect/tree/v0.25.0) (2022-06-25) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.23.0...v0.25.0) **Merged pull requests:** - Bump addressable from 2.6.0 to 2.8.0 [\#103](https://github.com/kyledecot/app_store_connect/pull/103) ([dependabot[bot]](https://github.com/apps/dependabot)) - Add `create_bundle_id` & `create_bundle_id_capability` support [\#101](https://github.com/kyledecot/app_store_connect/pull/101) ([pranav-g10](https://github.com/pranav-g10)) - Bump json from 2.2.0 to 2.3.1 [\#99](https://github.com/kyledecot/app_store_connect/pull/99) ([dependabot[bot]](https://github.com/apps/dependabot)) ## [v0.23.0](https://github.com/kyledecot/app_store_connect/tree/v0.23.0) (2020-06-16) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.22.0...v0.23.0) ## [v0.22.0](https://github.com/kyledecot/app_store_connect/tree/v0.22.0) (2020-06-16) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.21.0...v0.22.0) **Merged pull requests:** - Refactor Workflows [\#98](https://github.com/kyledecot/app_store_connect/pull/98) ([kyledecot](https://github.com/kyledecot)) ## [v0.21.0](https://github.com/kyledecot/app_store_connect/tree/v0.21.0) (2020-06-16) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.20.0...v0.21.0) **Closed issues:** - require 'app\_store\_connect' is not working [\#96](https://github.com/kyledecot/app_store_connect/issues/96) **Merged pull requests:** - Require ActiveSupport \>= 6.0.3.1 [\#97](https://github.com/kyledecot/app_store_connect/pull/97) ([kyledecot](https://github.com/kyledecot)) - Bump activesupport from 5.2.3 to 6.0.3.1 [\#95](https://github.com/kyledecot/app_store_connect/pull/95) ([dependabot[bot]](https://github.com/apps/dependabot)) ## [v0.20.0](https://github.com/kyledecot/app_store_connect/tree/v0.20.0) (2020-02-17) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.19.0...v0.20.0) **Merged pull requests:** - add support for parsing gzip responses [\#93](https://github.com/kyledecot/app_store_connect/pull/93) ([addbrick](https://github.com/addbrick)) ## [v0.19.0](https://github.com/kyledecot/app_store_connect/tree/v0.19.0) (2019-10-26) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.18.0...v0.19.0) **Closed issues:** - How do I set GET query parameters? [\#90](https://github.com/kyledecot/app_store_connect/issues/90) **Merged pull requests:** - Symbolize/Underscore Response [\#91](https://github.com/kyledecot/app_store_connect/pull/91) ([kyledecot](https://github.com/kyledecot)) - Add Client::Utils [\#88](https://github.com/kyledecot/app_store_connect/pull/88) ([kyledecot](https://github.com/kyledecot)) ## [v0.18.0](https://github.com/kyledecot/app_store_connect/tree/v0.18.0) (2019-10-22) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.17.0...v0.18.0) **Merged pull requests:** - Track Version [\#87](https://github.com/kyledecot/app_store_connect/pull/87) ([kyledecot](https://github.com/kyledecot)) - Update Rubocop [\#86](https://github.com/kyledecot/app_store_connect/pull/86) ([kyledecot](https://github.com/kyledecot)) ## [v0.17.0](https://github.com/kyledecot/app_store_connect/tree/v0.17.0) (2019-10-22) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.16.0...v0.17.0) **Implemented enhancements:** - Adds Script to Publish to Github Package Registry/Rubygems.org [\#81](https://github.com/kyledecot/app_store_connect/pull/81) ([kyledecot](https://github.com/kyledecot)) **Fixed bugs:** - Fix Client Option Merging [\#85](https://github.com/kyledecot/app_store_connect/pull/85) ([kyledecot](https://github.com/kyledecot)) **Closed issues:** - Key Not Found :schema [\#84](https://github.com/kyledecot/app_store_connect/issues/84) **Merged pull requests:** - Use bin/publish in Workflow [\#83](https://github.com/kyledecot/app_store_connect/pull/83) ([kyledecot](https://github.com/kyledecot)) - Update Workflows [\#82](https://github.com/kyledecot/app_store_connect/pull/82) ([kyledecot](https://github.com/kyledecot)) ## [v0.16.0](https://github.com/kyledecot/app_store_connect/tree/v0.16.0) (2019-10-18) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.15.0...v0.16.0) **Fixed bugs:** - Use send for \#define\_method [\#80](https://github.com/kyledecot/app_store_connect/pull/80) ([kyledecot](https://github.com/kyledecot)) **Closed issues:** - require 'app\_store\_connect' failed [\#78](https://github.com/kyledecot/app_store_connect/issues/78) ## [v0.15.0](https://github.com/kyledecot/app_store_connect/tree/v0.15.0) (2019-09-25) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.14.0...v0.15.0) **Merged pull requests:** - Update publish.yml [\#79](https://github.com/kyledecot/app_store_connect/pull/79) ([kyledecot](https://github.com/kyledecot)) ## [v0.14.0](https://github.com/kyledecot/app_store_connect/tree/v0.14.0) (2019-09-20) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.13.0...v0.14.0) **Merged pull requests:** - ActiveSupport [\#77](https://github.com/kyledecot/app_store_connect/pull/77) ([kyledecot](https://github.com/kyledecot)) - Add Schema::Object [\#76](https://github.com/kyledecot/app_store_connect/pull/76) ([kyledecot](https://github.com/kyledecot)) - Remove Rake [\#75](https://github.com/kyledecot/app_store_connect/pull/75) ([kyledecot](https://github.com/kyledecot)) - Extract Usage from Client [\#74](https://github.com/kyledecot/app_store_connect/pull/74) ([kyledecot](https://github.com/kyledecot)) ## [v0.13.0](https://github.com/kyledecot/app_store_connect/tree/v0.13.0) (2019-09-13) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.12.2...v0.13.0) **Merged pull requests:** - Remove Dynamic Type Classes [\#73](https://github.com/kyledecot/app_store_connect/pull/73) ([kyledecot](https://github.com/kyledecot)) - Replaces Travis CI w/ Github Actions [\#72](https://github.com/kyledecot/app_store_connect/pull/72) ([kyledecot](https://github.com/kyledecot)) - Renames Workflows [\#71](https://github.com/kyledecot/app_store_connect/pull/71) ([kyledecot](https://github.com/kyledecot)) - Add Lint Workflow [\#70](https://github.com/kyledecot/app_store_connect/pull/70) ([kyledecot](https://github.com/kyledecot)) - Adds Test Workflow [\#69](https://github.com/kyledecot/app_store_connect/pull/69) ([kyledecot](https://github.com/kyledecot)) ## [v0.12.2](https://github.com/kyledecot/app_store_connect/tree/v0.12.2) (2019-09-04) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.12.1...v0.12.2) **Merged pull requests:** - Fix Open Ended Dependencies [\#68](https://github.com/kyledecot/app_store_connect/pull/68) ([kyledecot](https://github.com/kyledecot)) ## [v0.12.1](https://github.com/kyledecot/app_store_connect/tree/v0.12.1) (2019-09-04) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.12.0...v0.12.1) **Merged pull requests:** - Add Action [\#58](https://github.com/kyledecot/app_store_connect/pull/58) ([kyledecot](https://github.com/kyledecot)) ## [v0.12.0](https://github.com/kyledecot/app_store_connect/tree/v0.12.0) (2019-08-28) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.11.0...v0.12.0) **Merged pull requests:** - Add Analytics [\#65](https://github.com/kyledecot/app_store_connect/pull/65) ([kyledecot](https://github.com/kyledecot)) - Add GET Endpoints [\#64](https://github.com/kyledecot/app_store_connect/pull/64) ([kyledecot](https://github.com/kyledecot)) - Add Remaining DELETE Endpoints [\#63](https://github.com/kyledecot/app_store_connect/pull/63) ([kyledecot](https://github.com/kyledecot)) - Delete User [\#62](https://github.com/kyledecot/app_store_connect/pull/62) ([kyledecot](https://github.com/kyledecot)) - Add Finance Reports [\#61](https://github.com/kyledecot/app_store_connect/pull/61) ([kyledecot](https://github.com/kyledecot)) ## [v0.11.0](https://github.com/kyledecot/app_store_connect/tree/v0.11.0) (2019-08-23) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.10.0...v0.11.0) **Merged pull requests:** - Add Sales Reports [\#60](https://github.com/kyledecot/app_store_connect/pull/60) ([kyledecot](https://github.com/kyledecot)) - Add CamelCase Support to Query [\#59](https://github.com/kyledecot/app_store_connect/pull/59) ([kyledecot](https://github.com/kyledecot)) - Refactors Client [\#57](https://github.com/kyledecot/app_store_connect/pull/57) ([kyledecot](https://github.com/kyledecot)) - Adds Schema::Type [\#56](https://github.com/kyledecot/app_store_connect/pull/56) ([kyledecot](https://github.com/kyledecot)) ## [v0.10.0](https://github.com/kyledecot/app_store_connect/tree/v0.10.0) (2019-08-20) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.9.0...v0.10.0) **Merged pull requests:** - Rename invite\_user to create\_user\_invitation [\#55](https://github.com/kyledecot/app_store_connect/pull/55) ([kyledecot](https://github.com/kyledecot)) - Add Certificate/Device/Profile Create [\#54](https://github.com/kyledecot/app_store_connect/pull/54) ([kyledecot](https://github.com/kyledecot)) - Config -\> Schema [\#53](https://github.com/kyledecot/app_store_connect/pull/53) ([kyledecot](https://github.com/kyledecot)) ## [v0.9.0](https://github.com/kyledecot/app_store_connect/tree/v0.9.0) (2019-08-19) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.8.0...v0.9.0) **Merged pull requests:** - Add List/Show for Devices [\#52](https://github.com/kyledecot/app_store_connect/pull/52) ([kyledecot](https://github.com/kyledecot)) - Add List/Delete Bundle ID Capabilities [\#51](https://github.com/kyledecot/app_store_connect/pull/51) ([kyledecot](https://github.com/kyledecot)) - Add DELETE support [\#50](https://github.com/kyledecot/app_store_connect/pull/50) ([kyledecot](https://github.com/kyledecot)) ## [v0.8.0](https://github.com/kyledecot/app_store_connect/tree/v0.8.0) (2019-08-14) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.7.0...v0.8.0) **Merged pull requests:** - Use inherited hook [\#49](https://github.com/kyledecot/app_store_connect/pull/49) ([kyledecot](https://github.com/kyledecot)) - Add .DS\_Store to .gitignore [\#48](https://github.com/kyledecot/app_store_connect/pull/48) ([kyledecot](https://github.com/kyledecot)) - Cleanup [\#47](https://github.com/kyledecot/app_store_connect/pull/47) ([kyledecot](https://github.com/kyledecot)) - Remove HTTParty [\#46](https://github.com/kyledecot/app_store_connect/pull/46) ([kyledecot](https://github.com/kyledecot)) - Use Net/HTTP for GET Requests [\#45](https://github.com/kyledecot/app_store_connect/pull/45) ([kyledecot](https://github.com/kyledecot)) ## [v0.7.0](https://github.com/kyledecot/app_store_connect/tree/v0.7.0) (2019-08-13) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.6.0...v0.7.0) **Implemented enhancements:** - Read ENVs [\#44](https://github.com/kyledecot/app_store_connect/pull/44) ([kyledecot](https://github.com/kyledecot)) **Merged pull requests:** - Add WebServiceEndpoint [\#43](https://github.com/kyledecot/app_store_connect/pull/43) ([kyledecot](https://github.com/kyledecot)) - Dynamic Client [\#42](https://github.com/kyledecot/app_store_connect/pull/42) ([kyledecot](https://github.com/kyledecot)) - Add Config [\#41](https://github.com/kyledecot/app_store_connect/pull/41) ([kyledecot](https://github.com/kyledecot)) - Add Property Module [\#38](https://github.com/kyledecot/app_store_connect/pull/38) ([kyledecot](https://github.com/kyledecot)) ## [v0.6.0](https://github.com/kyledecot/app_store_connect/tree/v0.6.0) (2019-07-06) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.5.0...v0.6.0) **Merged pull requests:** - Remove CLI [\#37](https://github.com/kyledecot/app_store_connect/pull/37) ([kyledecot](https://github.com/kyledecot)) ## [v0.5.0](https://github.com/kyledecot/app_store_connect/tree/v0.5.0) (2019-07-05) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.4.0...v0.5.0) **Merged pull requests:** - Refactor FactoryNotRegistered [\#36](https://github.com/kyledecot/app_store_connect/pull/36) ([kyledecot](https://github.com/kyledecot)) - Add B Builder Concept [\#35](https://github.com/kyledecot/app_store_connect/pull/35) ([kyledecot](https://github.com/kyledecot)) - Add Factory spec [\#34](https://github.com/kyledecot/app_store_connect/pull/34) ([kyledecot](https://github.com/kyledecot)) - Add CapabilityType [\#32](https://github.com/kyledecot/app_store_connect/pull/32) ([kyledecot](https://github.com/kyledecot)) - Add CertificateType [\#31](https://github.com/kyledecot/app_store_connect/pull/31) ([kyledecot](https://github.com/kyledecot)) - Add UserRole and Shared Example [\#30](https://github.com/kyledecot/app_store_connect/pull/30) ([kyledecot](https://github.com/kyledecot)) - Add Config [\#29](https://github.com/kyledecot/app_store_connect/pull/29) ([kyledecot](https://github.com/kyledecot)) - Add Enum Type Factory [\#28](https://github.com/kyledecot/app_store_connect/pull/28) ([kyledecot](https://github.com/kyledecot)) - Move fixtures and factories into spec/support [\#27](https://github.com/kyledecot/app_store_connect/pull/27) ([kyledecot](https://github.com/kyledecot)) - Update .travis.yml [\#25](https://github.com/kyledecot/app_store_connect/pull/25) ([kyledecot](https://github.com/kyledecot)) - Update authorization.rb [\#24](https://github.com/kyledecot/app_store_connect/pull/24) ([kyledecot](https://github.com/kyledecot)) - Configures simplecov [\#23](https://github.com/kyledecot/app_store_connect/pull/23) ([kyledecot](https://github.com/kyledecot)) - Adds CodeClimate Test Coverage Integration Travis [\#22](https://github.com/kyledecot/app_store_connect/pull/22) ([kyledecot](https://github.com/kyledecot)) - Adds specs for Authorization\#token [\#21](https://github.com/kyledecot/app_store_connect/pull/21) ([kyledecot](https://github.com/kyledecot)) - Updates BundleIdRequest\#to\_h to conditionally include seed\_id [\#20](https://github.com/kyledecot/app_store_connect/pull/20) ([kyledecot](https://github.com/kyledecot)) - Adds spec for Authorization\#payload [\#19](https://github.com/kyledecot/app_store_connect/pull/19) ([kyledecot](https://github.com/kyledecot)) - Update issue templates [\#18](https://github.com/kyledecot/app_store_connect/pull/18) ([kyledecot](https://github.com/kyledecot)) - Removes sudo: false from .travis.yml [\#17](https://github.com/kyledecot/app_store_connect/pull/17) ([kyledecot](https://github.com/kyledecot)) - Updates .ruby-version [\#16](https://github.com/kyledecot/app_store_connect/pull/16) ([kyledecot](https://github.com/kyledecot)) - Uses Default Travis Settings [\#15](https://github.com/kyledecot/app_store_connect/pull/15) ([kyledecot](https://github.com/kyledecot)) - Adds spec for /users [\#14](https://github.com/kyledecot/app_store_connect/pull/14) ([kyledecot](https://github.com/kyledecot)) - Adds Webmock [\#13](https://github.com/kyledecot/app_store_connect/pull/13) ([kyledecot](https://github.com/kyledecot)) ## [v0.4.0](https://github.com/kyledecot/app_store_connect/tree/v0.4.0) (2019-06-21) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.3.2...v0.4.0) **Merged pull requests:** - Adds limit query param to users [\#10](https://github.com/kyledecot/app_store_connect/pull/10) ([coreycarvalho](https://github.com/coreycarvalho)) - Adds Guard [\#9](https://github.com/kyledecot/app_store_connect/pull/9) ([kyledecot](https://github.com/kyledecot)) ## [v0.3.2](https://github.com/kyledecot/app_store_connect/tree/v0.3.2) (2019-06-21) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.3.1...v0.3.2) **Merged pull requests:** - Fix error in sending user invitations [\#8](https://github.com/kyledecot/app_store_connect/pull/8) ([atareshawty](https://github.com/atareshawty)) ## [v0.3.1](https://github.com/kyledecot/app_store_connect/tree/v0.3.1) (2019-06-21) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.3.0...v0.3.1) **Merged pull requests:** - Adds Rubygems Description [\#7](https://github.com/kyledecot/app_store_connect/pull/7) ([kyledecot](https://github.com/kyledecot)) ## [v0.3.0](https://github.com/kyledecot/app_store_connect/tree/v0.3.0) (2019-06-21) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.2.0...v0.3.0) **Merged pull requests:** - Update client to take private\_key string [\#6](https://github.com/kyledecot/app_store_connect/pull/6) ([atareshawty](https://github.com/atareshawty)) - Adds Build Status to README.md [\#5](https://github.com/kyledecot/app_store_connect/pull/5) ([kyledecot](https://github.com/kyledecot)) - Adds Rubocop [\#4](https://github.com/kyledecot/app_store_connect/pull/4) ([kyledecot](https://github.com/kyledecot)) - Adds BundleIdCreateRequest [\#2](https://github.com/kyledecot/app_store_connect/pull/2) ([kyledecot](https://github.com/kyledecot)) - Adds ability to invite users [\#1](https://github.com/kyledecot/app_store_connect/pull/1) ([coreycarvalho](https://github.com/coreycarvalho)) ## [v0.2.0](https://github.com/kyledecot/app_store_connect/tree/v0.2.0) (2019-06-06) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/v0.1.0...v0.2.0) ## [v0.1.0](https://github.com/kyledecot/app_store_connect/tree/v0.1.0) (2019-03-01) [Full Changelog](https://github.com/kyledecot/app_store_connect/compare/f462ff35c61e0d95bf987b9915df9488c68512c7...v0.1.0) \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* app_store_connect-0.38.0/.rubocop.yml0000644000004100000410000000141414453372134017617 0ustar www-datawww-data# The behavior of RuboCop can be controlled via the .rubocop.yml # configuration file. It makes it possible to enable/disable # certain cops (checks) and to alter their behavior if they accept # any parameters. The file can be placed either in your home # directory or in some project directory. # # RuboCop will start looking for the configuration file in the directory # where the inspected file is and continue its way up to the root directory. # # See https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md # AllCops: NewCops: disable TargetRubyVersion: 2.7 Metrics/MethodLength: Enabled: false Metrics/BlockLength: Enabled: false Style/Documentation: Enabled: false Layout/LineLength: Enabled: false Metrics/ClassLength: Enabled: false app_store_connect-0.38.0/.gitignore0000644000004100000410000000015014453372134017331 0ustar www-datawww-data/.bundle/ /.yardoc /_yardoc/ /coverage/ /doc/ /pkg/ /spec/reports/ /tmp/ .rspec_status .DS_Store *.gem app_store_connect-0.38.0/CODE_OF_CONDUCT.md0000644000004100000410000000643114453372134020150 0ustar www-datawww-data# Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at kyle.decot@icloud.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq app_store_connect-0.38.0/Rakefile0000644000004100000410000000024614453372134017014 0ustar www-datawww-data# frozen_string_literal: true require 'rspec/core/rake_task' Dir.glob('lib/tasks/*.rake').each { |r| load r } RSpec::Core::RakeTask.new(:spec) task default: :spec app_store_connect-0.38.0/lib/0000755000004100000410000000000014453372134016113 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/tasks/0000755000004100000410000000000014453372134017240 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/tasks/changelog.rake0000644000004100000410000000075714453372134022044 0ustar www-datawww-data# frozen_string_literal: true require 'github_changelog_generator' task :changelog, [:release] do |_task, args| options = GitHubChangelogGenerator::Parser.default_options options[:user] = 'kyledecot' options[:project] = 'app_store_connect' options[:future_release] = args[:release] generator = GitHubChangelogGenerator::Generator.new(options) log = generator.compound_changelog output_filename = 'CHANGELOG.md' File.open(output_filename, 'w') { |file| file.write(log) } end app_store_connect-0.38.0/lib/tasks/git.rake0000644000004100000410000000056114453372134020671 0ustar www-datawww-data# frozen_string_literal: true namespace :git do task :add, [:extra] do |_task, args| `git add #{args[:extra]}` end task :commit, [:message] do |_task, args| `git commit -m "#{args[:message]}"` end task :tag, [:tag] do |_task, args| `git tag #{args[:tag]}` end task :push, [:extra] do |_task, args| `git push #{args[:extra]}` end end app_store_connect-0.38.0/lib/tasks/bundle.rake0000644000004100000410000000014614453372134021356 0ustar www-datawww-data# frozen_string_literal: true namespace :bundle do task :install do `bundle install` end end app_store_connect-0.38.0/lib/tasks/push.rake0000644000004100000410000000070314453372134021063 0ustar www-datawww-data# frozen_string_literal: true require 'app_store_connect/version' version = AppStoreConnect::VERSION desc "Push app_store_connect-#{version}.gem" task :push, [:key] do |_task, args| args.with_defaults(key: 'rubygems') key = args.key.to_sym host = { rubygems: 'https://rubygems.org', github: 'https://rubygems.pkg.github.com/kyledecot' }.fetch(key) sh %(gem push --key=#{key} --host=#{host} app_store_connect-#{version}.gem) end app_store_connect-0.38.0/lib/tasks/console.rake0000644000004100000410000000024314453372134021545 0ustar www-datawww-data# frozen_string_literal: true require 'pry' require 'app_store_connect' desc 'Start a pry console' task :console do Pry.start(AppStoreConnect::Client.new) end app_store_connect-0.38.0/lib/tasks/version.rake0000644000004100000410000000122014453372134021564 0ustar www-datawww-data# frozen_string_literal: true require 'app_store_connect/version' require 'semantic' namespace :version do desc 'Print current version' task :current do puts AppStoreConnect::VERSION end desc 'Increment version' task :increment do version = Semantic::Version.new(AppStoreConnect::VERSION) path = File.expand_path(File.join('..', 'app_store_connect', 'version.rb'), __dir__) new_version = version.increment!(:minor).to_s File.open(path, 'r+') do |file| contents = file.read contents.gsub!(AppStoreConnect::VERSION, new_version) file.rewind file.write(contents) new_version end end end app_store_connect-0.38.0/lib/tasks/build.rake0000644000004100000410000000030214453372134021176 0ustar www-datawww-data# frozen_string_literal: true require 'app_store_connect/version' desc "Build app_store_connect-#{AppStoreConnect::VERSION}.gem" task :build do sh %(gem build app_store_connect.gemspec) end app_store_connect-0.38.0/lib/tasks/release.rake0000644000004100000410000000101114453372134021515 0ustar www-datawww-data# frozen_string_literal: true require 'app_store_connect/version' desc 'Release' task :release do version_increment, = Rake::Task['version:increment'].invoke version = version_increment.call Rake::Task['bundle:install'].invoke Rake::Task['changelog'].invoke("v#{version}") Rake::Task['git:add'].invoke('-A') Rake::Task['git:commit'].invoke("v#{version}") Rake::Task['git:tag'].invoke("v#{version}") Rake::Task['git:push'].invoke('origin main') Rake::Task['git:push'].invoke("origin v#{version}") end app_store_connect-0.38.0/lib/app_store_connect/0000755000004100000410000000000014453372134021620 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/app_store_version_phased_release_update_request.rb0000644000004100000410000000042014453372134034040 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class AppStoreVersionPhasedReleaseUpdateRequest < Request::Body data do id type 'appStoreVersionPhasedReleases' attributes do property :phased_release_state end end end end app_store_connect-0.38.0/lib/app_store_connect/client/0000755000004100000410000000000014453372134023076 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/client/authorization.rb0000644000004100000410000000140014453372134026316 0ustar www-datawww-data# frozen_string_literal: true require 'jwt' module AppStoreConnect class Client class Authorization OPTIONS = %i[key_id issuer_id private_key].freeze AUDIENCE = 'appstoreconnect-v1' ALGORITHM = 'ES256' attr_reader(*OPTIONS) def initialize(options) @key_id = options.fetch(:key_id) @issuer_id = options.fetch(:issuer_id) @private_key = OpenSSL::PKey.read(options.fetch(:private_key)) end def payload { exp: Time.now.to_i + 20 * 60, iss: issuer_id, aud: AUDIENCE } end def header_fields { kid: key_id } end def token JWT.encode(payload, private_key, ALGORITHM, header_fields) end end end end app_store_connect-0.38.0/lib/app_store_connect/client/utils.rb0000644000004100000410000000150514453372134024564 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Client class Utils def self.encode(hash) hash .deep_transform_keys { |s| s.to_s.camelize(:lower) } .to_json end # Right now this only supports gzip and json responses. # If you need to support a different type then add it. def self.decode(string, content_type = 'application/json') decoded_data = nil case content_type when 'application/a-gzip' sio = StringIO.new string gz = Zlib::GzipReader.new sio decoded_data = gz.read else # Assume JSON decoded_data = JSON .parse(string) .deep_transform_keys { |k| k.underscore.to_sym } end decoded_data end end end end app_store_connect-0.38.0/lib/app_store_connect/client/options.rb0000644000004100000410000000177514453372134025130 0ustar www-datawww-data# frozen_string_literal: true require 'delegate' module AppStoreConnect class Client class Options < SimpleDelegator attr_reader :kwargs, :config, :env DEFAULTS = { analytics_enabled: true, schema: Schema.new(File.join(__dir__, '..', '..', 'config', 'schema.json')) }.freeze private_constant :DEFAULTS ENV_REGEXP = /APP_STORE_CONNECT_(?[A-Z_]+)/.freeze private_constant :ENV_REGEXP def initialize(kwargs = {}) @kwargs = kwargs @config = build_config @env = build_env options = DEFAULTS.merge(@env.merge(@config.merge(kwargs))) super(options) end private def build_config AppStoreConnect.config.dup end def build_env {}.tap do |hash| ENV.each do |key, value| match = key.match(ENV_REGEXP) next unless match hash[match[:suffix].downcase.to_sym] = value end end end end end end app_store_connect-0.38.0/lib/app_store_connect/client/builder.rb0000644000004100000410000000552514453372134025060 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Client class Builder TEMPLATE = <<~'SOURCE' # frozen_string_literal: true # WARNING ABOUT GENERATED CODE # # This file is generated. # # WARNING ABOUT GENERATED CODE module AppStoreConnect class Client < Base <%- web_service_endpoints.each do |web_service_endpoint| -%> # # @see <%= web_service_endpoint.delete(:see) %> # def <%= web_service_endpoint.delete(:alias) -%>(**kwargs) web_service_endpoint = Schema::WebServiceEndpoint.new( <%= web_service_endpoint.sort.to_h %> ) call(web_service_endpoint, **kwargs) end <%- end -%> end end SOURCE private_constant :TEMPLATE def web_service_endpoints [ { "alias": 'create_certificate', "http_method": 'post', "url": 'https://api.appstoreconnect.apple.com/v1/certificates', "http_body_type": 'CertificateCreateRequest', "see": 'https://developer.apple.com/documentation/appstoreconnectapi' }, { "http_method": 'delete', "url": 'https://api.appstoreconnect.apple.com/v1/users/{id}/relationships/visibleApps', "alias": 'delete_visible_app', "see": 'https://developer.apple.com/documentation/appstoreconnectapi' }, { "alias": 'create_bundle_id', "url": 'https://api.appstoreconnect.apple.com/v1/bundleIds', "http_body_type": 'BundleIdCreateRequest', "http_method": 'post', "see": 'https://developer.apple.com/documentation/appstoreconnectapi/register_a_new_bundle_id' }, { "alias": 'create_bundle_id_capability', "url": 'https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities', "http_body_type": 'BundleIdCapabilityCreateRequest', "http_method": 'post', "see": 'https://developer.apple.com/documentation/appstoreconnectapi' }, { "alias": 'create_beta_build_localization', "url": 'https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations', "http_body_type": 'BetaBuildLocalizationCreateRequest', "http_method": 'post', "see": 'https://developer.apple.com/documentation/appstoreconnectapi' } ].map(&:symbolize_keys) end def write File.write('lib/app_store_connect/client.rb', source) end def source @source ||= begin require 'erb' erb = ERB.new(TEMPLATE, trim_mode: '%-') erb.result(binding) end @source end end end end app_store_connect-0.38.0/lib/app_store_connect/client/registry.rb0000644000004100000410000000047214453372134025276 0ustar www-datawww-data# frozen_string_literal: true require 'delegate' module AppStoreConnect class Client class Registry < SimpleDelegator OPTIONS = %i[schema].freeze def initialize(options = {}) super(options.fetch(:schema).web_service_endpoints.map { |s| [s.alias, s] }.to_h) end end end end app_store_connect-0.38.0/lib/app_store_connect/profile_create_request.rb0000644000004100000410000000041414453372134026677 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class ProfileCreateRequest < Request::Body data do type 'profiles' attributes do property :name, required: true property :profile_type, required: true end end end end app_store_connect-0.38.0/lib/app_store_connect/version.rb0000644000004100000410000000011714453372134023631 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect VERSION = '0.38.0' end app_store_connect-0.38.0/lib/app_store_connect/requests/0000755000004100000410000000000014453372134023473 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v2/0000755000004100000410000000000014453372134024022 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v2/in_app_purchase/0000755000004100000410000000000014453372134027162 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v2/in_app_purchase/create.rb0000644000004100000410000000111114453372134030744 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V2 module InAppPurchase class Create < Request::Body data do type 'inAppPurchases' attributes do property :name, required: true property :product_id, required: true property :in_app_purchase_type, required: true property :available_in_all_territories property :family_sharable property :review_note end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v2/in_app_purchase/update.rb0000644000004100000410000000073014453372134030771 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V2 module InAppPurchase class Update < Request::Body data do id type 'inAppPurchases' attributes do property :name property :available_in_all_territories property :family_sharable property :review_note end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/0000755000004100000410000000000014453372134024021 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_submission/0000755000004100000410000000000014453372134031434 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_submission/create.rb0000644000004100000410000000042414453372134033224 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module InAppPurchaseSubmission class Create < Request::Body data do type 'inAppPurchaseSubmissions' end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/beta_app_review_submission/0000755000004100000410000000000014453372134031430 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/beta_app_review_submission/create.rb0000644000004100000410000000042414453372134033220 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module BetaAppReviewSubmission class Create < Request::Body data do type 'betaAppReviewSubmissions' end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_price_schedule/0000755000004100000410000000000014453372134032217 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_price_schedule/create.rb0000644000004100000410000000043214453372134034006 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module InAppPurchasePriceSchedule class Create < Request::Body data do type 'inAppPurchasePriceSchedules' end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/0000755000004100000410000000000014453372134032777 5ustar www-datawww-data././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/create.rbapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/create.0000644000004100000410000000066714453372134034254 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module InAppPurchaseReviewScreenshot class Create < Request::Body data do type 'inAppPurchaseAppStoreReviewScreenshots' attributes do property :file_name, required: true property :file_size, required: true end end end end end end end ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/update.rbapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_review_screenshot/update.0000644000004100000410000000066014453372134034264 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module InAppPurchaseReviewScreenshot class Update < Request::Body data do id type 'inAppPurchaseAppStoreReviewScreenshots' attributes do property :uploaded property :source_file_checksum end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/build_beta_groups/0000755000004100000410000000000014453372134027512 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/build_beta_groups/create.rb0000644000004100000410000000042414453372134031302 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module BuildBetaGroups class Create < Request::Body data(Array) do id type 'betaGroups' end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/build_beta_groups/delete.rb0000644000004100000410000000042414453372134031301 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module BuildBetaGroups class Delete < Request::Body data(Array) do id type 'betaGroups' end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/app_store_version_localization/0000755000004100000410000000000014453372134032332 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/app_store_version_localization/create.rb0000644000004100000410000000112014453372134034114 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module AppStoreVersionLocalization class Create < Request::Body data do type 'appStoreVersionLocalizations' attributes do property :description property :keywords property :locale, required: true property :marketing_url property :promotional_text property :support_url property :whats_new end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/app_store_version_localization/update.rb0000644000004100000410000000106014453372134034136 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module AppStoreVersionLocalization class Update < Request::Body data do id type 'appStoreVersionLocalizations' attributes do property :description property :keywords property :marketing_url property :promotional_text property :support_url property :whats_new end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/build_beta_detail/0000755000004100000410000000000014453372134027435 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/build_beta_detail/update.rb0000644000004100000410000000055214453372134031246 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module BuildBetaDetail class Update < Request::Body data do id type 'buildBetaDetails' attributes do property :auto_notify_enabled end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_localization/0000755000004100000410000000000014453372134031731 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_localization/create.rb0000644000004100000410000000070314453372134033521 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module InAppPurchaseLocalization class Create < Request::Body data do type 'inAppPurchaseLocalizations' attributes do property :description property :locale, required: true property :name, required: true end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/v1/in_app_purchase_localization/update.rb0000644000004100000410000000062314453372134033541 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests module V1 module InAppPurchaseLocalization class Update < Request::Body data do id type 'inAppPurchaseLocalizations' attributes do property :description property :name end end end end end end end app_store_connect-0.38.0/lib/app_store_connect/requests/delete_with_body.rb0000644000004100000410000000033314453372134027331 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect module Requests class DeleteWithBody < Net::HTTPRequest METHOD = 'DELETE' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true end end end app_store_connect-0.38.0/lib/app_store_connect/app_store_version_build_linkage_request.rb0000644000004100000410000000026614453372134032333 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class AppStoreVersionBuildLinkageRequest < Request::Body data do id :build_id type 'builds' end end end app_store_connect-0.38.0/lib/app_store_connect/schema/0000755000004100000410000000000014453372134023060 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/schema/web_service_endpoint.rb0000644000004100000410000000066514453372134027611 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Schema class WebServiceEndpoint def initialize(options) @options = options end def alias @options.fetch(:alias).to_sym end def http_method @options[:http_method].to_sym end def http_body_type @options[:http_body_type] end def url @options[:url] end end end end app_store_connect-0.38.0/lib/app_store_connect/schema/type.rb0000644000004100000410000000042714453372134024371 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Schema class Type attr_reader :type, :options, :values def initialize(options) @type = options[:type] @values = options[:values] @options = options end end end end app_store_connect-0.38.0/lib/app_store_connect/schema/object.rb0000644000004100000410000000041414453372134024652 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Schema class Object attr_reader :type, :properties def initialize(options) @type = options.fetch(:type) @properties = options.fetch(:properties) end end end end app_store_connect-0.38.0/lib/app_store_connect/app_store_version_release_request_create_request.rb0000644000004100000410000000030314453372134034245 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class AppStoreVersionReleaseRequestCreateRequest < Request::Body data do type 'appStoreVersionReleaseRequests' end end end app_store_connect-0.38.0/lib/app_store_connect/certificate_create_request.rb0000644000004100000410000000043714453372134027526 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class CertificateCreateRequest < Request::Body data do type 'certificates' attributes do property :certificate_type, required: true property :csr_content, required: true end end end end app_store_connect-0.38.0/lib/app_store_connect/schema.rb0000644000004100000410000000124114453372134023403 0ustar www-datawww-data# frozen_string_literal: true require 'app_store_connect/schema/type' require 'app_store_connect/schema/object' require 'app_store_connect/schema/web_service_endpoint' module AppStoreConnect class Schema attr_reader :types, :web_service_endpoints, :objects def initialize(path) schema = JSON.parse(File.read(path)).deep_symbolize_keys @types = schema[:types].map do |options| Type.new(options) end @web_service_endpoints = schema[:web_service_endpoints].map do |options| WebServiceEndpoint.new(options) end @objects = schema[:objects].map do |options| Object.new(options) end end end end app_store_connect-0.38.0/lib/app_store_connect/app_store_version_create_request.rb0000644000004100000410000000060514453372134031002 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class AppStoreVersionCreateRequest < Request::Body data do type 'appStoreVersions' attributes do property :copyright property :earliest_release_date property :platform, required: true property :release_type property :version_string, required: true end end end end app_store_connect-0.38.0/lib/app_store_connect/client.rb0000644000004100000410000000413214453372134023423 0ustar www-datawww-data# frozen_string_literal: true # WARNING ABOUT GENERATED CODE # # This file is generated. # # WARNING ABOUT GENERATED CODE module AppStoreConnect class Client < Base # # @see https://developer.apple.com/documentation/appstoreconnectapi # def create_certificate(**kwargs) web_service_endpoint = Schema::WebServiceEndpoint.new( { http_body_type: 'CertificateCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/certificates' } ) call(web_service_endpoint, **kwargs) end # # @see https://developer.apple.com/documentation/appstoreconnectapi # def delete_visible_app(**kwargs) web_service_endpoint = Schema::WebServiceEndpoint.new( { http_method: 'delete', url: 'https://api.appstoreconnect.apple.com/v1/users/{id}/relationships/visibleApps' } ) call(web_service_endpoint, **kwargs) end # # @see https://developer.apple.com/documentation/appstoreconnectapi/register_a_new_bundle_id # def create_bundle_id(**kwargs) web_service_endpoint = Schema::WebServiceEndpoint.new( { http_body_type: 'BundleIdCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/bundleIds' } ) call(web_service_endpoint, **kwargs) end # # @see https://developer.apple.com/documentation/appstoreconnectapi # def create_bundle_id_capability(**kwargs) web_service_endpoint = Schema::WebServiceEndpoint.new( { http_body_type: 'BundleIdCapabilityCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities' } ) call(web_service_endpoint, **kwargs) end # # @see https://developer.apple.com/documentation/appstoreconnectapi # def create_beta_build_localization(**kwargs) web_service_endpoint = Schema::WebServiceEndpoint.new( { http_body_type: 'BetaBuildLocalizationCreateRequest', http_method: 'post', url: 'https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations' } ) call(web_service_endpoint, **kwargs) end end end app_store_connect-0.38.0/lib/app_store_connect/request/0000755000004100000410000000000014453372134023310 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/request/builder/0000755000004100000410000000000014453372134024736 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/request/builder/create.rb0000644000004100000410000000307014453372134026526 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/inflector' module AppStoreConnect class Request module Builder class Create TEMPLATE = <<~SOURCE class <%= name %>CreateRequest < Request::Body data do type '<%= type %>' <%- if properties.any? -%> attributes do <%- properties.each do |property| -%> property :<%= property %> <%- end -%> end <%- end -%> end end SOURCE private_constant :TEMPLATE attr_reader :name, :type, :properties def self.from(schema) type = schema.properties['data']['properties']['type']['enum'][0] properties = schema.properties['data']['properties']['attributes']['properties'].keys new(type, properties) end def initialize(type, properties, version = 'v1') @name = type.singularize.classify @name = name @type = type @properties = properties @version = version end def source @source ||= begin require 'erb' erb = ERB.new(TEMPLATE, trim_mode: '%<>-') erb.result(binding) end @source end def alias "create_#{@type.underscore.singularize}" end def url "https://api.appstoreconnect.apple.com/#{@version}/#{@type}" end def http_method 'post' end end end end end app_store_connect-0.38.0/lib/app_store_connect/request/body.rb0000644000004100000410000000100214453372134024563 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Request class Body def self.inherited(klass) super klass.include(Object::Included) klass.include(Object::Data) end def initialize(**kwargs) @included = self.class::Included.new([*kwargs.delete(:included)]) @data = self.class::Data.new(**kwargs) end def to_h { data: data.to_data_type, included: included.to_a } end end end end app_store_connect-0.38.0/lib/app_store_connect/base.rb0000644000004100000410000000443414453372134023064 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Base def initialize(**kwargs) @options = Client::Options.new(kwargs) @authorization = Client::Authorization.new(@options.slice(*Client::Authorization::OPTIONS)) @registry = Client::Registry.new(@options.slice(*Client::Registry::OPTIONS)) end def respond_to_missing?(method_name, include_private = false) web_service_endpoint_aliases.include?(method_name) || super end def method_missing(method_name, **kwargs) super unless web_service_endpoint_aliases.include?(method_name) web_service_endpoint = web_service_endpoint_by(method_name) call(web_service_endpoint, **kwargs) end # :nocov: def inspect "#<#{self.class.name}:#{object_id}>" end # :nocov: def web_service_endpoint_aliases @registry.keys end private def call(web_service_endpoint, **kwargs) raise "invalid http method: #{web_service_endpoint.http_method}" unless %i[get delete post patch].include?(web_service_endpoint.http_method) request = build_request(web_service_endpoint, **kwargs) response = request.execute Client::Utils.decode(response.body, response.content_type) if response.body end def build_uri(web_service_endpoint, **kwargs) URI(web_service_endpoint .url .gsub(/(\{(\w+)\})/) { kwargs.fetch(Regexp.last_match(2).to_sym) }) end def web_service_endpoint_by(alias_sym) @registry[alias_sym] end def http_body(web_service_endpoint, **kwargs) Client::Utils.encode("AppStoreConnect::#{web_service_endpoint.http_body_type}" .constantize .new(**kwargs) .to_h) end def build_request(web_service_endpoint, **kwargs) options = { kwargs: kwargs, web_service_endpoint: web_service_endpoint, http_method: web_service_endpoint.http_method, uri: build_uri(web_service_endpoint, **kwargs), headers: headers } options[:http_body] = http_body(web_service_endpoint, **kwargs) if web_service_endpoint.http_body_type.present? Request.new(**options) end def headers { 'Authorization' => "Bearer #{@authorization.token}", 'Content-Type' => 'application/json' } end end end app_store_connect-0.38.0/lib/app_store_connect/request.rb0000644000004100000410000000360114453372134023635 0ustar www-datawww-data# frozen_string_literal: true require 'net/http' module AppStoreConnect class Request class UnsupportedHTTPMethod < ArgumentError def initialize(http_method) super "Unsupported HTTP Method: #{http_method}" end end def initialize(**options) @uri = options.fetch(:uri) @options = options end def execute Net::HTTP.start(uri.host, uri.port, net_http_options) do |http| http.request(request) end end private def web_service_endpoint @options.fetch(:web_service_endpoint) end def query return unless http_method == :get names = url_parameter_names(web_service_endpoint) kwargs .reject { |n| names.include?(n) } .deep_transform_keys { |k| k.to_s.camelize(:lower) } .to_query end def http_method @options.fetch(:http_method).to_sym end def net_http_options { use_ssl: uri.scheme == 'https' } end def kwargs @options.fetch(:kwargs, {}) end def uri @options.fetch(:uri).tap do |uri| uri.query = query if http_method == :get end end def headers @options.fetch(:headers, {}) end def body return if http_method == :get @options.fetch(:http_body, nil) end def url_parameter_names(web_service_endpoint) web_service_endpoint .url .scan(/(\{(\w+)\})/) .map { |_, n| n.to_sym } end def net_http_request_class case http_method when :get then Net::HTTP::Get when :post then Net::HTTP::Post when :delete then Requests::DeleteWithBody when :patch then Net::HTTP::Patch else raise UnsupportedHTTPMethod, http_method end end def request net_http_request_class .new(uri, headers) .tap { |r| r.body = body if r.request_body_permitted? } end end end app_store_connect-0.38.0/lib/app_store_connect/device_create_request.rb0000644000004100000410000000045514453372134026503 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class DeviceCreateRequest < Request::Body data do type 'devices' attributes do property :name, required: true property :platform, required: true property :udid, required: true end end end end app_store_connect-0.38.0/lib/app_store_connect/review_submission_create_request.rb0000644000004100000410000000036314453372134031016 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class ReviewSubmissionCreateRequest < Request::Body data do type 'reviewSubmissions' attributes do property :platform, required: true end end end end app_store_connect-0.38.0/lib/app_store_connect/app_store_version_update_request.rb0000644000004100000410000000056214453372134031023 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class AppStoreVersionUpdateRequest < Request::Body data do id type 'appStoreVersions' attributes do property :copyright property :earliest_release_date property :release_type property :version_string property :downloadable end end end end app_store_connect-0.38.0/lib/app_store_connect/beta_build_localization_modify_request.rb0000644000004100000410000000036714453372134032134 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class BetaBuildLocalizationModifyRequest < Request::Body data do id type 'betaBuildLocalizations' attributes do property :whats_new end end end end app_store_connect-0.38.0/lib/app_store_connect/review_submission_item_create_request.rb0000644000004100000410000000026114453372134032031 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class ReviewSubmissionItemCreateRequest < Request::Body data do type 'reviewSubmissionItems' end end end app_store_connect-0.38.0/lib/app_store_connect/specification.rb0000644000004100000410000000235114453372134024766 0ustar www-datawww-data# frozen_string_literal: true require 'net/http' require 'app_store_connect/specification/component/schema' module AppStoreConnect class Specification def initialize(hash) @hash = hash end def find(version, type) @hash['paths'].find do |path, _declaration| path == "/#{version}/#{type}" end&.[](-1) end def component_schema(ref) Component::Schema.new(traverse(ref)) end def traverse(ref) _, *parts = ref.split('/') @hash.dig(*parts) end def create_request_schema_ref(version, type) declarations = find(version, type) declarations['post']['requestBody']['content']['application/json']['schema']['$ref'] end def self.read(path) require 'zip' Zip::File.open(path) do |zip_file| entry, = zip_file.entries content = entry.get_input_stream(&:read) JSON.parse(content) end end def self.download(path) uri = URI('https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip') Net::HTTP.start(uri.host, uri.port, { use_ssl: true }) do |http| response = http.get(uri.path) File.write(path, response.body) end end end end app_store_connect-0.38.0/lib/app_store_connect/specification/0000755000004100000410000000000014453372134024440 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/specification/component/0000755000004100000410000000000014453372134026442 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/specification/component/schema.rb0000644000004100000410000000066214453372134030233 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class Specification module Component class Schema def initialize(declaration) @declaration = declaration end def properties @declaration['properties'] end def required @declaration['required'] end def title @declaration['title'] end end end end end app_store_connect-0.38.0/lib/app_store_connect/user_invitation_create_request.rb0000644000004100000410000000066714453372134030473 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class UserInvitationCreateRequest < Request::Body data do type 'userInvitations' attributes do property :first_name, required: true property :last_name, required: true property :email, required: true property :roles, required: true property :all_apps_visible property :provisioning_allowed end end end end app_store_connect-0.38.0/lib/app_store_connect/beta_build_localization_create_request.rb0000644000004100000410000000042714453372134032105 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class BetaBuildLocalizationCreateRequest < Request::Body data do type 'betaBuildLocalizations' attributes do property :locale, required: true property :whats_new end end end end app_store_connect-0.38.0/lib/app_store_connect/review_submission_update_request.rb0000644000004100000410000000041014453372134031026 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class ReviewSubmissionUpdateRequest < Request::Body data do id type 'reviewSubmissions' attributes do property :canceled property :submitted end end end end app_store_connect-0.38.0/lib/app_store_connect/build_update_request.rb0000644000004100000410000000040214453372134026352 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class BuildUpdateRequest < Request::Body data do id type 'builds' attributes do property :expired property :uses_non_exempt_encryption end end end end app_store_connect-0.38.0/lib/app_store_connect/bundle_id_create_request.rb0000644000004100000410000000052114453372134027163 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class BundleIdCreateRequest < Request::Body data do type 'bundleIds' attributes do property :identifier, required: true property :name, required: true property :platform, required: true property :seed_id end end end end app_store_connect-0.38.0/lib/app_store_connect/bundle_id_capability_create_request.rb0000644000004100000410000000037714453372134031375 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class BundleIdCapabilityCreateRequest < Request::Body data do type 'bundleIdCapabilities' attributes do property :capability_type, required: true end end end end app_store_connect-0.38.0/lib/app_store_connect/object/0000755000004100000410000000000014453372134023066 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/app_store_connect/object/properties.rb0000644000004100000410000000062614453372134025613 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/concern' module AppStoreConnect module Object module Properties extend ActiveSupport::Concern class_methods do def properties @properties ||= {} end def property(name, options = {}) properties[name] = options attr_accessor name.to_sym end end end end end app_store_connect-0.38.0/lib/app_store_connect/object/included.rb0000644000004100000410000000077314453372134025211 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/concern' module AppStoreConnect module Object module Included extend ActiveSupport::Concern included do attr_reader :included klass = Class.new do |i| i.send(:define_method, :initialize) do |objects| instance_variable_set('@objects', [*objects]) end def to_a @objects end end const_set('Included', klass) end end end end app_store_connect-0.38.0/lib/app_store_connect/object/id.rb0000644000004100000410000000103314453372134024004 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/concern' module AppStoreConnect module Object module Id extend ActiveSupport::Concern class_methods do def id(arg_name = :id) @include_id_in_body = true @id_arg_name = arg_name end end included do def id? self.class.instance_variable_get('@include_id_in_body') end def id_arg_name self.class.instance_variable_get('@id_arg_name') end end end end end app_store_connect-0.38.0/lib/app_store_connect/object/attributes.rb0000644000004100000410000000215014453372134025577 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/concern' module AppStoreConnect module Object module Attributes extend ActiveSupport::Concern class_methods do def attributes(&block) self::Attributes.class_eval(&block) end end included do attr_reader :attributes klass = Class.new do |attributes| include Object::Properties attributes.send(:define_method, :initialize) do |**kwargs| self.class.properties.each do |name, options| raise ArgumentError, "#{name} required" if options[:required] && !kwargs[name] value = kwargs.fetch(name, options[:default]) instance_variable_set("@#{name}", value) end end def to_h {}.tap do |hash| self.class.properties.each_key do |name| value = instance_variable_get("@#{name}") hash[name] = value unless value.nil? end end end end const_set('Attributes', klass) end end end end app_store_connect-0.38.0/lib/app_store_connect/object/data_type.rb0000644000004100000410000000062114453372134025364 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/concern' module AppStoreConnect module Object module DataType extend ActiveSupport::Concern class_methods do def data_type=(type) @data_type = type end end included do def data_type self.class.instance_variable_get('@data_type') end end end end end app_store_connect-0.38.0/lib/app_store_connect/object/data.rb0000644000004100000410000000277514453372134024337 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/concern' module AppStoreConnect module Object module Data extend ActiveSupport::Concern included do attr_reader :data klass = Class.new do |data| include Object::DataType include Object::Attributes include Object::Type include Object::Id data.send(:define_method, :initialize) do |**kwargs| instance_variable_set('@relationships', kwargs.delete(:relationships).to_h) instance_variable_set('@data', Array(kwargs.delete(:data))) instance_variable_set('@attributes', data::Attributes.new(**kwargs)) instance_variable_set('@id', kwargs[id_arg_name]) end def to_h props = { relationships: @relationships, attributes: attributes.to_h, type: type } props[:id] = @id if id? props.reject { |_k, v| v.blank? } end def to_a @data.each do |item| item[:type] = type end @data end def to_data_type if data_type == Array to_a else to_h end end end const_set('Data', klass) end class_methods do def data(type = Hash, &block) self::Data.data_type = type self::Data.class_eval(&block) end end end end end app_store_connect-0.38.0/lib/app_store_connect/object/type.rb0000644000004100000410000000057014453372134024376 0ustar www-datawww-data# frozen_string_literal: true require 'active_support/concern' module AppStoreConnect module Object module Type extend ActiveSupport::Concern class_methods do def type(type) @type = type end end included do def type self.class.instance_variable_get('@type') end end end end end app_store_connect-0.38.0/lib/app_store_connect/app_store_version_phased_release_create_request.rb0000644000004100000410000000040714453372134034026 0ustar www-datawww-data# frozen_string_literal: true module AppStoreConnect class AppStoreVersionPhasedReleaseCreateRequest < Request::Body data do type 'appStoreVersionPhasedReleases' attributes do property :phased_release_state end end end end app_store_connect-0.38.0/lib/app_store_connect.rb0000644000004100000410000000066214453372134022151 0ustar www-datawww-data# frozen_string_literal: true require 'zeitwerk' require 'active_support/all' APP_STORE_CONNECT_LOADER = Zeitwerk::Loader.for_gem APP_STORE_CONNECT_LOADER.setup module AppStoreConnect @config = {} class << self attr_accessor :config def rel(id, type, array: false) if array { data: [{ id: id, type: type }] }.freeze else { data: { id: id, type: type } }.freeze end end end end app_store_connect-0.38.0/lib/config/0000755000004100000410000000000014453372134017360 5ustar www-datawww-dataapp_store_connect-0.38.0/lib/config/schema.json0000644000004100000410000010223314453372134021514 0ustar www-datawww-data{ "objects": [], "web_service_endpoints": [ { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/users/{id}", "alias": "delete_user" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities/{id}", "alias": "delete_bundle_id_capability" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/userInvitations/{id}", "alias": "delete_user_invitation" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/certificates/{id}", "alias": "delete_certificate" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/bundleIds/{id}", "alias": "delete_bundle_id" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}", "alias": "delete_profile" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}", "alias": "delete_beta_tester" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/relationships/betaGroups", "alias": "delete_beta_tester_beta" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/relationships/builds", "alias": "delete_beta_tester_builds" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/relationships/apps", "alias": "delete_beta_tester_apps" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}", "alias": "delete_beta_group" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/relationships/betaTesters", "alias": "delete_beta_group_beta_testers" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/relationships/builds", "alias": "delete_beta_group_builds" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/relationships/betaTesters", "alias": "delete_app_beta_testers" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaAppLocalizations/{id}", "alias": "delete_beta_app_localization" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/betaGroups", "http_body_type": "Requests::V1::BuildBetaGroups::Delete", "alias": "delete_build_beta_groups" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/individualTesters", "alias": "delete_build_individual_testers" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations/{id}", "alias": "delete_beta_build_localizations" }, { "alias": "create_profile", "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v1/profiles", "http_body_type": "ProfileCreateRequest" }, { "alias": "create_device", "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v1/devices", "http_body_type": "DeviceCreateRequest" }, { "alias": "create_user_invitation", "url": "https://api.appstoreconnect.apple.com/v1/userInvitations", "http_body_type": "UserInvitationCreateRequest", "http_method": "post" }, { "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/betaGroups", "http_body_type": "Requests::V1::BuildBetaGroups::Create", "alias": "add_build_beta_groups" }, { "alias": "create_beta_build_localization", "url": "https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations", "http_body_type": "BetaBuildLocalizationCreateRequest", "http_method": "post" }, { "alias": "modify_beta_build_localization", "url": "https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations/{id}", "http_body_type": "BetaBuildLocalizationModifyRequest", "http_method": "patch" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/users", "alias": "users" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/users/{id}", "alias": "user" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/users/{id}/visibleApps", "alias": "user_visible_apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/users/{id}/relationships/visibleApps", "alias": "user_relationships_visible_apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/userInvitations/{id}", "alias": "user_invitation" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/userInvitations", "alias": "user_invitations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/userInvitations/{id}/visibleApps", "alias": "user_invitation_visible_apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/userInvitations/{id}/relationships/visibleApps", "alias": "user_invitation_relationships_visible_apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/bundleIds/{id}", "alias": "bundle_id" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/bundleIds", "alias": "bundle_ids" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/bundleIds/{id}/relationships/profiles", "alias": "bundle_id_relationships_profiles" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/bundleIds/{id}/bundleIdCapabilities", "alias": "bundle_id_bundle_id_capabilities" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/bundleIds/{id}/profiles", "alias": "bundle_id_profiles" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/bundleIds/{id}/relationships/bundleIdCapabilities", "alias": "bundle_id_relationships_bundle_id_capabilities" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/certificates", "alias": "certificates" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/certificates/{id}", "alias": "certificate" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/devices", "alias": "devices" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/devices/{id}", "alias": "device" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/financeReports", "alias": "financial_reports" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/salesReports", "alias": "sales_reports" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles", "alias": "profiles" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}", "alias": "profile" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}/bundleId", "alias": "profile_bundle_id" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}/relationships/bundleId", "alias": "profile_relationships_bundle_id" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}/relationships/certificates", "alias": "profile_relationships_certificates" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}/devices", "alias": "profile_devices" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}/certificates", "alias": "profile_certificates" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/profiles/{id}/relationships/devices", "alias": "profile_relationships_devices" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters", "alias": "beta_testers" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}", "alias": "beta_tester" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/apps", "alias": "beta_tester_apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/builds", "alias": "beta_tester_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/relationships/builds", "alias": "beta_tester_relationships_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/relationships/apps", "alias": "beta_tester_relationships_apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/betaGroups", "alias": "beta_tester_beta_groups" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaTesters/{id}/relationships/betaGroups", "alias": "beta_tester_relationships_beta_groups" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps", "alias": "apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}", "alias": "app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/appPricePoints", "alias": "app_price_points" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v2/inAppPurchases/{id}", "alias": "in_app_purchase" }, { "alias": "create_in_app_purchase", "http_body_type": "Requests::V2::InAppPurchase::Create", "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v2/inAppPurchases" }, { "alias": "update_in_app_purchase", "http_body_type": "Requests::V2::InAppPurchase::Update", "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v2/inAppPurchases/{id}" }, { "alias": "delete_in_app_purchase", "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v2/inAppPurchases/{id}" }, { "alias": "create_in_app_purchase_submission", "http_body_type": "Requests::V1::InAppPurchaseSubmission::Create", "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseSubmissions" }, { "alias": "review_screenshot_for_in_app_purchase", "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseAppStoreReviewScreenshots/{id}" }, { "alias": "in_app_purchase_review_screenshot", "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v2/inAppPurchases/{id}/appStoreReviewScreenshot" }, { "alias": "create_in_app_purchase_review_screenshot", "http_body_type": "Requests::V1::InAppPurchaseReviewScreenshot::Create", "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseAppStoreReviewScreenshots" }, { "alias": "update_in_app_purchase_app_store_review_screenshot", "http_body_type": "Requests::V1::InAppPurchaseReviewScreenshot::Update", "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseAppStoreReviewScreenshots/{id}" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/inAppPurchasesV2", "alias": "app_in_app_purchases" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v2/inAppPurchases/{id}/pricePoints", "alias": "in_app_purchase_price_points" }, { "alias": "create_in_app_purchase_price_schedule", "http_body_type": "Requests::V1::InAppPurchasePriceSchedule::Create", "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchasePriceSchedules" }, { "alias": "in_app_purchase_price_schedule", "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchasePriceSchedules/{id}" }, { "alias": "in_app_purchase_current_price_point", "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchasePriceSchedules/{id}/manualPrices" }, { "alias": "in_app_purchase_localizations", "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v2/inAppPurchases/{id}/inAppPurchaseLocalizations" }, { "alias": "in_app_purchase_localization", "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseLocalizations/{id}" }, { "alias": "create_in_app_purchase_localization", "http_body_type": "Requests::V1::InAppPurchaseLocalization::Create", "http_method": "post", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseLocalizations" }, { "alias": "update_in_app_purchase_localization", "http_body_type": "Requests::V1::InAppPurchaseLocalization::Update", "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseLocalizations/{id}" }, { "alias": "delete_in_app_purchase_localization", "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/inAppPurchaseLocalizations/{id}" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/betaGroups", "alias": "app_beta_groups" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/relationships/betaGroups", "alias": "app_relationships_beta_groups" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/builds", "alias": "app_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/relationships/builds", "alias": "app_relationships_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/preReleaseVersions", "alias": "app_pre_release_versions" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/relationships/preReleaseVersions", "alias": "app_relationships_pre_release_versions" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/betaAppReviewDetail", "alias": "app_beta_app_review_detail" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/betaLicenseAgreement", "alias": "app_beta_license_agreement" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/betaAppLocalizations", "alias": "app_beta_app_localizations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/relationships/betaAppReviewDetail", "alias": "app_relationships_beta_app_review_detail" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/relationships/betaLicenseAgreement", "alias": "app_relationships_beta_license_agreement" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/relationships/betaAppLocalizations", "alias": "app_relationships_beta_app_localizations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/preReleaseVersions", "alias": "pre_release_versions" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/preReleaseVersions/{id}", "alias": "pre_release_version" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/preReleaseVersions/{id}/relationships/app", "alias": "pre_release_version_relationships_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/preReleaseVersions/{id}/builds", "alias": "pre_release_version_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/preReleaseVersions/{id}/app", "alias": "pre_release_version_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/preReleaseVersions/{id}/relationships/builds", "alias": "pre_release_version_relationships_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups", "alias": "beta_groups" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}", "alias": "beta_group" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/app", "alias": "beta_group_apps" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/relationships/app", "alias": "beta_group_relationships_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/betaTesters", "alias": "beta_group_beta_testers" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/relationships/builds", "alias": "beta_group_relationships_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/relationships/betaTesters", "alias": "beta_group_relationships_beta_testers" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds", "alias": "builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}", "alias": "build" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/app", "alias": "build_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaGroups/{id}/builds", "alias": "beta_group_builds" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/preReleaseVersion", "alias": "build_pre_release_version" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/preReleaseVersion", "alias": "build_relationships_pre_release_version" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/app", "alias": "build_relationships_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/individualTesters", "alias": "build_individual_testers" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/betaAppReviewSubmission", "alias": "build_relationships_beta_app_review_submission" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/individualTesters", "alias": "build_relationships_individual_testers" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/buildBetaDetail", "alias": "build_build_beta_detail" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/buildBetaDetail", "alias": "build_relationships_build_beta_detail" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/betaAppReviewSubmission", "alias": "build_beta_app_review_submission" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/appEncryptionDeclaration", "alias": "build_relationships_app_encryption_declaration" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/betaBuildLocalizations", "alias": "build_beta_build_localizations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/relationships/betaBuildLocalizations", "alias": "build_relationships_beta_build_localizations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}/appEncryptionDeclaration", "alias": "build_app_encryption_declaration" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/appEncryptionDeclarations", "alias": "app_encryption_declarations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/appEncryptionDeclarations/{id}", "alias": "app_encryption_declaration" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/appEncryptionDeclarations/{id}/app", "alias": "app_encryption_declaration_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/appEncryptionDeclarations/{id}/relationships/app", "alias": "app_encryption_declaration_relationships_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/buildBetaDetails", "alias": "build_beta_details" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/buildBetaDetails/{id}", "alias": "build_beta_detail" }, { "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/buildBetaDetails/{id}", "http_body_type": "Requests::V1::BuildBetaDetail::Update", "alias": "update_build_beta_detail" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/buildBetaDetails/{id}/build", "alias": "build_beta_detail_build" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/buildBetaDetails/{id}/relationships/build", "alias": "build_beta_detail_relationships_build" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppLocalizations", "alias": "beta_app_localizations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppLocalizations/{id}/app", "alias": "beta_app_localization_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppLocalizations/{id}", "alias": "beta_app_localization" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppLocalizations/{id}/relationships/app", "alias": "beta_app_localization_relationships_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaLicenseAgreements", "alias": "beta_license_agreements" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaLicenseAgreements/{id}/relationships/app", "alias": "beta_license_agreement_relationships_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaLicenseAgreements/{id}/app", "alias": "beta_license_agreement_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaLicenseAgreements/{id}", "alias": "beta_license_agreement" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations/{id}/relationships/build", "alias": "beta_build_localization_relationships_build" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations/{id}/build", "alias": "beta_build_localization_build" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations", "alias": "beta_build_localizations" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaBuildLocalizations/{id}", "alias": "beta_build_localization" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewDetails", "alias": "beta_app_review_details" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewDetails/{id}", "alias": "beta_app_review_detail" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewDetails/{id}/relationships/app", "alias": "beta_app_review_detail_relationships_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewDetails/{id}/app", "alias": "beta_app_review_detail_app" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewSubmissions", "alias": "beta_app_review_submissions" }, { "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewSubmissions", "http_body_type": "Requests::V1::BetaAppReviewSubmission::Create", "http_method": "post", "alias": "create_beta_app_review_submission" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewSubmissions/{id}", "alias": "beta_app_review_submission" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewSubmissions/{id}/relationships/build", "alias": "beta_app_review_submission_relationships_build" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/betaAppReviewSubmissions/{id}/build", "alias": "beta_app_review_submission_build" }, { "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/builds/{id}", "http_body_type": "BuildUpdateRequest", "alias": "update_build" }, { "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersions", "http_body_type": "AppStoreVersionCreateRequest", "http_method": "post", "alias": "create_app_store_version" }, { "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/{id}", "http_body_type": "AppStoreVersionUpdateRequest", "alias": "update_app_store_version" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/{id}", "alias": "delete_app_store_version" }, { "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/{id}/relationships/build", "http_body_type": "AppStoreVersionBuildLinkageRequest", "alias": "update_app_store_version_build" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/apps/{id}/appStoreVersions", "alias": "apps_app_store_versions" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/{id}", "alias": "app_store_version" }, { "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations", "http_body_type": "Requests::V1::AppStoreVersionLocalization::Create", "http_method": "post", "alias": "create_app_store_version_localization" }, { "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations/{id}", "http_body_type": "Requests::V1::AppStoreVersionLocalization::Update", "alias": "update_app_store_version_localization" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations/{id}", "alias": "delete_app_store_version_localization" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations/{id}", "alias": "app_store_version_localization" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/{id}/appStoreVersionLocalizations", "alias": "app_store_version_app_store_version_localizations" }, { "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionReleaseRequests", "http_body_type": "AppStoreVersionReleaseRequestCreateRequest", "http_method": "post", "alias": "create_app_store_version_release_request" }, { "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionPhasedReleases", "http_body_type": "AppStoreVersionPhasedReleaseCreateRequest", "http_method": "post", "alias": "create_app_store_version_phased_release" }, { "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionPhasedReleases/{id}", "http_body_type": "AppStoreVersionPhasedReleaseUpdateRequest", "alias": "update_app_store_version_phased_release" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/appStoreVersionPhasedReleases/{id}", "alias": "delete_app_store_version_phased_release" }, { "url": "https://api.appstoreconnect.apple.com/v1/reviewSubmissions", "http_body_type": "ReviewSubmissionCreateRequest", "http_method": "post", "alias": "create_review_submission" }, { "http_method": "patch", "url": "https://api.appstoreconnect.apple.com/v1/reviewSubmissions/{id}", "http_body_type": "ReviewSubmissionUpdateRequest", "alias": "update_review_submission" }, { "http_method": "delete", "url": "https://api.appstoreconnect.apple.com/v1/reviewSubmissions/{id}", "alias": "delete_review_submission" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/reviewSubmissions", "alias": "review_submissions" }, { "http_method": "get", "url": "https://api.appstoreconnect.apple.com/v1/reviewSubmissions/{id}", "alias": "review_submission" }, { "url": "https://api.appstoreconnect.apple.com/v1/reviewSubmissionItems", "http_body_type": "ReviewSubmissionItemCreateRequest", "http_method": "post", "alias": "create_review_submission_item" }, { "url": "https://api.appstoreconnect.apple.com/v1/reviewSubmissions/{id}/items", "http_method": "get", "alias": "review_submissions_items" } ], "types": [ { "type": "BundleIdPlatform", "values": [ "IOS", "MAC_OS" ] }, { "type": "CapabilityType", "values": [ "ICLOUD", "IN_APP_PURCHASE", "GAME_CENTER", "PUSH_NOTIFICATIONS", "WALLET", "INTER_APP_AUDIO", "MAPS", "ASSOCIATED_DOMAINS", "PERSONAL_VPN", "APP_GROUPS", "HEALTHKIT", "HOMEKIT", "WIRELESS_ACCESSORY_CONFIGURATION", "APPLE_PAY", "DATA_PROTECTION", "SIRIKIT", "NETWORK_EXTENSIONS", "MULTIPATH", "HOT_SPOT", "NFC_TAG_READING", "CLASSKIT", "AUTOFILL_CREDENTIAL_PROVIDER", "ACCESS_WIFI_INFORMATION" ] }, { "type": "CertificateType", "values": [ "OS_DEVELOPMENT", "IOS_DISTRIBUTION", "MAC_APP_DISTRIBUTION", "MAC_INSTALLER_DISTRIBUTION", "MAC_APP_DEVELOPMENT", "DEVELOPER_ID_KEXT", "DEVELOPER_ID_APPLICATION" ] }, { "type": "InAppPurchaseType", "values": [ "CONSUMABLE", "NON_CONSUMABLE", "NON_RENEWING_SUBSCRIPTION" ] }, { "type": "Platform", "values": [ "IOS", "MAC_OS", "TV_OS" ] }, { "type": "PhasedReleaseState", "values": [ "INACTIVE", "ACTIVE", "PAUSED", "COMPLETE" ] }, { "type": "UserRole", "values": [ "ADMIN", "FINANCE", "TECHNICAL", "SALES", "MARKETING", "DEVELOPER", "ACCOUNT_HOLDER", "READ_ONLY", "APP_MANAGER", "ACCESS_TO_REPORTS", "CUSTOMER_REPORTS" ] } ] } app_store_connect-0.38.0/Guardfile0000644000004100000410000000052714453372134017176 0ustar www-datawww-data# frozen_string_literal: true guard :rspec, cmd: 'bundle exec rspec' do require 'guard/rspec/dsl' dsl = Guard::RSpec::Dsl.new(self) rspec = dsl.rspec watch(rspec.spec_helper) { rspec.spec_dir } watch(rspec.spec_support) { rspec.spec_dir } watch(rspec.spec_files) ruby = dsl.ruby dsl.watch_spec_files_for(ruby.lib_files) end app_store_connect-0.38.0/Gemfile0000644000004100000410000000010614453372134016635 0ustar www-datawww-data# frozen_string_literal: true source 'https://rubygems.org' gemspec app_store_connect-0.38.0/assets/0000755000004100000410000000000014453372134016647 5ustar www-datawww-dataapp_store_connect-0.38.0/assets/banner.png0000644000004100000410000003266214453372134020633 0ustar www-datawww-dataPNG  IHDR=2sRGBeXIfMM*bj(1r2iHHPixelmator Pro 3.2.32019:08:08 06:08:6724 pHYs  iTXtXML:com.adobe.xmp 1 180 180 Pixelmator Pro 3.2.3 2019-08-08T06:08:67 2023-02-08T18:56:06+08:00 2 0 1 720000/10000 720000/10000 @Tl/IDATx}\řn%PB&g 2&؄u [}ֻ6k/^{v>1s`   ґH(Qir}tL鞩:}V}UUWk,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|mk8f=Zl^{mqpfyyh T*:*UW|YCtFGᦦ &%5-+ <\ឋk.h5CSmx0aݍ1l߾u+Lz۶mf͚"_zOͧ]`LLrN-7C`L),, ycF Nkk뤒 @+@iF^yӁh߉kE(zjO[Jk7 ':nrQOZ):2#GAYQQp7"y57aOaAjpe yPxrm+wXi߾}SN= @ $-"}l\@g _?}iiF(n +++}Os[gG)*(($ܱ5c`zpZIB2h4iiibFI.4!n}iӦ57@3ZpQ-Y3F)b3@c VSS3{҅(`Ђy4 }]:03NɎI; ?+E֌ utt,Fm*AfG f3"Ҍ|czsh5 Ɠ6y>kh5Ȗ;]GKИY|#eg4FWW8~2J'L Z k׮&4o4b yJ]ȸЋ Qn hˋO`ݮ<^?Ff|AnU`L?]xSīͥ9IyGu[LRvve& ;e@S@guo М;[c$+HmmmJm!DJ YJ!nJP>8+Մa:7k -)0W*<ͥ8: -%vhTO \Bϙ 2Bô#,FX$#y[bR=tq:(7E}7SGxq#Jڰ5,vtE;f:C{w8ƚ s*$1̴/G.l4hy|D~#^wmcXwn/>2_"e?փ3 rY0 y(bK{Xܳ5$ ĚM11$Ŝ=tLOw"m Tdزs 8ˡ\6QAOg#)c/d݇D_@䮸KP3Cq鶠6϶$'D6iyy'n?!4P1hc2TfBPԘ~[9/~+a4̴Fۭc5#@ƘsZЊ:--Q eEK ,|GaHOtKû~>rhICc3ݺ :Y[41"|%ٌa!+AՅaa~6y0?MFKXC!CK X?Jgi#ϖDyȶ]rvh4AgPAJg'(z]d1‡JGA>):TM;b`Z+.f*Sz ܖeGI _‰ +B9 H%11p? eQެb4YYHcI!]3CԒ@{X` O2T:y{p]>#${`cY3o=u/IT48)."UUykʸ:0=7bI )Orp//D5\U7KzτN;H%1XV;O”zBWހ.}72n|cqMX?JHLng•lHԀ4VP\8.;_2: &-Ng;,sV%P1@D]~Xˉp<>feG: S5X5>9FTxSV`xrpd8/KWgLjIP6Q,)o 4y-P.(g>49^b߈"0%IΓ$*SMtEG;"G/a|VsjYLél[qhtrnA\Lѝ l^Mj|^:pIRސXIi ?%VicW{g&+X1Z%svCdlt#`)K N#R.ڿ+f̰YyG h!b{-9K0e^褞ii:('eЩ׈~xr J/ n*k@]ͽo.ʬhsUeCV*UJff`Е]Arֵs En;[ƙG UJ#Ȑ۪UG49=|HM94"/RPq89\َ1||zT9t5ȃԞh8#<3\䌆 l磽|#Nrk⿷aJN\\[pr)0) 7\ޜB ANBG\]R gu8x[՚Q: ZqvF6 #ȴ[R9r4]x6AA"H<1u!AQAN3Kn0Y3q39\4 _:,ğZ.( AH`kadRTWcX☠0s;՗zP;e6X>aܚPz:6bMA*H *L V `H\ ^qaiuɝɠe^2;['eR [;$zL0]}g/镳=8lE8&/FrÛ Cj@۰)`datِ@"@f$N2,A8IXKHezS yd{HHbMjCj<3(dQXbM_.7%bE]x1 Ge8hH(o[3r X@ǡio /D W4>] r9lIidɇsi,DܚR:rm8bKS‒k#(cwhiНe&2 =bΟv0@u&M R6ݳO%q(JS`F~7@x|91F=&/?uc(`[ Vk#qmɸɠd-QE[yqt9QQ\Ev? ̗?BiC hM-ABu i3si/m*߉8hpQ<_1+-952 WԾ{+:Y3< X@^fȯ 10h@y ( y\gR3^PHiʃ*sdܷ} f8Z<[HRcN#蝊:.<ΓP\{ZJt3A- Et?d]ߐ67_1Sˀ,J?(fNuO?d+3=x)&(nm_]=m&y {@7aϘjD)p)t) 4$?xrgF 0/9LCJ"C>@ 4nޙ@o~|u~L׀ `Xt]DtAarj%{!V 1c6jwS:-%yg*'X"\vC04]+BI>Q3,q)]1#T.O ş J=P`\+w,pe! [XCzClXCGbOS0]-SX|Xha]|[dMb g![ kP-d,tkYOl86|"Y qJٯ\>^Q} j$4/ n VFFaG7#Ogky2'#+ʪOrh~4a!ȚW3Гx^hJ9>^_P%Ԧ)R5Ր8k9)LCFҨ_0͸2R"WM6.h%78ȼK;H#AlERC(MsV\p3?i@u}X,2pSoFiHqh^RfȠzw#@eN'zO{2ÿ YzlE(FzsqfF>p{`L6 7+Cu#,vTaN~'Z--}cDY7g$E$PesKu&e:B`H7ᔡ:Ri{f bd(d&tȴXTx' ^'ćgyEŗ;p’넴2 *{ o heed/aȼu{ "򉿁ć-MNM-; P6@\vIhb~QʎxG[s:=a6) \_)Q w԰ޝW;UBxrsl#CZvt^T/+02 ܪ~:Gq]f ?o6p+0W9MbP+ 붃;Bw?@i7*ӘpMNz)27Rvca&{ɋ.5v |b.eźMZVv)GqJ/L@ -?W>K+~3gCcY:~q]ue\id: \uTlQ1EA.SAOYJ?_LqaY.iW!c82#К8#xg";:6#7݌m7(;DmgGbUMΆvuEkil1xʒ1ž葾u7i"핅dB$#ulxJ@~~5TShosp+[+n;@\mN\\ʶIOw"t7 9&]䮺Nl'3C%[GwR A&,\:NzAT|hSG?@<r]Oܬi0&-2i+^0f!SɩBoA#j?[':l7ݨ탧L:VDi`>'GabbRKވ  ]*HrMF3AZk.(Lu2ݩv&;ahb.CNjCOe( ybMPh+#h,ZIn1A%aCe.ίb>;TN"\EJOJf'T{p7_)$'S4zoy`nA޴|=X~*.!&%@vYyQ{(3glPY|Wx'R3_J_-_>' RT]c[2pIh%!̿+/ǤJ|ꢔEs`>eZ&YZ%l__|W]Q׃Zaxө>碸KkrgIJݕhJH&pڡ2nx"G)/`_!elH_tcH^ MPGCn{[7ԁ6ԍa{=bBn|*az#u=F6b@,eWkAx ]pEWw#ؖ<=s$A^;gOVB-w88u)%@cPH~"Su'1$Vꑊ#˸*0x(=>W{㵋q(fU@4]R42L͏2*l_ZeY:.kȈr6Pm5.]CS{l0۫ۧ즽pEmX5|G$CTLiyt}P~'D⺪oat2_ bptL6^ye!gy| 1l/?dsZyl=7X5)Yg1Or8{HqQbRTKLWL -0id Hcmtcy|;{( )[M/e~1*_F3:/9ɫinlnhՆ׎鎼4W6H׫I )\^W/qLrbx3([ 0Gn\mVLUp{Iڃ9hRtV<čdaeײSip.D$UHJ/AfzQ dg 317""('7zyz P2NЏ<.p-bhpf_M].Ŧ*׻ q)1C rƲH~Et!N9 E)\|V>C4bBtYgѴ|cZ]"Ŧ\7$dmy0hH;95v_V"ՠB8І>;>m6]q:9)>5ʫӗ۲IR`>2^^ j|3LW.c#f^>} "h] %/G:&U}^T.`z%,%|p)`ɉ_G8wz7s< W֐膊\p3Onϝ'>NGjPDWx{+|bJxs骢6Mi mhYLeR+q)Cyqnv-$x4U޸98߸2fƶOwb/&BLLcj&%??/;p%>5+aӺwŌ۶IqP83#$L 4v{q݈+ -_pC^&*r>â lx_j:(B瞣2Q/6nk|CĞKG.$ hƹm]ʻ喻kkҩO\=WI-$F)nN5hs?_/SI s q%;\;M%u̞`s[&cdxUvٲ^wЎA຿J &^uةqfBX! K{tW x[#¹ꦨg%ň h ;۶Ç溍bΝP\~[ [@An=x55`Ô)tђҩrL ⬎3/ox Njм91Yq/ywsn$f#6? \ }v򽵯&3H8I%/^ _#MB஡A!zI$Q1y}0}o5x _vGb2uiIdLR$\5fTq)v4 #/*:8a}b&#ڔHN}СߓSCybR^O;4FԬFL?.Ah|oTPjE0 LiGndC̝;YkGӅ D%F2""ɝ)?N]xo/*-dMF9*c p,޳M g.މ5KM>K~6r'=~r<(-^W·koO AcCA !x77Sٙ77VŀhvM뙃Ԝ:5U!C߲hSrC{ @y! &"̚QxkkΔi~C !2fK{*21ŔO+*^:'w>DN͓F`kX;DP;ا5s&g㚃k+<, g%nLf{BCx`,+/x$ҫ&h*0VTU}nCar l1bpxR/2\<q 3@9cP5oAhk[@S⋳O\}s wMqp{~]]hin{Òb:j/VhSt2$*xs r+;mKܓw| WVVNBQ%q9MOu%> h )nYq&4^\a00 `tocӥ 6m$26lXJ\;LQRY|޼ۏVT\ Gv_ Gl q =g͛HrYZawzYn(I /xĬFd )S$!xc--q,9n4i)@믷V݁c/41b'&uḃ0djcTqWD`;mkDkrm#9?].-1654I/_! ZJ'N FO֪n,S+ַ^ ݋ى6.h$AX^y 8k]L;6H#M@&Oo:o΍36f1P8M-o} ̦c=q 9 \\ZMPf֒N\CxzNGX@/C!_:>jQ }pIUە3fkmOVvHqqi,IwtJ T>[# QS=,=_im$S`&˲y ?O.q7> $GITHUB_ENV - name: Build run: bundle exec rake build - name: Upload Gem uses: actions/upload-artifact@v3 with: name: app_store_connect-${{ env.APP_STORE_CONNECT_VERSION }}.gem path: app_store_connect-${{ env.APP_STORE_CONNECT_VERSION }}.gem lint: name: Lint runs-on: ubuntu-latest needs: [build] strategy: matrix: ruby_versions: [2.7, 3.0, 3.1, 3.2] steps: - uses: actions/checkout@v3 - name: Set up Ruby ${{ matrix.ruby_versions }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby_versions }} - uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} restore-keys: ${{ runner.os }}-gems- - name: Install Bundler run: gem install bundler - name: Configure Bundler run: bundle config path vendor/bundle - name: Bundle Install run: bundle install --jobs 4 --retry 3 - name: Run Rubocop run: bundle exec rubocop test: name: Test runs-on: ubuntu-latest needs: [build] strategy: matrix: ruby_versions: [2.7, 3.0, 3.1, 3.2] steps: - uses: actions/checkout@v3 - name: Set up Ruby ${{ matrix.ruby_versions }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby_versions }} - uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} restore-keys: ${{ runner.os }}-gems- - name: Install Bundler run: gem install bundler - name: Configure Bundler run: bundle config path vendor/bundle - name: Bundle Install run: bundle install --jobs 4 --retry 3 - name: Run RSpec run: bundle exec rake spec release: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/v') }} needs: [test, lint] steps: - uses: actions/checkout@v3 - name: Set up Ruby 3.2 uses: ruby/setup-ruby@v1 with: ruby-version: 3.2 - uses: actions/cache@v3 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} restore-keys: ${{ runner.os }}-gems- - name: Install Bundler run: gem install bundler - name: Configure Bundler run: bundle config path vendor/bundle - name: Configure Gem run: | mkdir -p $HOME/.gem touch $HOME/.gem/credentials chmod 0600 $HOME/.gem/credentials printf -- "---\n:rubygems_api_key: ${{secrets.RUBYGEMS_API_KEY}}\n:github: Bearer ${{secrets.PERSONAL_ACCESS_TOKEN}}" > $HOME/.gem/credentials - name: Bundle Install run: bundle install --jobs 4 --retry 3 - name: Set APP_STORE_CONNECT_VERSION run: echo "APP_STORE_CONNECT_VERSION=$(bundle exec rake version:current)" >> $GITHUB_ENV - uses: actions/download-artifact@v3 with: name: app_store_connect-${{ env.APP_STORE_CONNECT_VERSION }}.gem path: /tmp - run: mv /tmp/app_store_connect-${{ env.APP_STORE_CONNECT_VERSION }}.gem . - name: Push Gem to Rubygems run: bundle exec rake push[rubygems] continue-on-error: true - name: Push Gem to Github Package Registry run: bundle exec rake push[github] continue-on-error: true - name: Create Release id: create_release uses: actions/create-release@latest env: GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} with: tag_name: ${{ github.ref }} release_name: ${{ github.ref }} draft: false prerelease: false - name: Upload Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: app_store_connect-${{ env.APP_STORE_CONNECT_VERSION }}.gem asset_name: app_store_connect-${{ env.APP_STORE_CONNECT_VERSION }}.gem asset_content_type: application/binary app_store_connect-0.38.0/.github/ISSUE_TEMPLATE/0000755000004100000410000000000014453372134021070 5ustar www-datawww-dataapp_store_connect-0.38.0/.github/ISSUE_TEMPLATE/feature_request.md0000644000004100000410000000112314453372134024612 0ustar www-datawww-data--- name: Feature request about: Suggest an idea for this project title: '' labels: '' assignees: '' --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. app_store_connect-0.38.0/.github/ISSUE_TEMPLATE/bug_report.md0000644000004100000410000000150214453372134023560 0ustar www-datawww-data--- name: Bug report about: Create a report to help us improve title: '' labels: '' assignees: '' --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - Browser [e.g. chrome, safari] - Version [e.g. 22] **Smartphone (please complete the following information):** - Device: [e.g. iPhone6] - OS: [e.g. iOS8.1] - Browser [e.g. stock browser, safari] - Version [e.g. 22] **Additional context** Add any other context about the problem here. app_store_connect-0.38.0/LICENSE.txt0000644000004100000410000000206514453372134017173 0ustar www-datawww-dataThe MIT License (MIT) Copyright (c) 2019 Kyle Decot Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. app_store_connect-0.38.0/app_store_connect.gemspec0000644000004100000410000000327314453372134022424 0ustar www-datawww-data# frozen_string_literal: true lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'app_store_connect/version' Gem::Specification.new do |spec| spec.name = 'app_store_connect' spec.version = AppStoreConnect::VERSION spec.authors = ['Kyle Decot'] spec.email = ['kyle.decot@icloud.com'] spec.summary = 'A Ruby interface to the App Store Connect API' spec.homepage = 'https://github.com/kyledecot/app_store_connect' spec.license = 'MIT' spec.files = Dir.chdir(File.expand_path(__dir__)) do `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } end spec.require_paths = ['lib'] spec.required_ruby_version = '>= 2.7.0' spec.add_runtime_dependency 'activesupport', '>= 6.0.0' spec.add_runtime_dependency 'jwt', '>= 1.4' spec.add_runtime_dependency 'zeitwerk', '>= 2.6.7' spec.add_development_dependency 'bundler' spec.add_development_dependency 'erb', '~> 4.0.2' spec.add_development_dependency 'factory_bot', '~> 6.2.1' spec.add_development_dependency 'github_changelog_generator', '1.16.4' spec.add_development_dependency 'guard-rspec', '~> 4.7.3' spec.add_development_dependency 'pry', '~> 0.14.1' spec.add_development_dependency 'rake', '~> 13.0.6' spec.add_development_dependency 'rspec', '~> 3.12.0' spec.add_development_dependency 'rubocop', '~> 1.50.1' spec.add_development_dependency 'rubyzip' spec.add_development_dependency 'semantic', '~> 1.6.1' spec.add_development_dependency 'simplecov', '~> 0.22.0' spec.add_development_dependency 'timecop', '~> 0.9.5' spec.add_development_dependency 'webmock', '~> 3.18.1' end