class AppStoreConnect::Request

Public Class Methods

new(**options) click to toggle source
# File lib/app_store_connect/request.rb, line 13
def initialize(**options)
  @uri = options.fetch(:uri)
  @options = options
end

Public Instance Methods

execute() click to toggle source
# File lib/app_store_connect/request.rb, line 18
def execute
  Net::HTTP.start(uri.host, uri.port, net_http_options) do |http|
    http.request(request)
  end
end

Private Instance Methods

body() click to toggle source
# File lib/app_store_connect/request.rb, line 63
def body
  return if http_method == :get

  @options.fetch(:http_body)
end
headers() click to toggle source
# File lib/app_store_connect/request.rb, line 59
def headers
  @options.fetch(:headers, {})
end
http_method() click to toggle source
# File lib/app_store_connect/request.rb, line 41
def http_method
  @options.fetch(:http_method).to_sym
end
kwargs() click to toggle source
# File lib/app_store_connect/request.rb, line 49
def kwargs
  @options.fetch(:kwargs, {})
end
net_http_options() click to toggle source
# File lib/app_store_connect/request.rb, line 45
def net_http_options
  { use_ssl: uri.scheme == 'https' }
end
net_http_request_class() click to toggle source
# File lib/app_store_connect/request.rb, line 76
def net_http_request_class
  case http_method
  when :get then Net::HTTP::Get
  when :post then Net::HTTP::Post
  when :delete then Net::HTTP::Delete
  when :patch then Net::HTTP::Patch
  else
    raise UnsupportedHTTPMethod, http_method
  end
end
query() click to toggle source
# File lib/app_store_connect/request.rb, line 30
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
request() click to toggle source
# File lib/app_store_connect/request.rb, line 87
def request
  net_http_request_class
    .new(uri, headers)
    .tap { |r| r.body = body if r.request_body_permitted? }
end
uri() click to toggle source
# File lib/app_store_connect/request.rb, line 53
def uri
  @options.fetch(:uri).tap do |uri|
    uri.query = query if http_method == :get
  end
end
url_parameter_names(web_service_endpoint) click to toggle source
# File lib/app_store_connect/request.rb, line 69
def url_parameter_names(web_service_endpoint)
  web_service_endpoint
    .url
    .scan(/(\{(\w+)\})/)
    .map { |_, n| n.to_sym }
end
web_service_endpoint() click to toggle source
# File lib/app_store_connect/request.rb, line 26
def web_service_endpoint
  @options.fetch(:web_service_endpoint)
end