示例#1
0
        public void UpdateStreamMetadata(int streamId, StreamMetadataBindingModel metadata)
        {
            _dataLock.EnterWriteLock();
            try
            {
                // TODO: Maybe later we can keep an indexed list, but for now just search
                Stream stream = _channels.SelectMany(c => c.Value.Streams)
                                .Where(s => s.Key == streamId).Select(s => s.Value).FirstOrDefault();
                if (stream == null)
                {
                    throw new ArgumentException("Stream ID does not exist.");
                }

                stream.Metadata       = metadata;
                stream.LastUpdateTime = DateTimeOffset.Now;
            }
            finally
            {
                _dataLock.ExitWriteLock();
            }
        }
示例#2
0
        public IActionResult PostUpdateMetadata(string streamId,
                                                [FromBody] StreamMetadataBindingModel metadata)
        {
            int parsedStreamId;

            if (!(int.TryParse(streamId, out parsedStreamId)))
            {
                _logger.LogInformation("Metadata request failed: ID {stream} is not an integer",
                                       streamId);
                return(BadRequest("Stream ID must be an integer value."));
            }
            try
            {
                _streamManager.UpdateStreamMetadata(parsedStreamId, metadata);
                _logger.LogInformation("Stream {stream} metadata updated", parsedStreamId);
                return(Ok());
            }
            catch (ArgumentException e)
            {
                _logger.LogInformation("Metadata request failed: {reason}",
                                       e.Message);
                return(BadRequest(e.Message));
            }
        }