angarium 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +65 -0
  3. data/MIT-LICENSE +22 -0
  4. data/README.md +910 -0
  5. data/Rakefile +13 -0
  6. data/SECURITY.md +51 -0
  7. data/app/assets/config/angarium_manifest.js +1 -0
  8. data/app/assets/stylesheets/angarium/application.css +15 -0
  9. data/app/controllers/angarium/api/attempts_controller.rb +12 -0
  10. data/app/controllers/angarium/api/base_controller.rb +133 -0
  11. data/app/controllers/angarium/api/deliveries_controller.rb +29 -0
  12. data/app/controllers/angarium/api/endpoints_controller.rb +117 -0
  13. data/app/controllers/angarium/api/not_authorized.rb +7 -0
  14. data/app/controllers/angarium/api/unpermitted_parameter.rb +15 -0
  15. data/app/helpers/angarium/application_helper.rb +4 -0
  16. data/app/jobs/angarium/application_job.rb +5 -0
  17. data/app/jobs/angarium/deliver_job.rb +11 -0
  18. data/app/models/angarium/application_record.rb +17 -0
  19. data/app/models/angarium/delivery.rb +254 -0
  20. data/app/models/angarium/delivery_attempt.rb +14 -0
  21. data/app/models/angarium/endpoint.rb +217 -0
  22. data/app/models/angarium/event.rb +7 -0
  23. data/app/policies/angarium/api/policy.rb +78 -0
  24. data/app/validators/angarium/endpoint_url_validator.rb +20 -0
  25. data/app/views/layouts/angarium/application.html.erb +15 -0
  26. data/config/routes.rb +22 -0
  27. data/db/angarium_migrate/20260704000001_create_angarium_endpoints.rb +22 -0
  28. data/db/angarium_migrate/20260704000002_create_angarium_events.rb +9 -0
  29. data/db/angarium_migrate/20260704000003_create_angarium_deliveries.rb +13 -0
  30. data/db/angarium_migrate/20260704000004_create_angarium_delivery_attempts.rb +12 -0
  31. data/lib/angarium/address_policy.rb +82 -0
  32. data/lib/angarium/client.rb +53 -0
  33. data/lib/angarium/configuration.rb +66 -0
  34. data/lib/angarium/dispatch.rb +23 -0
  35. data/lib/angarium/engine.rb +5 -0
  36. data/lib/angarium/event_matcher.rb +17 -0
  37. data/lib/angarium/signature.rb +57 -0
  38. data/lib/angarium/version.rb +3 -0
  39. data/lib/angarium.rb +44 -0
  40. data/lib/generators/angarium/install/install_generator.rb +57 -0
  41. data/lib/generators/angarium/install/templates/initializer.rb +77 -0
  42. data/lib/generators/angarium/migrations/migrations_generator.rb +39 -0
  43. data/lib/generators/angarium/policy/policy_generator.rb +40 -0
  44. data/lib/generators/angarium/policy/templates/policy.rb +33 -0
  45. data/lib/tasks/angarium_tasks.rake +15 -0
  46. metadata +137 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3b7cf3c384477b5808150336685e858b28eff1e9590f9ec454569019ec8d10bf
4
+ data.tar.gz: 6756a2b028c09b72146f5624e50d08a9ff9f062b4aa7030859548e68d02a5c8d
5
+ SHA512:
6
+ metadata.gz: e291f504be94a517d8276d00f0089aec942d104b134ea7a6d907fffe55c7a0914bb38766fc005ac0c6c1faab0bf05e873ee13fa6fcf20b8b558996224cbc9ec2
7
+ data.tar.gz: 676568e4ac7bae762dfc517ba3e3183d2f13a0e8022f8419ed54ded2e0566f2bfb2510c476b4fe3cc84dd150d6f5f0ffdc9d68c3a582272f34e8d0e3e9d4a50b
data/CHANGELOG.md ADDED
@@ -0,0 +1,65 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented here. The format is based on
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and Angarium aims to
5
+ follow [Semantic Versioning](https://semver.org). While on 0.x, a minor release
6
+ may include breaking changes; patch releases stay backward compatible.
7
+
8
+ ## [0.1.0] - 2026-07-07
9
+
10
+ ### Bug Fixes
11
+
12
+ - Make endpoint consecutive_failures counting concurrency-safe
13
+ - Re-check endpoint status before delivering a queued webhook
14
+ - Apply both transition guards independently, not either/or
15
+ - Route the primary database to db/migrate in angarium:migrations
16
+
17
+ ### Documentation
18
+
19
+ - README, changelog, security policy, and license
20
+ - Design spec and implementation plan
21
+ - Adopt category-first tagline as the gem summary; expand description
22
+ - Make Configuration scannable as a table; de-snark the comparison
23
+ - Close the trust loop (privileged-attr wording, SECURITY link, versioning policy, gemspec)
24
+ - Point the multi-db README at angarium:install --database
25
+ - Fix README review nits
26
+ - Close the last README review nits
27
+ - Include unverified in the ping status lists
28
+ - Document ActiveSupport::Notifications instrumentation
29
+
30
+ ### Features
31
+
32
+ - Configuration object
33
+ - Endpoint, event, delivery, and attempt models
34
+ - SSRF protection for delivery URLs
35
+ - Standard Webhooks HMAC signing and verification
36
+ - Event dispatch and fan-out
37
+ - Signed HTTP delivery with retries, backoff, and Retry-After
38
+ - Recover stranded deliveries and prune attempt history
39
+ - Headless JSON API with policy authorization
40
+ - Install and policy generators
41
+ - Force option to send to a non-enabled endpoint
42
+ - Ping always sends by default; opt out with force: false
43
+ - Unverified endpoint status that a successful ping promotes to enabled
44
+ - Expose endpoint verification through the JSON API
45
+ - Multi-database support via config.connects_to
46
+ - Angarium:install --database=NAME wires up multi-db
47
+ - Angarium:migrations sub-generator, config.database drives multi-db
48
+ - Emit deliver.angarium instrumentation per delivery attempt
49
+ - Emit dispatch.angarium instrumentation with fan-out count
50
+
51
+ ### Miscellaneous Tasks
52
+
53
+ - Scaffold mountable engine and test dummy app
54
+ - CI matrix, linting, security scanning, and release tooling
55
+ - Declare solid_queue dev dep, stop tracking sqlite WAL sidecars
56
+
57
+ ### Refactoring
58
+
59
+ - Route every status transition through one atomic helper
60
+ - Install multi-db migrations via ActiveRecord::Migration.copy
61
+ - One migration path via angarium:migrations
62
+ - One migration path via angarium:migrations
63
+ - Ship migrations in db/angarium_migrate, drop the rake shim
64
+
65
+ <!-- generated by git-cliff -->
data/MIT-LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Stefan Froelich
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.