public async Task <SubmitResponse> Post(Guid id, string side, PublisherRequest request)
        {
            try
            {
                var submitKey = new SubmitKey(id, side);
                await _submitHandler.PostAsync(submitKey, request.Data);

                return(new SubmitResponse
                {
                    Body = new SubmitResponse.Success {
                        Message = "OK"
                    },
                    StatusCode = HttpStatusCode.Accepted
                });
            }
            catch (Exception ex)
            {
                return(new SubmitResponse
                {
                    Body = new SubmitResponse.Error
                    {
                        Message = ex.Message,
                        Source = ex.Source,
                        StackTrace = ex.StackTrace
                    },
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
        }
Exemple #2
0
 internal Hashgraph.TopicInfo ToTopicInfo()
 {
     return(new Hashgraph.TopicInfo
     {
         Memo = Memo,
         RunningHash = RunningHash.ToArray(),
         SequenceNumber = SequenceNumber,
         Expiration = ExpirationTime.ToDateTime(),
         Administrator = AdminKey?.ToEndorsement(),
         Participant = SubmitKey?.ToEndorsement(),
         AutoRenewPeriod = AutoRenewPeriod.ToTimeSpan(),
         RenewAccount = AutoRenewAccount?.ToAddress()
     });
 }
        /// <summary>
        /// Submits key-value pair to kafka topic.
        /// </summary>
        /// <param name="key">A <see cref="SubmitKey"/> instance.</param>
        /// <param name="value">A <see cref="string"/> instance.</param>
        /// <returns>
        /// A <see cref="Task"/> representing a single asynchronous operation that does not return a value.
        /// </returns>
        /// <remarks>
        /// Right now cannot be unit-tested, since <see cref="Producer{TKey,TValue}"/> methods cannot be mocked.
        /// </remarks>
        public async Task PostAsync(SubmitKey key, string value)
        {
            using (var producer = new Producer <SubmitKey, string>(_config, _keySerializer, _valueSerializer))
            {
                producer.OnError += (_, e)
                                    => _logger.Info($"Error: {e}");

                producer.OnLog += (_, m)
                                  => _logger.Info($"Name: {m.Name} Level: {m.Level} Facility: {m.Facility} Message: {m.Message}.");

                producer.OnStatistics += (_, s)
                                         => _logger.Info($"Statistics: {s}");

                _logger.Info($"Producing item: {key} - {value}.");
                await producer.ProduceAsync(Topic, key, value);

                _logger.Info("Flushing...");
                producer.Flush(FlushTimeoutMS);
                _logger.Info("Flushed.");
            }
        }