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
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: angarium
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - TheDumbTechGuy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-07-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '7.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '9'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '7.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '9'
33
+ - !ruby/object:Gem::Dependency
34
+ name: httpx
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
47
+ description: 'The moment "just POST from a background job" ships to production, the
48
+ gaps start showing: your customers need signatures they can verify, failed deliveries
49
+ need to back off and retry for hours, secrets need to rotate without downtime, an
50
+ endpoint URL shouldn''t be able to reach your internal network, and sooner or later
51
+ someone asks "did we actually send it?". Angarium is a Rails engine that handles
52
+ all of it, and signs to the Standard Webhooks spec, so your receivers verify with
53
+ off-the-shelf libraries in any language and you never write verification docs of
54
+ your own. That conformance is enforced in CI: any drift from the spec fails the
55
+ build.'
56
+ email:
57
+ - sfroelich01@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - CHANGELOG.md
63
+ - MIT-LICENSE
64
+ - README.md
65
+ - Rakefile
66
+ - SECURITY.md
67
+ - app/assets/config/angarium_manifest.js
68
+ - app/assets/stylesheets/angarium/application.css
69
+ - app/controllers/angarium/api/attempts_controller.rb
70
+ - app/controllers/angarium/api/base_controller.rb
71
+ - app/controllers/angarium/api/deliveries_controller.rb
72
+ - app/controllers/angarium/api/endpoints_controller.rb
73
+ - app/controllers/angarium/api/not_authorized.rb
74
+ - app/controllers/angarium/api/unpermitted_parameter.rb
75
+ - app/helpers/angarium/application_helper.rb
76
+ - app/jobs/angarium/application_job.rb
77
+ - app/jobs/angarium/deliver_job.rb
78
+ - app/models/angarium/application_record.rb
79
+ - app/models/angarium/delivery.rb
80
+ - app/models/angarium/delivery_attempt.rb
81
+ - app/models/angarium/endpoint.rb
82
+ - app/models/angarium/event.rb
83
+ - app/policies/angarium/api/policy.rb
84
+ - app/validators/angarium/endpoint_url_validator.rb
85
+ - app/views/layouts/angarium/application.html.erb
86
+ - config/routes.rb
87
+ - db/angarium_migrate/20260704000001_create_angarium_endpoints.rb
88
+ - db/angarium_migrate/20260704000002_create_angarium_events.rb
89
+ - db/angarium_migrate/20260704000003_create_angarium_deliveries.rb
90
+ - db/angarium_migrate/20260704000004_create_angarium_delivery_attempts.rb
91
+ - lib/angarium.rb
92
+ - lib/angarium/address_policy.rb
93
+ - lib/angarium/client.rb
94
+ - lib/angarium/configuration.rb
95
+ - lib/angarium/dispatch.rb
96
+ - lib/angarium/engine.rb
97
+ - lib/angarium/event_matcher.rb
98
+ - lib/angarium/signature.rb
99
+ - lib/angarium/version.rb
100
+ - lib/generators/angarium/install/install_generator.rb
101
+ - lib/generators/angarium/install/templates/initializer.rb
102
+ - lib/generators/angarium/migrations/migrations_generator.rb
103
+ - lib/generators/angarium/policy/policy_generator.rb
104
+ - lib/generators/angarium/policy/templates/policy.rb
105
+ - lib/tasks/angarium_tasks.rake
106
+ homepage: https://github.com/radioactive-labs/angarium
107
+ licenses:
108
+ - MIT
109
+ metadata:
110
+ allowed_push_host: https://rubygems.org
111
+ source_code_uri: https://github.com/radioactive-labs/angarium
112
+ changelog_uri: https://github.com/radioactive-labs/angarium/blob/main/CHANGELOG.md
113
+ bug_tracker_uri: https://github.com/radioactive-labs/angarium/issues
114
+ documentation_uri: https://github.com/radioactive-labs/angarium#readme
115
+ rubygems_mfa_required: 'true'
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '3.2'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubygems_version: 3.5.16
132
+ signing_key:
133
+ specification_version: 4
134
+ summary: Outbound webhooks for Rails — Standard Webhooks signing, retries with backoff,
135
+ secret rotation, SSRF protection, and a log of every attempt. Everything the hand-rolled
136
+ version is missing.
137
+ test_files: []