class ITCAnalytics::UseCases::GetAvailableApplications

Attributes

itunesconnect_gateway[RW]
session_repository[RW]

Public Class Methods

new(session_repository:, itunesconnect_gateway:) click to toggle source
# File lib/itc_analytics/use_cases/get_available_applications.rb, line 10
def initialize(session_repository:, itunesconnect_gateway:)
        @session_repository = session_repository
        @itunesconnect_gateway = itunesconnect_gateway
end

Public Instance Methods

execute() click to toggle source
# File lib/itc_analytics/use_cases/get_available_applications.rb, line 15
def execute

        session = @session_repository.get 
        if session == nil || !session.valid? 
                raise Exceptions::InvalidSession
        end

        results = @itunesconnect_gateway.get_applications_json(
                session_cookies: [session.account_cookie, session.itctx_cookie]
        )

        obj = JSON.parse(results)
        if !obj.key?("results")
                raise Exceptions::NoResults
        end

        applications = obj["results"].map { |e| 
                Domain::Entities::Application.new(
                        itunes_app_id: e["adamId"],
                        itunes_app_name: e["name"],
                        is_bundle: e["is_bundle"],
                        icon_url: e["icon_url"],
                        asset_token: e["asset_token"],
                        platforms: e["platforms"],
                        is_enabled: e["is_enabled"],
                        app_opt_in_rate: e["app_opt_in_rate"]
                )
        }
        return applications

rescue Interfaces::Gateways::Exceptions::ItunesUnauthorized => e 
        @session_repository.save(nil)
        raise Exceptions::InvalidSession, "The session was invalid"
end