private void AfterValidate(IAsyncResult result)
{
BlipCommunicationState state = BlipCommunicationState.OK;
Exception exp = null;
HttpStatusCode httpCode = HttpStatusCode.OK;
bool validate = false;
HttpResponseMessage resp = null;
//sprawdzamy czy komunikacja się powiodła
try
{
//pobieramy obiekt HttpClient, dzięki któremu został wysłany request
//przekazaliśmy ten obiekt jako state
var client = result.AsyncState as HttpClient;
//pobieramy odpowiedź
using (resp = client.EndSend(result))
{
httpCode = resp.StatusCode;
if (resp.StatusCode != HttpStatusCode.Unauthorized)
{
//gdy nie wyrzuci wyjątku znaczy że wszystko jest ok
//lecz gdy wyrzuci wyjątek to znaczy że coś nawaliła komunikacja
resp.EnsureStatusIsSuccessful();
validate = true;
}
}
}
catch (ArgumentOutOfRangeException aorEx)
{
state = BlipCommunicationState.CommunicationError;
}
catch (Exception ex)
{
state = BlipCommunicationState.Error;
exp = ex;
}
//gdy wystąpiły jakieś błędy w komunikacji
if (state == BlipCommunicationState.Error && ExceptionOccure != null)
{
ExceptionOccure(null, new ExceptionEventArgs(exp));
return;
}
if (state == BlipCommunicationState.CommunicationError && CommunicationError != null)
{
CommunicationError(null, new CommunicationErrorEventArgs(httpCode, BlipActions.AfterValidate));
return;
}
//zgłaszamy zdarzenie że walidacja zakńczona
if (AuthorizationComplete != null)
{
AuthorizationComplete(validate);
}
}