class ITCAnalytics::Interfaces::Gateways::ItunesConnect

Public Class Methods

new(http_controller:, apple_widget_key:) click to toggle source
# File lib/itc_analytics/interfaces/gateways/itunesconnect.rb, line 8
def initialize(http_controller:, apple_widget_key:)
        @http_controller = http_controller
        @apple_widget_key = apple_widget_key
end

Public Instance Methods

execute_metrics_query(query:) click to toggle source
# File lib/itc_analytics/interfaces/gateways/itunesconnect.rb, line 63
def execute_metrics_query(query:)
  url = "https://analytics.itunes.apple.com/analytics/api/v1/data/time-series"
  post_body = query.assemble_body.to_json
  
  result = @http_controller.post(url: url, 
    headers: get_headers([query.session.account_cookie, query.session.itctx_cookie]),
    post_body: post_body)

  return result_body(result)
end
get_api_url(url:, session_cookies:) click to toggle source
# File lib/itc_analytics/interfaces/gateways/itunesconnect.rb, line 53
def get_api_url(url:, session_cookies:)
        result = @http_controller.get(url: url, headers: get_headers(session_cookies))
        return result_body(result)
end
get_applications_json(session_cookies:) click to toggle source
# File lib/itc_analytics/interfaces/gateways/itunesconnect.rb, line 58
def get_applications_json(session_cookies:) 
        url = 'https://analytics.itunes.apple.com/analytics/api/v1/app-info/app'
        return get_api_url(url: url, session_cookies: session_cookies)
end
get_headers(get_cookies) click to toggle source
# File lib/itc_analytics/interfaces/gateways/itunesconnect.rb, line 34
def get_headers(get_cookies) 
        Hash["Content-Type" => "application/json;charset=UTF-8",
                 "Accept" => "application/json, text/plain, */*",
                 "Origin" => "https://analytics.itunes.apple.com",
                 "X-Requested-By" => "analytics.itunes.apple.com",
                 "Referer" => "https://analytics.itunes.apple.com/",
                 "Cookie" => get_cookies]
end
result_body(result) click to toggle source
# File lib/itc_analytics/interfaces/gateways/itunesconnect.rb, line 43
def result_body(result) 
  if result["error"] 
    if result["code"] == 401
      raise Exceptions::ItunesUnauthorized, "Unauthorized call to iTunesConnect #{result['message']}"
    end
    raise Exceptions::ItunesRequestFailure,  "iTunesConnect not responding to #{result['message']}"
  end
  return result["body"]
end