Example #1
0
        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");
        }
Example #2
0
        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");
        }
Example #3
0
        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");
        }
Example #4
0
        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();
        }