public ConvertResponseMessage Convert(MessageContracts.Converter.V1.ConvertMessage message)
        {
            Guid requestId = Guid.NewGuid();

            if (this.logger != null)
            {
                RemoteEndpointMessageProperty endpointProperty =
                    OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;

                RequestLog requestLog = new RequestLog
                {
                    RequestId        = requestId,
                    RequestDateUtc   = DateTime.UtcNow,
                    SenderIp         = endpointProperty.Address,
                    FileExtension    = message.FileExtension,
                    FileSize         = message.FileBytes.Length,
                    CustomAttributes = message.CustomAttributes?.ToDictionary(p => p.Name, p => p.Value)
                };

                this.logger.LogRequest(requestLog);
            }

            byte[]    fileBytes        = null;
            Exception convertException = null;

            try
            {
                fileBytes = this.converter.Convert(message.FileBytes, message.FileExtension);
            }
            catch (Exception e)
            {
                convertException = e;
            }

            if (this.logger != null)
            {
                ResponseLog responseLog = new ResponseLog
                {
                    RequestId       = requestId,
                    ResponseDateUtc = DateTime.UtcNow,
                    ResultFileSize  = fileBytes?.Length,
                    ErrorType       = convertException.ToConvertErrorType()
                };

                this.logger.LogResponse(responseLog);
            }

            if (convertException == null)
            {
                return(new ConvertResponseMessage
                {
                    RequestId = requestId,
                    FileBytes = fileBytes
                });
            }
            else
            {
                FaultException fault;

                try
                {
                    fault = convertException.ToV1FaultConverter();
                }
                catch (NotSupportedException)
                {
                    throw convertException;
                }

                throw fault;
            }
        }
Beispiel #2
0
 public ConvertResponseMessage Convert(MessageContracts.Converter.V1.ConvertMessage message)
 {
     return(base.Channel.Convert(message));
 }