diff --git a/lib/app_store_connect/client.rb b/lib/app_store_connect/client.rb index c098b7f..81abe6f 100644 --- a/lib/app_store_connect/client.rb +++ b/lib/app_store_connect/client.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true require 'active_support/all' -require 'mixpanel-ruby' -require 'securerandom' require 'app_store_connect/request' require 'app_store_connect/authorization' require 'app_store_connect/schema' +require 'app_store_connect/client/usage' module AppStoreConnect class Client @@ -23,8 +22,7 @@ def initialize(**kwargs) .web_service_endpoints .map { |s| [s.alias, s] } .to_h - @distinct_id = SecureRandom.uuid - @tracker = Mixpanel::Tracker.new('1213f2b88b9b10b13d321f4c67a55ca8') + @usage = Usage.new end def respond_to_missing?(method_name, include_private = false) @@ -39,6 +37,10 @@ def method_missing(method_name, *kwargs) call(web_service_endpoint, *kwargs) end + def inspect + "#<#{self.class.name}:#{object_id}>" + end + def web_service_endpoint_aliases @web_service_endpoints_by_alias.keys end @@ -50,7 +52,7 @@ def call(web_service_endpoint, **kwargs) request = build_request(web_service_endpoint, **kwargs) - @tracker.track(@distinct_id, web_service_endpoint.alias) if @options[:analytics_enabled] + @usage.track if @options[:analytics_enabled] response = request.execute JSON.parse(response.body) if response.body diff --git a/lib/app_store_connect/client/usage.rb b/lib/app_store_connect/client/usage.rb new file mode 100644 index 0000000..3b55e46 --- /dev/null +++ b/lib/app_store_connect/client/usage.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'mixpanel-ruby' +require 'securerandom' + +module AppStoreConnect + class Client + class Usage + MIXPANEL_PROJECT_TOKEN = '1213f2b88b9b10b13d321f4c67a55ca8' + private_constant :MIXPANEL_PROJECT_TOKEN + + def initialize + @distinct_id = SecureRandom.uuid + @tracker = Mixpanel::Tracker.new(MIXPANEL_PROJECT_TOKEN) + end + + def track + @tracker.track(@distinct_id, 'usage') + end + end + end +end diff --git a/spec/app_store_connect/client/usage_spec.rb b/spec/app_store_connect/client/usage_spec.rb new file mode 100644 index 0000000..e3b96a7 --- /dev/null +++ b/spec/app_store_connect/client/usage_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +RSpec.describe AppStoreConnect::Client::Usage do + describe '#track' do + it 'should track usage w/ mixpanel' do + expect_any_instance_of(Mixpanel::Tracker) + .to receive(:track) + .with(String, 'usage') + + described_class.new.track + end + end +end