/// <summary> /// A Lambda function to respond to HTTP Get methods from API Gateway /// </summary> /// <param name="request"></param> /// <returns>The list of blogs</returns> public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context) { context.Logger.LogLine("Get Request\n"); var requestBody = Utility.GetBodyJObject(request.Body); var command = (string)requestBody.SelectToken("command"); var commandParams = new string[1]; var response = new APIGatewayProxyResponse(); switch (command.ToLower().Trim()) { case "/skill": var commandText = (string)requestBody.SelectToken("text"); if (!string.IsNullOrEmpty(commandText)) { commandParams = commandText.Trim().Split(" "); var skillName = commandParams[0]; var amount = Convert.ToInt32(commandParams[1]); var queryObj = new JObject { { "limit", amount }, { "skillName", skillName } }; var httpClient = new HttpClient(); HttpResponseMessage httpResponse = httpClient.PostAsJsonAsync("https://7dq5d3f0yb.execute-api.eu-west-1.amazonaws.com/production/relatedskills", queryObj).Result; var payload = httpResponse.Content.ReadAsJsonAsync <JArray>().Result; var skills = JsonConvert.DeserializeObject <List <Skill> >(payload.ToString()); var slackBuilder = new BlocksBuilder(); slackBuilder.AddBlock(new Section(new Text(" "))); slackBuilder.AddBlock(new Section(new Text($"`Skill: {skillName.ToUpper()}`", "mrkdwn"))); slackBuilder.AddBlock(new Divider()); var slackSection = new Section(); if (skills.Count > 0) { for (int i = 0; i < skills.Count; i++) { if (i % 10 == 0 && i != 0) { slackBuilder.AddBlock(slackSection); slackSection = new Section(); } slackSection.AddField($"```{skills[i].Name}```", "mrkdwn"); } slackBuilder.AddBlock(slackSection); } else { slackBuilder.AddBlock(new Section(new Text("*No related skills found*", "mrkdwn"))); } var slackPayload = slackBuilder.GetJObject(); context.Logger.LogLine(slackPayload.ToString()); response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = slackPayload.ToString(), Headers = new Dictionary <string, string> { { "Content-Type", "application/json" } } }; } // TODO: return msg that skill doesn't exist break; } return(response); }