Esempio n. 1
0
        private XDocument Format(IEpcisResponse entity)
        {
            switch (entity)
            {
            case GetStandardVersionResponse getStandardVersionResponse:
                return(FormatInternal(getStandardVersionResponse));

            case GetVendorVersionResponse getVendorVersionResponse:
                return(FormatInternal(getVendorVersionResponse));

            case ExceptionResponse exceptionResponse:
                return(FormatInternal(exceptionResponse));

            case GetQueryNamesResponse getQueryNamesResponse:
                return(FormatInternal(getQueryNamesResponse));

            case GetSubscriptionIdsResponse getSubscriptionIdsResponse:
                return(FormatInternal(getSubscriptionIdsResponse));

            case PollResponse pollResponse:
                return(FormatInternal(pollResponse));

            default:
                throw new NotImplementedException($"Unable to format '{entity.GetType()}'");
            }
        }
Esempio n. 2
0
        public override async Task Write(IEpcisResponse entity, Stream output, CancellationToken cancellationToken)
        {
            if (entity == default(IEpcisResponse))
            {
                return;
            }

            await FormatSoap(Format(entity)).SaveAsync(output, Options, cancellationToken);
        }
Esempio n. 3
0
        public async Task Write(IEpcisResponse entity, Stream output, CancellationToken cancellationToken)
        {
            if (entity == default || entity is EmptyResponse)
            {
                return;
            }

            await Format(entity).SaveAsync(output, Options, cancellationToken);
        }
Esempio n. 4
0
        private async Task WriteRequestPayload(HttpWebRequest request, IEpcisResponse epcisResponse, CancellationToken cancellationToken)
        {
            using var stream = await request.GetRequestStreamAsync();

            var formatter = new XmlCommandFormatter();

            request.ContentType = formatter.ContentType;
            await formatter.WriteResponse(epcisResponse, stream, cancellationToken);
        }
Esempio n. 5
0
        public async Task <bool> Send(string destination, IEpcisResponse epcisResponse, CancellationToken cancellationToken)
        {
            var request = WebRequest.CreateHttp(destination);

            request.Method = "POST";
            TrySetBasicAuthorization(request);

            await WriteRequestPayload(request, epcisResponse, cancellationToken);

            return(await SendRequestAsync(request, cancellationToken));
        }
Esempio n. 6
0
 private static XElement Format(IEpcisResponse entity, CancellationToken cancellationToken)
 {
     return(entity switch
     {
         GetStandardVersionResponse standardVersion => FormatGetStandardVersionResponse(standardVersion),
         GetVendorVersionResponse vendorVersion => FormatGetVendorVersionResponse(vendorVersion),
         ExceptionResponse exception => FormatInternal(exception),
         GetQueryNamesResponse queryNames => FormatGetQueryNamesResponse(queryNames),
         GetSubscriptionIdsResponse subscriptionIds => FormatGetSubscriptionIdsResponse(subscriptionIds),
         PollResponse poll => FormatPollResponse(poll, cancellationToken),
         _ => throw new NotImplementedException($"Unable to format '{entity.GetType()}'")
     });
Esempio n. 7
0
        public async Task Write(IEpcisResponse response, Stream output, CancellationToken cancellationToken)
        {
            if (response == default || response is EmptyResponse)
            {
                return;
            }

            var formattedResponse = Format(response, cancellationToken);
            var wrappedResponse   = WrapResponse(formattedResponse);

            await wrappedResponse.SaveAsync(output, Options, cancellationToken);
        }
Esempio n. 8
0
        public override async Task Write(IEpcisResponse entity, Stream output, CancellationToken cancellationToken)
        {
            if (entity == default(IEpcisResponse))
            {
                return;
            }

            using (var writer = new StreamWriter(output))
            {
                await writer.WriteAsync(new ReadOnlyMemory <char>(Format(entity).ToArray()), cancellationToken);
            }
        }
Esempio n. 9
0
        public async Task Send(string destination, IEpcisResponse epcisResponse, CancellationToken cancellationToken)
        {
            var formatter = new XmlCommandFormatter();
            var request   = WebRequest.CreateHttp(destination);

            request.Method      = "POST";
            request.ContentType = formatter.ContentType;
            TrySetBasicAuthorization(request);

            using (var stream = await request.GetRequestStreamAsync())
            {
                await formatter.WriteResponse(epcisResponse, stream, cancellationToken);
            }

            using (var response = await request.GetResponseAsync() as HttpWebResponse)
                using (var responseMessage = new HttpResponseMessage(response.StatusCode))
                {
                    if (!responseMessage.IsSuccessStatusCode)
                    {
                        throw new Exception($"Response does not indicate success status code: {response.StatusCode} ({response.StatusDescription})");
                    }
                }
        }
Esempio n. 10
0
 public override void When()
 {
     Response = Handler.Handle(Request, CancellationToken).Result;
 }
Esempio n. 11
0
 public void Write(IEpcisResponse entity, Stream output)
 {
     Format((dynamic)entity).Save(output, Options);
 }
Esempio n. 12
0
 public override void When()
 {
     Response = Controller.Query(Request, CancellationToken).Result;
 }
Esempio n. 13
0
 public abstract Task Write(IEpcisResponse entity, Stream output, CancellationToken cancellationToken);
Esempio n. 14
0
        public async Task WriteResponse(IEpcisResponse epcisResponse, Stream body, CancellationToken cancellationToken)
        {
            var formatter = new SoapResponseFormatter();

            await formatter.Write(epcisResponse, body, cancellationToken);
        }
Esempio n. 15
0
 public Task WriteResponse(IEpcisResponse entity, Stream output, CancellationToken cancellationToken) => new JsonResponseFormatter().Write(entity, output, cancellationToken);