protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var client = ServiceLocator.Instance.Resolve<IAzureClient>()?.Client as MobileServiceClient;
if (client == null)
{
throw new InvalidOperationException("Make sure to set the ServiceLocator has an instance of IAzureClient");
}
// Cloning the request, in case we need to send it again
var clonedRequest = await CloneRequest(request);
var response = await base.SendAsync(clonedRequest, cancellationToken);
if (response.StatusCode == HttpStatusCode.Unauthorized)
{
// The user isn't logged in so we'll go ahead and present them with a login screen.
try
{
await client.LoginAsync(MobileServiceAuthenticationProvider.Facebook, null);
}
catch (InvalidOperationException)
{
// user cancelled auth, so lets return the original response
return response;
}
}
return response;
}