/// <summary> /// Sets the content stream of the given Document instance ID /// </summary> /// <param name="blob">Information about the given blob</param> /// <returns>the newly created Blob instance</returns> public BlobResponse SetBlobStream(BlobMessage blob) { using (Logging.Facade.DebugTraceMethodCall("SetBlobStream")) { if (blob == null) { throw new ArgumentNullException("blob"); } try { DebugLogIdentity(); using (IZetboxContext ctx = _ctxFactory()) { var result = _sohFactory .GetServerDocumentHandler() .SetBlobStream(blob.Version, ctx, blob.Stream, blob.FileName, blob.MimeType); BlobResponse resp = new BlobResponse(); resp.ID = result.ID; resp.BlobInstance = SendObjects(new IDataObject[] { result }, true); return(resp); } } catch (Exception ex) { Helper.ThrowFaultException(ex); // Never called, Handle errors throws an Exception return(null); } } }
public Zetbox.App.Base.Blob SetBlobStream(IZetboxContext ctx, Stream stream, string filename, string mimetype) { Zetbox.App.Base.Blob result = null; BlobResponse response = null; BlobMessage msg = new BlobMessage() { Version = ZetboxGeneratedVersionAttribute.Current, FileName = filename, MimeType = mimetype, Stream = stream }; MakeRequest(() => { // Rewind stream to ensure complete files, e.g. after a fault if (msg.Stream.Position != 0) { msg.Stream.Seek(0, SeekOrigin.Begin); } response = _service.SetBlobStream(msg); }); using (var sr = _readerFactory(new BinaryReader(response.BlobInstance))) { // ignore auxObjects for blobs, which should not have them result = ReceiveObjectList(ctx, sr).Cast <Zetbox.App.Base.Blob>().Single(); } return(result); }
private static CloudQueueMessage CreateCloudQueueMessage(TriggerMessage triggerMessage, RootWeather weather) { BlobMessage blobMessage = CreateBlobTriggerMessage(triggerMessage, weather); var message = JsonConvert.SerializeObject(blobMessage); var cloudQueueMessage = new CloudQueueMessage(message); return(cloudQueueMessage); }
private static async Task <CloudBlockBlob> GetCloudBlockBlob(BlobMessage message, CloudStorageAccount storageAccount) { CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer blobContainer = blobClient.GetContainerReference("weatherblobs"); await blobContainer.CreateIfNotExistsAsync(); string fileName = String.Format($"{message.Guid}.png"); CloudBlockBlob cloudBlockBlob = blobContainer.GetBlockBlobReference(fileName); cloudBlockBlob.Properties.ContentType = "image/png"; return(cloudBlockBlob); }
private static BlobMessage CreateBlobTriggerMessage(TriggerMessage triggerMessage, RootWeather weather) { BlobMessage message = new BlobMessage(weather) { CityName = triggerMessage.CityName, CountryCode = triggerMessage.CountryCode, Blob = triggerMessage.Blob, Guid = triggerMessage.Guid, }; return(message); }
public static async Task RunAsync([QueueTrigger("openweather-out", Connection = "AzureWebJobsStorage")] string myQueueItem, ILogger log) { try { BlobMessage message = (BlobMessage)JsonConvert.DeserializeObject(myQueueItem, typeof(BlobMessage)); RootWeather weatherRootObject = message.Weather; Coord coordinates = weatherRootObject.Coord; var storageAccount = CloudStorageAccount.Parse(Environment.GetEnvironmentVariable("AzureWebJobsStorage")); CloudBlockBlob cloudBlockBlob = await GetCloudBlockBlob(message, storageAccount); HttpResponseMessage httpResponseMessage = await MapsDAO.Instance.GetMaps(coordinates); Stream renderedImage = await AddTextToImage(weatherRootObject, httpResponseMessage); await cloudBlockBlob.UploadFromStreamAsync(renderedImage); } catch (Exception e) { log.LogError(e.Data.ToString()); } }
public static Task Run( [EventGridTrigger] EventGridEvent eventGridEvent, [SignalR(HubName = "blobEvents")] IAsyncCollector <SignalRMessage> signalRMessages, ILogger log) { log.LogInformation(eventGridEvent.Data.ToString()); var blobEvent = JsonConvert.DeserializeObject <BlobEventData>(eventGridEvent.Data.ToString()); if (blobEvent == null) { log.LogError("Could not parse blob event data from EventGrid event."); throw new Exception("Could not parse blob event data from EventGrid event."); } var fileUri = new Uri(blobEvent.Url); string fileName; fileName = WebUtility.UrlDecode(Path.GetFileName(fileUri.AbsolutePath)); var message = new BlobMessage { TriggerType = "Event Grid", FileName = fileName, TimeProcessed = DateTime.Now }; log.LogInformation($"Sending Event Grid triggered message. Got file {fileName}."); return(signalRMessages.AddAsync( new SignalRMessage { Target = "blobMessage", Arguments = new[] { message } })); }
public static Task Run( [BlobTrigger("files/{name}", Connection = "AzureStorageConnectionString")] Stream myBlob, string name, [SignalR(HubName = "blobEvents")] IAsyncCollector <SignalRMessage> signalRMessages, ILogger log) { log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); var message = new BlobMessage { TriggerType = "Blob", FileName = name, TimeProcessed = DateTime.Now }; log.LogInformation($"Sending Blob triggered message. Got file {name}."); return(signalRMessages.AddAsync( new SignalRMessage { Target = "blobMessage", Arguments = new[] { message } })); }