public void Execute() { if (_action.ActionFuture.IsCanceled) { return; } //_context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] Begin"); try { switch (_type) { case HttpActorType.BuildRequest: { var service = _context.GetSerivce <IHttpService>(QQServiceType.HTTP); var adaptor = new HttpAdaptor(_context, _action); var request = _action.BuildRequest(); _action.ResponseFuture = service.ExecuteHttpRequestAsync(request, adaptor, _action.ActionFuture.Token); break; } case HttpActorType.CancelRequest: _action.CancelRequest(); break; case HttpActorType.OnHttpError: _action.OnHttpError(_throwable); break; case HttpActorType.OnHttpFinish: _action.OnHttpFinish(_response); break; case HttpActorType.OnHttpHeader: _action.OnHttpHeader(_response); break; case HttpActorType.OnHttpRead: _action.OnHttpRead(_current, _total); break; case HttpActorType.OnHttpWrite: _action.OnHttpWrite(_current, _total); break; } } // 统一异常处理 catch (Exception ex) { // _context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] Error"); var qqEx = ex as QQException ?? new QQException(ex); _action.OnHttpError(qqEx); } //_context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] End"); }
public void Execute() { if (_action.ActionFuture.IsCanceled) return; _context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] Begin"); try { switch (_type) { case HttpActorType.BuildRequest: { var service = _context.GetSerivce<IHttpService>(QQServiceType.HTTP); var adaptor = new HttpAdaptor(_context, _action); var request = _action.BuildRequest(); _action.ResponseFuture = service.ExecuteHttpRequestAsync(request, adaptor, _action.ActionFuture.Token); break; } case HttpActorType.CancelRequest: _action.CancelRequest(); break; case HttpActorType.OnHttpError: _action.OnHttpError(_throwable); break; case HttpActorType.OnHttpFinish: _action.OnHttpFinish(_response); break; case HttpActorType.OnHttpHeader: _action.OnHttpHeader(_response); break; case HttpActorType.OnHttpRead: _action.OnHttpRead(_current, _total); break; case HttpActorType.OnHttpWrite: _action.OnHttpWrite(_current, _total); break; } } // 统一异常处理 catch (Exception ex) { _context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] Error"); var qqEx = ex as QQException ?? new QQException(ex); _action.OnHttpError(qqEx); } _context.Logger.LogDebug($"[Action={GetType().Name}, HttpActorType={_type}] End"); }
public async void HttpAdaptor_BasicIntegrationGetTest() { var mockServiceUrl = "https://raw.githubusercontent.com/stuartjdavies/AGL.Test/master/people.json"; ////var mockServiceUrl = "http://agl-developer-test.azurewebsites.net/people.json"; (await HttpAdaptor.GetAsync <Person[]>(mockServiceUrl)) .Match(success => success.Result, failure => throw new System.Exception("Should not get here")) .Should() .HaveCountGreaterThan(0, "We should receive at least one person") .And .Contain(x => x.Pets.Any(), "We should receive some pets"); }
static Program() { var serviceUrl = "https://raw.githubusercontent.com/stuartjdavies/AGL.Test/master/people.json"; // var serviceUrl = "http://agl-developer-test.azurewebsites.net/people.json"; container = new Container(); container.Register <IPetRepository>(() => new PetRespository(async() => await HttpAdaptor.GetAsync <Person[]>(serviceUrl))); container.Verify(); }