Sha256: cc50670199aa7fc99fc36b835b6306554eea8520896c5ac203387207c08d61b5

Contents?: true

Size: 1.55 KB

Versions: 9

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

require 'active_support/inflector'

module AppStoreDevApi
  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

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
app_store_dev_api-0.1.9 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.8 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.7 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.6 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.4 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.3 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.2 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.1 lib/app_store_dev_api/request/builder/create.rb
app_store_dev_api-0.1.0 lib/app_store_dev_api/request/builder/create.rb