Releases: 42atomys/webhooked
v0.8
Release v0.8 : 📤✨ Response With Style!
We are excited to unveil our latest version 0.8 update, which brings advanced customization capabilities to your responses. Now, you can tailor your responses with specific formatting options, HTTP status codes, and content types. Additionally, the update introduces a flexible formatting feature that is consistent across the application, allowing you to use either templateString or templatePath for defining response templates.
This enhancement is particularly beneficial for webhook providers requiring the inclusion of specific fields in their responses to confirm the identity of the requester.
Configuration exemple :
response:
formatting:
templateString: |
{
"deliveryID": "{{ .Request.Header | getHeader "X-Delivery" | default "unknown" }}"
}
httpCode: 200
contentType: application/json
🚀 Features
- Customizable Response: Added feature to allow customization of the response. (@42atomys) Pull Request #177
- Configuration Enhancement: Switched from using Viper to Koanf to enable more possibilities on configuration. (@42atomys) Pull Request #160
Full Changelog: GitHub
v0.7.1
Bug Fix - Viper Case-Sensitive Key Issue
We have addressed a bug related to case-sensitive keys in Viper configuration. Previously, Viper did not support using arguments with uppercase letters, which caused issues when loading YAML files. To resolve this, we have made changes to the configuration loader.
🐛 Bug Fix
- Viper Case-Sensitive Key Issue: Fixed an issue where Viper did not support case-sensitive keys and arguments with uppercase letters. A rework has been done to use the YAML loader instead.
We recommend using lowercase keys and arguments to ensure compatibility with Viper configuration.
Note: If you were previously using uppercase keys or arguments, please update your configuration accordingly to use lowercase letters.
Thank you for your understanding and cooperation.
Full Changelog: View on GitHub
v0.7
Release v0.7 : 🐘Postgres Formatting Unleashed!
Get ready to revolutionize your Postgres storage experience with our latest update! We are thrilled to introduce a groundbreaking feature that will supercharge your query capabilities. Say hello to Postgres Formatting!
With this cutting-edge functionality, you now have the power to execute any request imaginable. No more limitations or constraints holding you back! Whether you're a data enthusiast, a database guru, or a developer seeking ultimate flexibility, this update is designed to meet your needs.
But that's not all - we've taken things to the next level by introducing named arguments in custom requests. Imagine the possibilities! With this new feature, crafting queries becomes a breeze, allowing you to express your intent clearly and concisely.
Don't wait any longer. Embrace the future of Postgres storage and unlock a world of possibilities with our latest update. Upgrade now and experience the magic of Postgres Formatting!
Configuration exemple :
storage:
- type: postgres
specs:
databaseUrl: 'postgresql://postgres:postgres@postgres:5432/postgres'
useFormattingToPerformQuery: true
query: INSERT INTO webhooks (payload, delivery_id) VALUES (:payload, :delivery_id)
args:
payload: '{{ .Payload }}'
delivery_id: "{{ .Request.Header | getHeader "X-Delivery" | default "unknown" }}"
table_name
and field_name
for formatting will no longer be supported due to the introduction of a new formatting feature.
🚀 Features
- Add devcontainer: Added devcontainer for the project. @42atomys
- Add new templating functions: Added new templating functions with integration tests. @42atomys
- Formatting feature for PostgreSQL query: Implemented a formatting feature for PostgreSQL queries. @42atomys
🐛 Bug Fixes
- RabbitMQ reconnection: Fixed an issue where RabbitMQ would not reconnect if the channel is closed. @42atomys
Full Changelog: View on GitHub
v0.7+rc.1
We are excited to present the pre-release version, which will be followed by the final release.
The full release note will be available only in the final release.
We would like to express our heartfelt gratitude to all the contributors who have participated in this pre-release by sharing their ideas, feedback, and valuable contributions.
We value and appreciate your input at all times. 💜
0.6.4
What's Changed
- fix: rabbitmq will reconnect if the channel is closed by @42atomys in #99
- chore(deps): bump github.com/prometheus/client_golang from 1.12.2 to 1.13.0 by @dependabot in #96
- chore(deps): bump github.com/rs/zerolog from 1.27.0 to 1.28.0 by @dependabot in #97
Full Changelog: 0.6.3...0.6.4
0.6.3
0.6.2
What's Changed
- fix(security): panic due to concurrent map write on handled go routine by @42atomys in #92
- chore(deps): bump wangyoucao577/go-release-action from 1.28 to 1.29 by @dependabot in #87
- chore(deps): bump github.com/spf13/cobra from 1.4.0 to 1.5.0 by @dependabot in #89
- chore(deps): bump github.com/stretchr/testify from 1.7.5 to 1.8.0 by @dependabot in #90
Full Changelog: 0.6.1...0.6.2
0.6.1
What's Changed
- feat(storage): add the possibility to customize the rabbitmq content-type by @42atomys in #83
- fix(configuration): mapstructure decode on factory cannot resolve data correctly by @42atomys in #84
- fix(storage): mapstructure and json tag colocation by @42atomys in #85
- chore(storage): remove gob encoding on rabbitmq by @42atomys in #86
- build(go): Bump docker version image to 1.18 by @42atomys in #75
- test(handler): HTTP Server handler and pull requests title linter by @42atomys in #77
- test: Improve tests suite by @42atomys in #76
- chore(github): Bump codecov/codecov-action from 2 to 3 by @dependabot in #78
- chore(deps): bump github.com/lib/pq from 1.10.5 to 1.10.6 by @dependabot in #69
- chore(github): update commitlint configuration by @42atomys in #81
Full Changelog: 0.6...0.6.1
0.6
New: Formatting Module
Do you need to (re)format the received data before storing it? IT'S NOW POSSIBLE ! 🎉
One of the most useful bricks of Webhooked is perhaps this one. Formatting allows you to define the entire format of the data you will send to your storage. Globally or by storage.
Formatting use internally the go-template.
⚠ This is an advanced feature ⚠
Be careful when using this feature, the slightest error in format can result in DEFINITIVE loss of the collected data. Make sure your template is correct before applying it in production.
Beautiful example
apiVersion: v1alpha1
specs:
- name: demo
entrypointUrl: /demo
formatting:
templateString: |
{
"specName": "{{ .Spec.Name }}",
"metadata": {
"contentType": "{{ .Request.Header | getHeader "Content-Type" }}",
"deliveryID": "{{ .Request.Header | getHeader "X-Delivery" | default "unknown" }}"
},
"payload": {{ .Payload }}
}
storage: # { ... } Define your storage
Information is always available here: https://github.com/42Atomys/webhooked/wiki/Formatting
What's Changed
-
fix(storage): Possible CWE-89 on Postgres storage by @42atomys in #73
-
chore(deps): bump github.com/stretchr/testify from 1.7.0 to 1.7.1 by @dependabot in #55
-
chore(deps): bump github.com/go-redis/redis/v8 from 8.11.4 to 8.11.5 by @dependabot in #56
-
chore(deps): bump github.com/lib/pq from 1.10.4 to 1.10.5 by @dependabot in #59
-
chore(deps): bump github.com/spf13/viper from 1.10.1 to 1.11.0 by @dependabot in #61
-
chore(deps): bump github.com/mitchellh/mapstructure from 1.4.3 to 1.5.0 by @dependabot in #62
-
chore(deps): bump github.com/prometheus/client_golang from 1.12.1 to 1.12.2 by @dependabot in #68
Full Changelog: v0.5...0.6
0.5
New : Observability with Prometheus
If you want to track your webhooks and monitor their reception, you can do so with the Observability module.
You can activate the Prometheus module which will activate the /metrics
endpoint and bring up the webhooked information.
To activate / desactivate the Prometheus module, on your configuration file set metricsEnabled
to true
or false
apiVersion: v1alpha1
observability:
metricsEnabled: true
specs: []
Informations is always available here : https://github.com/42Atomys/webhooked/wiki/Observability
What's Changed
- feat(logging): Add prometheus metrics & structure logs by @42atomys in #45
- fix(security/pipeline): Factory failed when multiple specs is used by @42atomys in #47
- fix(configuration): Validate the valuable object when decode it to lookup env variable by @42atomys in #54
- chore(goreport): Fix go report results by @42atomys in #52
Full Changelog: 0.4.1...v0.5