private async Task <bool> SendMessageInternalAsync(
            MixpanelMessageEndpoint endpoint, string messageJson)
        {
            string messageBody = ToMixpanelMessageFormat(ToBase64(messageJson));

            if (messageBody == null)
            {
                return(await Task.FromResult(false).ConfigureAwait(false));
            }

            return(await HttpPostAsync(endpoint, messageBody).ConfigureAwait(false));
        }
        private bool SendMessageInternal(
            MixpanelMessageEndpoint endpoint, string messageJson, string api_key)
        {
            string messageBody = ToMixpanelMessageFormat(ToBase64(messageJson));

            if (messageBody == null)
            {
                return(false);
            }

            return(HttpPost(endpoint, messageBody, api_key));
        }
        private async Task <bool> SendMessageInternalAsync(
            Func <object> getMessageDataFn, MixpanelMessageEndpoint endpoint, MessageKind messageKind)
        {
            string messageBody = GetMessageBody(getMessageDataFn, messageKind);

            if (messageBody == null)
            {
                return(await Task.FromResult(false).ConfigureAwait(false));
            }

            return(await HttpPostAsync(endpoint, messageBody).ConfigureAwait(false));
        }
        private bool SendMessageInternal(
            Func <object> getMessageDataFn, MixpanelMessageEndpoint endpoint, MessageKind messageKind, string api_key)
        {
            string messageBody = GetMessageBody(getMessageDataFn, messageKind);

            if (messageBody == null)
            {
                return(false);
            }

            return(HttpPost(endpoint, messageBody, api_key));
        }
        private async Task <bool> SendMessageInternalAsync(
            MixpanelMessageEndpoint endpoint,
            Func <BatchMessageBuildResult> getBatchMessageBuildResultFn)
        {
            string messageBody = GetMessageBody(getBatchMessageBuildResultFn);

            if (messageBody == null)
            {
                return(await Task.FromResult(false).ConfigureAwait(false));
            }

            return(await HttpPostAsync(endpoint, messageBody).ConfigureAwait(false));
        }
        private bool SendMessageInternal(
            MixpanelMessageEndpoint endpoint,
            Func <BatchMessageBuildResult> getBatchMessageBuildResultFn)
        {
            string messageBody = GetMessageBody(getBatchMessageBuildResultFn);

            if (messageBody == null)
            {
                return(false);
            }

            return(HttpPost(endpoint, messageBody));
        }
        private string GetEndpoint(MixpanelMessageEndpoint endpoint)
        {
            switch (endpoint)
            {
            case MixpanelMessageEndpoint.Track:
                return(EndpointTrack);

            case MixpanelMessageEndpoint.Engage:
                return(EndpointEngage);

            default:
                throw new ArgumentOutOfRangeException(nameof(endpoint));
            }
        }
        private async Task <bool> HttpPostAsync(MixpanelMessageEndpoint endpoint, string messageBody)
        {
            string url = GenerateUrl(endpoint);

            try
            {
                var httpPostFn = ConfigHelper.GetHttpPostAsyncFn(config);
                return(await httpPostFn(url, messageBody).ConfigureAwait(false));
            }
            catch (Exception e)
            {
                LogError($"POST fails to '{url}' with data '{messageBody}'.", e);
            }

            return(await Task.FromResult(false).ConfigureAwait(false));
        }
        private bool HttpPost(MixpanelMessageEndpoint endpoint, string messageBody)
        {
            string url = GenerateUrl(endpoint);

            try
            {
                var httpPostFn = ConfigHelper.GetHttpPostFn(config);
                return(httpPostFn(url, messageBody));
            }
            catch (Exception e)
            {
                LogError($"POST fails to '{url}' with data '{messageBody}'.", e);
            }

            return(false);
        }
        private bool HttpPost(MixpanelMessageEndpoint endpoint, string messageBody, string api_key)
        {
            string url = GenerateUrl(endpoint);

            try
            {
                var httpPostFn = ConfigHelper.GetHttpPostFn(_config);
                return(httpPostFn(url, messageBody, api_key));
            }
            catch (Exception e)
            {
                LogError(string.Format("POST fails to '{0}' with data '{1}'", url, messageBody), e);
            }

            return(false);
        }
        private async Task <bool> HttpPostAsync(MixpanelMessageEndpoint endpoint, string messageBody)
        {
            string url = GenerateUrl(endpoint);

            try
            {
                var httpPostFn = ConfigHelper.GetAsyncHttpPostFn(_config);
                return(await httpPostFn(url, messageBody));
            }
            catch (Exception e)
            {
                LogError(string.Format("POST fails to '{0}' with data '{1}'", url, messageBody), e);
            }

            return(await Task.FromResult(false));
        }
        private string GenerateUrl(MixpanelMessageEndpoint endpoint)
        {
            string url = string.Format(UrlFormat, GetEndpoint(endpoint));

            MixpanelIpAddressHandling ipAddressHandling = ConfigHelper.GetIpAddressHandling(config);

            switch (ipAddressHandling)
            {
            case MixpanelIpAddressHandling.UseRequestIp:
                url += "?ip=1";
                break;

            case MixpanelIpAddressHandling.IgnoreRequestIp:
                url += "?ip=0";
                break;
            }

            return(url);
        }
        private async Task <bool> SendMessageInternalAsync(
            MixpanelMessageEndpoint endpoint, string messageJson)
        {
            string messageBody = ToMixpanelMessageFormat(ToBase64(messageJson));

            if (messageBody == null)
            {
                return(await Task.FromResult(false));
            }

#if (PORTABLE || PORTABLE40)
            if (!ConfigHelper.AsyncHttpPostFnSet(_config))
            {
                throw new MixpanelConfigurationException(
                          "There is no default async HTTP POST method in portable builds. Please use configuration to set it.");
            }
#endif

            return(await HttpPostAsync(endpoint, messageBody));
        }
        private async Task <bool> SendMessageInternalAsync(
            Func <object> getMessageDataFn, MixpanelMessageEndpoint endpoint, MessageKind messageKind)
        {
            string messageBody = GetMessageBody(getMessageDataFn, messageKind);

            if (messageBody == null)
            {
                return(await Task.FromResult(false));
            }

#if (PORTABLE || PORTABLE40)
            if (!ConfigHelper.AsyncHttpPostFnSet(_config))
            {
                throw new MixpanelConfigurationException(
                          "There is no default async HTTP POST method in portable builds. Please use configuration to set it.");
            }
#endif

            return(await HttpPostAsync(endpoint, messageBody));
        }
Exemple #15
0
 /// <inheritdoc />
 public async Task <bool> SendJsonAsync(MixpanelMessageEndpoint endpoint, string messageJson)
 {
     return(await SendMessageInternalAsync(endpoint, messageJson).ConfigureAwait(false));
 }
Exemple #16
0
 /// <inheritdoc/>
 public bool SendJson(MixpanelMessageEndpoint endpoint, string messageJson)
 {
     return(SendMessageInternal(endpoint, messageJson));
 }