예제 #1
0
        private async Task PlaybackHandler(HttpContext httpContext)
        {
            if (!string.IsNullOrWhiteSpace(_playbackContext.PlaybackId))
            {
                PlaybackMessage playbackMessage = await _messageStorageService.DownloadFromStorageAsync(_playbackContext.PlaybackId);

                httpContext.Request.Body        = playbackMessage.GetBodyStream();
                httpContext.Request.QueryString = new QueryString(playbackMessage.QueryString);
                var path = WebUtility.UrlDecode(playbackMessage.Path);
                httpContext.Request.Path = path;
            }
            await _next.Invoke(httpContext);
        }
예제 #2
0
        public override Task UploadToStorageAsync(string playbackId, string path, string queryString, string bodyString, long elapsedTime = 0)
        {
            if (string.IsNullOrWhiteSpace(playbackId))
            {
                throw new PlaybackStorageException(playbackId, "playbackId not found");
            }
            PlaybackMessage playbackMessage = new PlaybackMessage(path, queryString, bodyString, "text", elapsedTime);

            try
            {
                var content = JsonConvert.SerializeObject(playbackMessage);
                File.WriteAllText($"{_storagePath}\\{playbackId}", content);
                return(Task.CompletedTask);
            }
            catch (Exception ex)
            {
                throw new PlaybackStorageException(playbackId, "playback upload error", ex);
            }
        }
예제 #3
0
        public async override Task UploadToStorageAsync(string playbackId, string path, string queryString, string bodyString, long elapsedTime = 0)
        {
            if (string.IsNullOrWhiteSpace(playbackId))
            {
                throw new PlaybackStorageException(playbackId, "playbackId not found");
            }
            PlaybackMessage playbackMessage = new PlaybackMessage(path, queryString, bodyString, "text", elapsedTime);

            try
            {
                // Retrieve storage account from connection string.
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(_connectionString);

                // Create the blob client.
                CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

                // Retrieve reference to a previously created container.
                CloudBlobContainer container = blobClient.GetContainerReference(_containerName);

                // Create the container if it doesn't already exist.
                await container.CreateIfNotExistsAsync();

                // Retrieve reference to a blob.
                CloudBlockBlob blockBlob = container.GetBlockBlobReference(playbackId);

                await blockBlob.UploadTextAsync(JsonConvert.SerializeObject(playbackMessage));

                foreach (string key in playbackMessage.Metadata.Keys)
                {
                    blockBlob.Metadata.Add(key, playbackMessage.Metadata[key]);
                }
                await blockBlob.SetMetadataAsync();
            }
            catch (Exception ex)
            {
                throw new PlaybackStorageException(playbackId, "playback upload error", ex);
            }
        }
예제 #4
0
 private void HandlerMessage(PlaybackMessage message)
 {
     Console.WriteLine($"HandlerMessage: {message.Name}");
 }