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); }
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); } }
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); } }
private void HandlerMessage(PlaybackMessage message) { Console.WriteLine($"HandlerMessage: {message.Name}"); }