public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post")] ProcessingRequest request,
            [Blob("%input-container%/{FileId}")]                CloudBlockBlob outBlob,
            TraceWriter log,
            [ServiceBus("mytopic", AccessRights.Manage)]        out BrokeredMessage topicMessage)
        {
            log.Info("(Fun1) Received image for processing...");

            AsyncHelper.RunSync(async() =>
            {
                await outBlob.UploadFromByteArrayAsync(request.Content, 0, request.Content.Length);
            });

            var analysisRequest = new AnalysisReq
            {
                BlobRef  = outBlob.Name,
                Width    = request.Width,
                ImageUrl = request.ImageUrl
            };

            topicMessage = new BrokeredMessage(analysisRequest);
            return(new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(outBlob.Name)
            });
        }
        private async void Analyze(string path, string charset, string sqLanguage, IIssueConsumer consumer)
        {
            var request = new AnalysisReq
            {
                BaseDir = path,
                WorkDir = WorkingDirectory,
            };

            request.File.Add(new InputFile
            {
                Path     = path,
                Charset  = charset,
                Language = sqLanguage
            });

            // Concurrent requests should not use same directory:
            var buildWrapperOutDir = CreateTempDirectory(WorkingDirectory);

            using (var call = daemonClient.Analyze(request))
            {
                try
                {
                    await ProcessIssues(call, path, consumer);
                }
                catch (Exception e)
                {
                    Debug.WriteLine("Call to client.Analyze failed: {0}", e);
                }
                finally
                {
                    Directory.Delete(buildWrapperOutDir, true);
                }
            }
        }
Esempio n. 3
0
        private async void Analyze(string path, string charset, IIssueConsumer consumer)
        {
            var request = new AnalysisReq
            {
                BaseDir = path,
                WorkDir = workingDirectory,
            };

            request.File.Add(new InputFile
            {
                Path    = path,
                Charset = charset,
            });

            var channel = new Channel($"{DAEMON_HOST}:{port}", ChannelCredentials.Insecure);
            var client  = new StandaloneSonarLint.StandaloneSonarLintClient(channel);

            using (var call = client.Analyze(request))
            {
                try
                {
                    await ProcessIssues(call, path, consumer);
                }
                catch (Exception e)
                {
                    Debug.WriteLine("Call to client.Analyze failed: {0}", e);
                }
            }

            await channel.ShutdownAsync();
        }
        public static SMSMessage Run(
            [QueueTrigger("to-admin-notif")]         AnalysisReq request,
            TraceWriter log)
        {
            log.Info("(Fun5) Sending SMS...");

            var baseUrl = ConfigurationManager.AppSettings["base-url"];
            var from    = ConfigurationManager.AppSettings["twilio-from-number"];
            var to      = ConfigurationManager.AppSettings["twilio-to-number"];

            return(new SMSMessage
            {
                From = from,
                To = to,
                Body = @"Psst!! Hey, Content Hero! Someone just uploaded an unappropriated picture to your site. It's up to you now to figure it out which image! :)"
            });
        }
Esempio n. 5
0
        public static async Task <CloudQueueMessage> Run(
            [ServiceBusTrigger("mytopic", "to-ascii", AccessRights.Manage)]        AnalysisReq request,
            [Blob("%input-container%/{BlobRef}", FileAccess.Read)]                 Stream inBlob,
            TraceWriter log)
        {
            log.Info("(Fun2) Running image analysis...");

            var subscriptionKey = ConfigurationManager.AppSettings["cognitive-services-key"];
            var serviceUri      = ConfigurationManager.AppSettings["cognitive-services-uri"];

            var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
            {
                Endpoint = serviceUri
            };

            var result = await client.AnalyzeImageInStreamAsync(inBlob,
                                                                new[]
            {
                VisualFeatureTypes.Categories,
                VisualFeatureTypes.Color,
                VisualFeatureTypes.Description,
                VisualFeatureTypes.Faces,
                VisualFeatureTypes.ImageType,
                VisualFeatureTypes.Tags
            });

            var asciiArtRequest = new AsciiArtRequest
            {
                BlobRef     = request.BlobRef,
                Width       = request.Width,
                Description = string.Join(",", result.Description.Captions.Select(c => c.Text)),
                Tags        = result.Tags.Select(t => t.Name).ToArray()
            };

            log.Info("(Fun2) Finished image analysis.");

            return(asciiArtRequest.AsQueueItem());
        }
        public static async Task <CloudQueueMessage> Run(
            [ServiceBusTrigger("mytopic", "to-eval", AccessRights.Manage)]   AnalysisReq request,
            [Blob("%input-container%/{BlobRef}", FileAccess.Read)]           Stream inBlob,
            TraceWriter log)
        {
            log.Info("(Fun4) Running image approval analysis...");

            try
            {
                var subscriptionKey = ConfigurationManager.AppSettings["cognitive-services-key"];
                var serviceUri      = ConfigurationManager.AppSettings["cognitive-services-uri"];

                var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
                {
                    Endpoint = serviceUri
                };

                var result = await client.AnalyzeImageInStreamAsync(inBlob,
                                                                    new[]
                {
                    VisualFeatureTypes.Adult
                });

                if (result.Adult.IsAdultContent)
                {
                    log.Warning("(Fun4) Unappropriated content detected. Sending notification...");
                    return(request.AsQueueItem());
                }

                log.Info("(Fun4) Image approved (no sensitive content).");
            }
            catch (Exception e)
            {
                log.Info("Error on Running image approval..." + e.Message);
            }

            return(null);
        }
Esempio n. 7
0
        private void PrepareSonarCFamilyProps(string json, AnalysisReq request, string bwDir)
        {
            request.Properties.Add("sonar.cfamily.useCache", bool.FalseString);
            if (json == null)
            {
                return;
            }

            if (IsVerbose())
            {
                WritelnToPane("Build wrapper output:" + Environment.NewLine + json);
            }

            try
            {
                File.WriteAllText(Path.Combine(bwDir, "build-wrapper-dump.json"), json);
                request.Properties.Add("sonar.cfamily.build-wrapper-output", bwDir);
            }
            catch (Exception e)
            {
                WritelnToPane("Unable to write build wrapper file in " + bwDir + ": " + e.StackTrace);
            }
        }