class ITCAnalytics::UseCases::GetAppInstalls
Attributes
applications[RW]
end_date[RW]
itunes_gateway[RW]
session_repository[RW]
start_date[RW]
Public Class Methods
new(applications:, session_repository:, start_date:, end_date:, itunes_gateway:)
click to toggle source
# File lib/itc_analytics/use_cases/get_app_installs.rb, line 10 def initialize(applications:, session_repository:, start_date:, end_date:, itunes_gateway:) @applications, @session_repository, @start_date, @end_date, @itunes_gateway = [ applications, session_repository, start_date, end_date, itunes_gateway ] end
Public Instance Methods
execute()
click to toggle source
# File lib/itc_analytics/use_cases/get_app_installs.rb, line 24 def execute session = @session_repository.get if (session == nil || session.valid? == false) raise Exceptions::InvalidSession, "Session was nil!" end analytics_options = Domain::ValueObjects::AnalyticsOptions.new( primary_measure: Domain::ValueObjects::AnalyticsOptions.measures[:installs], start_date: @start_date, end_date: @end_date) metrics_options = Domain::ValueObjects::MetricsOptions.new(secondary_measure: nil, frequency: Domain::ValueObjects::MetricsOptions.frequencies[:days], group: { :metric => Domain::ValueObjects::AnalyticsOptions.measures[:installs], :dimension => Domain::ValueObjects::MetricsOptions.dimension_filter_keys[:device], :rank => "", :limit => 10 }, dimension_filters: []) query = Domain::Entities::MetricsQuery.new(session: session, applications: @applications, analytics_options: analytics_options, metrics_options: metrics_options) results = @itunes_gateway.execute_metrics_query(query: query) results_obj = JSON.parse(results) if !results_obj.key?("results") raise Exceptions::NoResults, "There were no results in the json #{results}" end return results_obj["results"].map { |result| { :adamId => result["adamId"], :meetsThreshold => result["meetsThreshold"], :platform => result["group"]["key"], :data => result["data"] } } rescue Interfaces::Gateways::Exceptions::ItunesUnauthorized => e puts e.message @session_repository.save(nil) raise Exceptions::InvalidSession end