public async Task <WebResult <TokenPair> > GetToken(Position position, int duration, string address = "", double?accuracy = null) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(Constants.BaseUrl); var parameters = new Dictionary <string, string> { ["Latitude"] = position.Latitude.ToString(CultureInfo.InvariantCulture), ["Longitude"] = position.Longitude.ToString(CultureInfo.InvariantCulture), ["Duration"] = duration.ToString(CultureInfo.InvariantCulture), ["Address"] = address, ["Accuracy"] = accuracy.HasValue ? accuracy.Value.ToString(CultureInfo.InvariantCulture) : "0" }; var response = await client.PostAsync(Constants.TokenSubUrl, new FormUrlEncodedContent(parameters)); WebResult <TokenPair> tokenResult = null; if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); tokenResult = JsonConvert.DeserializeObject <WebResult <TokenPair> >(content); if (!tokenResult.IsError) { Debug.WriteLine($"Got tokens: {tokenResult.Result.PublicToken} {tokenResult.Result.PrivateToken}"); return(tokenResult); } } return(WebResult <TokenPair> .Error($"{AppResources.ErrorConnectionProblem}: {response.StatusCode} {tokenResult?.ErrorMessage}")); } }
public async Task <WebResult> SendPosition(string token, Position position, string address, double?accuracy) { try { using (var client = new HttpClient()) { client.BaseAddress = new Uri(Constants.BaseUrl); var parameters = new Dictionary <string, string> { ["token"] = token, ["latitude"] = position.Latitude.ToString(CultureInfo.InvariantCulture), ["longitude"] = position.Longitude.ToString(CultureInfo.InvariantCulture), ["address"] = address, ["accuracy"] = accuracy?.ToString(CultureInfo.InvariantCulture) }; var response = await client.PostAsync(Constants.SendPositionSubUrl, new FormUrlEncodedContent(parameters)); return(response.IsSuccessStatusCode ? WebResult.Success() : WebResult.Error($"Error: {response.StatusCode}")); } } catch (Exception) { return(WebResult.Error(AppResources.ErrorSendingPosition)); } }
public async Task <WebResult> StopSession(string privateToken) { try { using (var client = new HttpClient()) { client.BaseAddress = new Uri(Constants.BaseUrl); var response = await client.DeleteAsync($"{Constants.TokenSubUrl}/{privateToken}"); Debug.WriteLine($"Stop session result: {response.StatusCode} {response.RequestMessage.RequestUri}"); return(response.IsSuccessStatusCode ? WebResult.Success() : WebResult.Error($"{AppResources.Error}: {response.StatusCode}")); } } catch (Exception) { return(WebResult.Error(AppResources.CannotStopTrackingNoInternet)); } }