Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zbhavyai/inspirational-morning
A serverless function to send a good morning greeting along with an inspirational quote to a Google Chat webhook, every weekday.
https://github.com/zbhavyai/inspirational-morning
gchat gcloud gcloud-cli gcloud-functions gcloud-pubsub quarkus rest-api serverless-functions zenquotes-api
Last synced: 5 days ago
JSON representation
A serverless function to send a good morning greeting along with an inspirational quote to a Google Chat webhook, every weekday.
- Host: GitHub
- URL: https://github.com/zbhavyai/inspirational-morning
- Owner: zbhavyai
- Created: 2024-06-10T15:10:11.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-08-23T00:30:18.000Z (4 months ago)
- Last Synced: 2024-10-31T04:04:47.335Z (about 2 months ago)
- Topics: gchat, gcloud, gcloud-cli, gcloud-functions, gcloud-pubsub, quarkus, rest-api, serverless-functions, zenquotes-api
- Language: Java
- Homepage:
- Size: 60.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Inspirational Morning
Send a good morning message to your Google Chat webhook. The message would include the day of the week, a quote, and the author of the quote. Quote and its author is fetched using [ZenQuotes API](https://zenquotes.io/).
## Running dev mode
You can run your application in dev mode that enables live coding using below. Dev UI should be accessible at [http://localhost:3005/q/dev-ui/](http://localhost:3005/q/dev-ui/).
```shell
./mvnw compile quarkus:dev
```## Packaging and running
1. Create the JAR
```shell
./mvnw clean package -DskipTests
```2. Run the JAR with specific GChat webhook URL and a time zone [optional]. By default, the the `America/Edmonton` time zone is used.
```shell
java -Dzoneid="Pacific/Auckland" -Dgspace.webhook="" -jar target/inspirational-morning-*.jar
```3. Once the JAR is running, hit the exposed ReST endpoint to send the greeting
```shell
curl --silent --request POST --location http://localhost:3005/api/greet | jq
```## Deploy to Google Cloud Functions
1. Create up a Pub/Sub topic.
```shell
gcloud pubsub topics create topic-inspirational-morning
```2. Create a cron job schedule for every weekday at 08:00.
```shell
gcloud scheduler jobs create pubsub schedule-job-inspirational-morning \
--schedule="0 8 * * 0-5" \
--topic=topic-inspirational-morning \
--message-body="job is triggered" \
--time-zone="Pacific/Auckland" \
--location="us-central1"
```3. Deploy the application as a Cloud Function
```shell
gcloud functions deploy inspirational-morning \
--gen2 \
--allow-unauthenticated \
--trigger-topic=topic-inspirational-morning \
--region=us-central1 \
--timeout=540s \
--entry-point=io.quarkus.gcp.functions.QuarkusCloudEventsFunction \
--runtime=java17 \
--memory=256MiB \
--cpu=0.167 \
--source=target/deployment \
--set-env-vars=ZONEID="Pacific/Auckland",GSPACE_WEBHOOK="https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY&token=TOKEN"
```4. [OPTIONAL] Trigger the job manually
```shell
gcloud scheduler jobs run schedule-job-inspirational-morning --location="us-central1"
```## Google Cloud Clean up
1. Delete the function
```shell
gcloud functions delete inspirational-morning --region=us-central1
```2. Delete the job schedule
```shell
gcloud scheduler jobs delete schedule-job-inspirational-morning --location=us-central1
```3. Delete the topic
```shell
gcloud pubsub topics delete topic-inspirational-morning
```## Reference guides
- [tz database Time Zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)