Esempio n. 1
0
        public static async Task RunAsync([QueueTrigger("pitstopqueue", Connection = "Storage")] string myQueueItem, ILogger log, ExecutionContext context)
        {
            log.LogInformation($"Resizing pitstop image: {myQueueItem}");
            QueueParam item = QueueParam.FromJson(myQueueItem);

            var config = new ConfigurationBuilder()
                         .SetBasePath(context.FunctionAppDirectory)
                         .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                         .AddEnvironmentVariables()
                         .Build();

            var storage       = config["Storage"];
            var containerName = "photos";
            var tablename     = "pitstop";

            CloudBlobContainer container = GetBlobReference(storage, containerName);

            CloudTable tablePitstop = GetTableReference(storage, tablename);

            // Resizing the image and naming the images
            string smallImageName = await StoreSmallImage(item.PictureUri, container);                       // method below

            string mediumStorageImageName = await StoreMediumImage(item.PictureUri, container);              // method below

            string originalStorageImageName = await ReplaceLargeStoreImageAsync(item.PictureUri, container); // method below

            // Updating the trip object in the db
            await UpdateDocumentTableWithUriAsync(item, smallImageName, mediumStorageImageName, originalStorageImageName, tablePitstop);

            log.LogInformation($"The image resized and saved. Small image name: {smallImageName}, medium image name: {mediumStorageImageName}, large image name: {originalStorageImageName}");
        }
    public void ReceiveCommand <T>(Func <Action <T?> > resolve, ushort prefetchCount = DefaultPrefetchCount)
    {
        var queueParam = new QueueParam {
            Queue = GetTypeName(typeof(T))
        };
        var channel = GetReceiverChannel(null, queueParam, prefetchCount);

        ConsumeEvent(channel, resolve, queueParam.Queue);
    }
Esempio n. 3
0
    public async Task ReceiveCommandAsync <T>(Func <Action <T?> > resolve, ushort prefetchCount = DefaultPrefetchCount)
    {
        var queueParam = new QueueParam {
            Queue = GetTypeName(typeof(T))
        };
        var channel = GetReceiverAsyncChannel(null, queueParam, prefetchCount);

        await ConsumeEventAsync(channel, resolve, queueParam.Queue);
    }
Esempio n. 4
0
        private async Task AddQueueItem(QueueParam queueParam)
        {
            CloudQueueMessage message = new CloudQueueMessage(queueParam.ToJson());
            await _messageQueue.AddMessageAsync(message);

            //catch (Exception exe)
            //{
            //    System.Diagnostics.Trace.WriteLine(exe.StackTrace);
            //}
        }
    public void SubscribeMessage <T>(string exchange, string queue, Func <Func <T?, Task> > resolve,
                                     ushort prefetchCount = DefaultPrefetchCount)
    {
        var exchangeParam = new ExchangeParam {
            Exchange = exchange, Durable = false
        };
        var queueParam = new QueueParam {
            Queue = queue, Durable = false
        };
        var channel = GetReceiverChannel(exchangeParam, queueParam, prefetchCount);

        ConsumeEvent(channel, resolve, queueParam.Queue);
    }
    public void SubscribeEvent <T>(string exchange, string queue, Func <Action <T?> > resolve,
                                   ushort prefetchCount = DefaultPrefetchCount)
    {
        var exchangeParam = new ExchangeParam {
            Exchange = exchange
        };
        var queueParam = new QueueParam {
            Queue = queue
        };
        var channel = GetReceiverChannel(exchangeParam, queueParam, prefetchCount);

        ConsumeEvent(channel, resolve, queueParam.Queue);
    }
    public async Task SubscribeMessageAsync <T>(string exchange, string queue, Func <Action <T?> > resolve,
                                                ushort prefetchCount = DefaultPrefetchCount)
    {
        var exchangeParam = new ExchangeParam {
            Exchange = exchange, Durable = false
        };
        var queueParam = new QueueParam {
            Queue = queue, Durable = false
        };
        var channel = GetReceiverAsyncChannel(exchangeParam, queueParam, prefetchCount);

        await ConsumeMessageAsync(channel, resolve, queueParam.Queue);
    }
Esempio n. 8
0
    public async Task SubscribeEventAsync <T>(string exchange, string queue, Func <Func <T?, Task> > resolve,
                                              ushort prefetchCount = DefaultPrefetchCount)
    {
        var exchangeParam = new ExchangeParam {
            Exchange = exchange
        };
        var queueParam = new QueueParam {
            Queue = queue
        };
        var channel = GetReceiverAsyncChannel(exchangeParam, queueParam, prefetchCount);

        await ConsumeEventAsync(channel, resolve, queueParam.Queue);
    }
Esempio n. 9
0
        public void InvalidInjectionPutQueueTest(QueueParam param, Enums.InvalidInjection invalid)
        {
            var request = new Dictionary <string, object>
            {
                [QueueParam.Id.ToString().ToLower()]     = $"{PreparedQueueId.Data[ValidQueueTask.Export]}",
                [QueueParam.Status.ToString().ToLower()] = ValidStatus.Interrupted.GetEnumStringValue(),
            };

            request[param.GetEnumStringValue()] = InvalidInjectionInputData.InjectionInputMapper[invalid];
            var defaultManager = new DefaultManager();
            var response       = defaultManager.Send <object>(QueueTestCaseData.QueueEndpoint, request.ToJson(), HttpMethod.PUT);

            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
    public void ListenMessage <T>(Func <Func <T?, Task> > resolve, ushort prefetchCount = DefaultPrefetchCount)
    {
        var exchangeName = GetTypeName(typeof(T));
        var queueName    = $"{GetQueueName(resolve)}[{Guid.NewGuid()}]";

        var exchangeParam = new ExchangeParam {
            Exchange = exchangeName, Durable = false
        };
        var queueParam = new QueueParam {
            Queue = queueName, Durable = false, Exclusive = true, AutoDelete = true
        };
        var channel = GetReceiverChannel(exchangeParam, queueParam, prefetchCount);

        ConsumeMessage(channel, resolve, queueParam.Queue);
    }
Esempio n. 11
0
        public void InvalidInjectionGetQueuesTest(QueueParam param, Enums.InvalidInjection invalid)
        {
            var request = new Dictionary <string, string>
            {
                [QueueParam.Type.ToString().ToLower()] = QueueTestCaseData.ValidTypeValueMapper[ValidType.All],
            };

            QueueTestCaseData.ValidUnderscoreValueMapper[ValidUnderScore.UnixTime](request);
            QueueTestCaseData.ValidScopeValueMapper[ValidScope.Own](request);
            request[param.GetEnumStringValue()] = InvalidInjectionInputData.InjectionInputMapper[invalid];
            var defaultManager = new DefaultManager();
            var response       = defaultManager.Send <object>(QueueTestCaseData.QueuesEndpoint, request, HttpMethod.GET);

            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 12
0
        public void InvalidGetQueueTest(QueueParam param, InvalidValue invalid)
        {
            var request = new Dictionary <string, string>
            {
                [QueueParam.Id.ToString().ToLower()]   = $"{PreparedQueueId.Data[ValidQueueTask.Export]}",
                [QueueParam.Type.ToString().ToLower()] = ValidQueueTask.Export.GetEnumStringValue(),
            };

            QueueTestCaseData.ValidScopeValueMapper[ValidScope.Own](request);
            QueueTestCaseData.InvalidRequestValuesMapper[invalid](param.GetEnumStringValue(), request);
            var defaultManager = new DefaultManager();
            var response       = defaultManager.Send <object>(QueueTestCaseData.QueueEndpoint, request, HttpMethod.GET);

            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 13
0
        /// <summary>
        /// Scrive gli elementi della coda
        /// </summary>
        /// <param name="code"></param>
        private void WriteQueue(string code)
        {
            if (!QUEUE.ContainsKey(code) || QUEUE[code].Count == 0)
            {
                return;
            }

            Write(code, "---- Writing Queue ==> " + QUEUE[code].Count + " elements ----");

            for (QueueParam item = null; QUEUE[code].Count > 0;)
            {
                item = QUEUE.Dequeue(code);
                Write(item.Code, item.lv, item.message);
            }
        }
    public void PublishCommand(string exchangeName, byte[] body)
    {
        var exchangeParam = new ExchangeParam {
            Exchange = exchangeName
        };
        var queueParam = new QueueParam {
            Queue = exchangeName
        };

        using (var channel = GetPublisherChannel(exchangeParam, queueParam))
        {
            var properties = channel.CreateBasicProperties();
            properties.Persistent = true;
            var routingKey = exchangeParam.Exchange;
            channel.BasicPublish(exchangeParam.Exchange, routingKey, properties, body);
        }
    }
Esempio n. 15
0
        public void ValidDuplicateGetQueuesTest(QueueParam param, Enums.ValidDuplicated duplicated)
        {
            var request = new Dictionary <string, string>
            {
                [QueueParam.Type.ToString().ToLower()] = QueueTestCaseData.ValidTypeValueMapper[ValidType.All],
            };

            QueueTestCaseData.ValidUnderscoreValueMapper[ValidUnderScore.UnixTime](request);
            QueueTestCaseData.ValidScopeValueMapper[ValidScope.Own](request);
            var requestDup = request.ToList();

            requestDup.Add(new KeyValuePair <string, string>(param.GetEnumStringValue(), duplicated == Enums.ValidDuplicated.SameValue ? request[param.GetEnumStringValue()] : ""));
            var defaultManager = new DefaultManager();
            var response       = defaultManager.Send <object>(QueueTestCaseData.QueuesEndpoint, request, HttpMethod.GET);

            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 16
0
        private static async Task UpdateDocumentTableWithUriAsync(QueueParam item, string smallImageName, string mediumStorageImageName, string originalStorageImageName, CloudTable tablePitstop)
        {
            List <PitstopTableEntity> pitstopList = new List <PitstopTableEntity>();

            int pitstopId = 0;

            int.TryParse(item.RowKey, out pitstopId);

            if (pitstopId == 0)
            {
                throw new Exception("Unable to do this...");
            }

            var pitstopQuery = new TableQuery <PitstopTableEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, item.PartitionKey));

            TableContinuationToken tokenPitstop = null;

            do
            {
                TableQuerySegment <PitstopTableEntity> resultSegment = await tablePitstop.ExecuteQuerySegmentedAsync(pitstopQuery, tokenPitstop);

                tokenPitstop = resultSegment.ContinuationToken;

                foreach (PitstopTableEntity entity in resultSegment.Results)
                {
                    if (entity.PitstopId == pitstopId)
                    {
                        pitstopList.Add(entity);
                    }
                }
            } while (tokenPitstop != null);

            var pitstopToUpdate = pitstopList.FirstOrDefault();

            if (pitstopToUpdate != null)
            {
                pitstopToUpdate.PhotoSmallUrl  = smallImageName;
                pitstopToUpdate.PhotoMediumUrl = mediumStorageImageName;
                pitstopToUpdate.PhotoLargeUrl  = originalStorageImageName;

                TableOperation replaceOperation = TableOperation.Replace(pitstopToUpdate);

                await tablePitstop.ExecuteAsync(replaceOperation);
            }
        }
Esempio n. 17
0
        public void ValidDuplicatePutQueueTest(QueueParam param, Enums.ValidDuplicated duplicated)
        {
            var request = new Dictionary <string, object>
            {
                [QueueParam.Id.ToString().ToLower()]     = $"{PreparedQueueId.Data[ValidQueueTask.Export]}",
                [QueueParam.Status.ToString().ToLower()] = ValidStatus.Interrupted.GetEnumStringValue(),
            };
            var otherValue = new Dictionary <string, object>
            {
                [QueueParam.Id.ToString().ToLower()]     = $"{PreparedQueueId.Data[ValidQueueTask.Import]}",
                [QueueParam.Status.ToString().ToLower()] = ValidStatus.Executing.GetEnumStringValue(),
            };

            request.Add($"{param.GetEnumStringValue()}_dup", duplicated == Enums.ValidDuplicated.SameValue ? request[param.GetEnumStringValue()] : otherValue[param.GetEnumStringValue()]);
            var defaultManager = new DefaultManager();
            var requestJson    = request.ToJson().Replace($"{param.GetEnumStringValue()}_dup", param.GetEnumStringValue());
            var response       = defaultManager.Send <object>(QueueTestCaseData.QueueEndpoint, requestJson, HttpMethod.PUT);

            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
Esempio n. 18
0
 /// <summary>
 /// 初始化队列。可动态传入QueueCount
 /// </summary>
 public QueueHelper(QueueParam qr)
 {
     Param.Pool       = qr.Pool ?? new ConcurrentDictionary <string, object>();
     Param.QueueCount = qr.QueueCount ?? 5000;
 }
 private async Task AddQueueItem(QueueParam queueParam)
 {
     CloudQueueMessage message = new CloudQueueMessage(queueParam.ToJson());
     await _messageQueue.AddMessageAsync(message);
 }