Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/janraasch/hugo-bearblog.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Raasch <jan@janraasch.com>2021-08-13 09:45:49 +0300
committerJan Raasch <jan@janraasch.com>2021-08-13 09:45:49 +0300
commit3b895022d3ecac522a6b585a809c5861139d8084 (patch)
tree781f67ed10e60eebd5231147d687ce175d0b5e2a
parent2fa45b92a24e76a610f86f1e039225be5d8cb695 (diff)
chore: add example codelovelace-issue-25
Original: https://andrew.jorgensenfamily.us/2021/02/sns-webhook-lambda/ PR: #25
-rw-r--r--exampleSite/content/blog/markdown-syntax.md55
1 files changed, 55 insertions, 0 deletions
diff --git a/exampleSite/content/blog/markdown-syntax.md b/exampleSite/content/blog/markdown-syntax.md
index 4e3aa72..875a4cc 100644
--- a/exampleSite/content/blog/markdown-syntax.md
+++ b/exampleSite/content/blog/markdown-syntax.md
@@ -94,6 +94,8 @@ Tables aren't part of the core Markdown spec, but Hugo supports supports them ou
</html>
#### Code block with Hugo's internal highlight shortcode
+
+##### html
{{< highlight html >}}
<!doctype html>
<html lang="en">
@@ -107,6 +109,59 @@ Tables aren't part of the core Markdown spec, but Hugo supports supports them ou
</html>
{{< /highlight >}}
+##### python - lovelace
+{{< highlight python "style=lovelace">}}
+# Copyright Andrew Jorgensen
+# SPDX-License-Identifier: MIT
+"""Receive SNS events in Lambda and POST to a JSON Webhook.
+
+Environment variables required:
+* URL - The Webhook URL to POST to (including any required keys)
+* TEMPLATE (default: {}) - The JSON data template to POST to the Webhook
+* MESSAGE_KEY (default: text) - Key to set to the SNS Message
+* TOPIC_KEY (optional) - Key to set to the Topic name from the SNS event
+"""
+import json
+from os import environ
+from urllib.request import urlopen, Request
+
+CONTENT_TYPE = "application/json; charset=utf-8"
+
+
+def lambda_handler(event, context):
+ """Lambda handler - expects an SNS event"""
+ user_agent = context.function_name
+ print(json.dumps(dict(environ), sort_keys=True))
+ url = environ.get("URL")
+ template = environ.get("TEMPLATE", "{}")
+ message_key = environ.get("MESSAGE_KEY", "text")
+ topic_key = environ.get("TOPIC_KEY")
+
+ print(json.dumps(event, sort_keys=True))
+ topic = event["Records"][0]["Sns"]["TopicArn"].rsplit(":", 1)[1]
+ subject = event["Records"][0]["Sns"]["Subject"]
+ message = event["Records"][0]["Sns"]["Message"]
+
+ data = json.loads(template)
+ if topic_key:
+ data[topic_key] = topic
+ if subject:
+ data[message_key] = f"{subject}: {message}"
+ else:
+ data[message_key] = message
+ data = json.dumps(data, sort_keys=True)
+ print(data)
+
+ request = Request(
+ url=url,
+ data=data.encode("utf-8"),
+ headers={"User-Agent": user_agent, "Content-Type": CONTENT_TYPE},
+ )
+ with urlopen(request) as response:
+ print(response.read().decode("utf-8"))
+
+{{< /highlight >}}
+
## List Types
#### Ordered List