public void TestMakeReport()
        {
            // set up by loading in xml from file
            XElement dataFromFile =
                XElement.Load(@"/Users/stefanevans/Development/reporter/services/prtg/sam-app/test/PRTGService.Test/TestService/PRTGTestInputXmlFile.xml");
            IEnumerable <XElement> itemsList =
                from item in dataFromFile.Elements() select item;

            IDictionary <string, string> requestParams = new Dictionary <string, string>();

            requestParams["host"]     = "monitoring.company.com";
            requestParams["id"]       = "111";
            requestParams["sdate"]    = "2019-01-01-00-00-00";
            requestParams["edate"]    = "2019-02-01-00-00-00";
            requestParams["username"] = "******";
            requestParams["passhash"] = "1234";
            requestParams["title"]    = "Report for Production [EC2] - PRTG Network Monitor";
            requestParams["subtitle"] = "Amazon CloudWatch EC2 BETA (15 m Interval)";

            SummaryReportMaker reportMaker = new SummaryReportMaker();
            string             output      = reportMaker.MakeReport(itemsList, requestParams);

            output = output.Replace("\t", "");
            string expected =
                System.IO.File.ReadAllText(@"/Users/stefanevans/Development/reporter/services/prtg/sam-app/test/PRTGService.Test/TestService/PRTGTestOutputExpected.html");

            // check out from report maker is was is expected
            Assert.Equal(expected, output);
        }
Beispiel #2
0
        public async Task <APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
        {
            try {
                //var queryStrings = apigProxyEvent.QueryStringParameters["sdate"];
                Console.WriteLine("apigProxyEvent count " + request.QueryStringParameters.Count());

                IDictionary <string, string> requestParams = new Dictionary <string, string>();
                if (request.QueryStringParameters != null)
                {
                    var queryStringParameters = request.QueryStringParameters;
                    foreach (var item in queryStringParameters)
                    {
                        Console.WriteLine($"QueryStringParameter - " + item.Key + ":" + item.Value);
                        requestParams[item.Key] = item.Value;
                    }
                }
                requestParams["username"] = Uri.EscapeDataString(requestParams["username"]);

                // get parameters from dynamodb
                //await GetItemFromDynamoDB();
                IDictionary <string, string> reportParams = await dynamoClient.RetrieveReport("111", "2");

                Console.WriteLine("reportParams is " + reportParams["id"] + " and title is " + reportParams["title"]);

                // load xml into XElement
                XElement dataFromPRTG =
                    XElement.Load(GetPRTGSummary(requestParams).Result);
                IEnumerable <XElement> itemsList =
                    from item in dataFromPRTG.Elements() select item;

                //var xrayTrace = TraceFunction(summaryCalculator.TestXRay ,"TestXRay");
                SummaryReportMaker reportMaker = new SummaryReportMaker();
                string             output      = reportMaker.MakeReport(itemsList, requestParams);

                Console.WriteLine("Return results");
                return(new APIGatewayProxyResponse
                {
                    //Body = JsonConvert.SerializeObject(body),
                    Body = output,
                    StatusCode = 200,
                    Headers = new Dictionary <string, string> {
                        { "Content-Type", "text/html" }
                    }
                });
            } catch (Exception e) {
                Console.WriteLine("Exception: " + e.Message);
                // catch error
                Dictionary <string, string> body = new Dictionary <string, string>
                {
                    { "status", "error" },
                    { "message", e.Message },
                    { "stacktrace", e.StackTrace },
                };

                return(new APIGatewayProxyResponse
                {
                    Body = JsonConvert.SerializeObject(body),
                    StatusCode = 500,
                    Headers = new Dictionary <string, string> {
                        { "Content-Type", "application/json" }
                    }
                });
            }
        }