Exemple #1
0
        /// <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);
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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 }
            }));
        }