bullet_train-outgoing_webhooks 1.0.0 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +20 -0
- data/README.md +11 -26
- data/Rakefile +5 -11
- data/app/assets/config/bullet_train_outgoing_webhooks_manifest.js +0 -0
- data/app/controllers/account/webhooks/outgoing/deliveries_controller.rb +79 -0
- data/app/controllers/account/webhooks/outgoing/delivery_attempts_controller.rb +80 -0
- data/app/controllers/account/webhooks/outgoing/endpoints_controller.rb +79 -0
- data/app/controllers/api/v1/webhooks/outgoing/deliveries_endpoint.rb +63 -0
- data/app/controllers/api/v1/webhooks/outgoing/delivery_attempts_endpoint.rb +65 -0
- data/app/controllers/api/v1/webhooks/outgoing/endpoints_endpoint.rb +119 -0
- data/app/jobs/webhooks/outgoing/delivery_job.rb +7 -0
- data/{lib → app}/models/concerns/webhooks/outgoing/issuing_model.rb +6 -14
- data/{lib → app}/models/concerns/webhooks/outgoing/team_support.rb +0 -0
- data/{lib → app}/models/webhooks/outgoing/delivery.rb +18 -1
- data/{lib → app}/models/webhooks/outgoing/delivery_attempt.rb +17 -1
- data/{lib → app}/models/webhooks/outgoing/endpoint.rb +15 -5
- data/{lib → app}/models/webhooks/outgoing/event.rb +3 -3
- data/{lib → app}/models/webhooks/outgoing/event_type.rb +4 -6
- data/{lib → app}/models/webhooks/outgoing.rb +0 -3
- data/app/models/webhooks.rb +5 -0
- data/app/serializers/api/v1/webhooks/outgoing/delivery_attempt_serializer.rb +16 -0
- data/app/serializers/api/v1/webhooks/outgoing/delivery_serializer.rb +14 -0
- data/app/serializers/api/v1/webhooks/outgoing/endpoint_serializer.rb +14 -0
- data/app/views/account/webhooks/outgoing/deliveries/_breadcrumbs.html.erb +8 -0
- data/app/views/account/webhooks/outgoing/deliveries/_delivery.json.jbuilder +10 -0
- data/app/views/account/webhooks/outgoing/deliveries/_form.html.erb +21 -0
- data/app/views/account/webhooks/outgoing/deliveries/_index.html.erb +73 -0
- data/app/views/account/webhooks/outgoing/deliveries/_menu_item.html.erb +10 -0
- data/app/views/account/webhooks/outgoing/deliveries/_success_indicator.html.erb +7 -0
- data/app/views/account/webhooks/outgoing/deliveries/edit.html.erb +12 -0
- data/app/views/account/webhooks/outgoing/deliveries/index.html.erb +6 -0
- data/app/views/account/webhooks/outgoing/deliveries/index.json.jbuilder +1 -0
- data/app/views/account/webhooks/outgoing/deliveries/new.html.erb +12 -0
- data/app/views/account/webhooks/outgoing/deliveries/show.html.erb +37 -0
- data/app/views/account/webhooks/outgoing/deliveries/show.json.jbuilder +1 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/_breadcrumbs.html.erb +8 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/_delivery_attempt.json.jbuilder +12 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/_form.html.erb +22 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/_index.html.erb +69 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/_menu_item.html.erb +10 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/_success_indicator.html.erb +7 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/edit.html.erb +12 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/index.html.erb +6 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/index.json.jbuilder +1 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/new.html.erb +12 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/show.html.erb +32 -0
- data/app/views/account/webhooks/outgoing/delivery_attempts/show.json.jbuilder +1 -0
- data/app/views/account/webhooks/outgoing/endpoints/_breadcrumbs.html.erb +8 -0
- data/app/views/account/webhooks/outgoing/endpoints/_endpoint.json.jbuilder +10 -0
- data/app/views/account/webhooks/outgoing/endpoints/_form.html.erb +21 -0
- data/app/views/account/webhooks/outgoing/endpoints/_index.html.erb +62 -0
- data/app/views/account/webhooks/outgoing/endpoints/_menu_item.html.erb +10 -0
- data/app/views/account/webhooks/outgoing/endpoints/edit.html.erb +12 -0
- data/app/views/account/webhooks/outgoing/endpoints/index.html.erb +6 -0
- data/app/views/account/webhooks/outgoing/endpoints/index.json.jbuilder +1 -0
- data/app/views/account/webhooks/outgoing/endpoints/new.html.erb +12 -0
- data/app/views/account/webhooks/outgoing/endpoints/show.html.erb +42 -0
- data/app/views/account/webhooks/outgoing/endpoints/show.json.jbuilder +1 -0
- data/config/locales/en/webhooks/outgoing/deliveries.en.yml +112 -0
- data/config/locales/en/webhooks/outgoing/delivery_attempts.en.yml +122 -0
- data/config/locales/en/webhooks/outgoing/endpoints.en.yml +108 -0
- data/config/locales/en/webhooks/outgoing/events.en.yml +10 -0
- data/config/routes.rb +18 -0
- data/db/migrate/20180420013127_create_webhooks_outgoing_endpoints.rb +10 -0
- data/db/migrate/20180420013505_create_webhooks_outgoing_endpoint_event_types.rb +10 -0
- data/db/migrate/20180420013852_create_webhooks_outgoing_event_types.rb +9 -0
- data/db/migrate/20180420014623_create_webhooks_outgoing_events.rb +12 -0
- data/db/migrate/20180420021016_create_webhooks_outgoing_deliveries.rb +11 -0
- data/db/migrate/20180420022027_add_team_to_webhooks_outgoing_events.rb +5 -0
- data/db/migrate/20180420165345_create_webhooks_outgoing_delivery_attempts.rb +11 -0
- data/db/migrate/20180420172112_add_error_message_to_webhooks_outgoing_delivery_attempt.rb +6 -0
- data/db/migrate/20181012234232_add_name_to_webhooks_outgoing_endpoints.rb +5 -0
- data/db/migrate/20181013030208_add_delivered_at_to_webhooks_outgoing_deliveries.rb +5 -0
- data/db/migrate/20181013165056_add_uuid_to_webhooks_outgoing_events.rb +5 -0
- data/db/migrate/20181013174539_add_payload_to_webhooks_outgoing_events.rb +5 -0
- data/db/migrate/20181013192951_add_attempt_number_to_webhooks_outgoing_delivery_attempts.rb +5 -0
- data/db/migrate/20210805060451_change_body_to_data_on_webhooks_outgoing_events.rb +5 -0
- data/db/migrate/20211126230846_add_event_type_ids_to_webhooks_outgoing_endpoints.rb +5 -0
- data/db/migrate/20211126230847_migrate_event_type_ids_on_webhooks_outgoing_endpoints.rb +8 -0
- data/db/migrate/20211127013539_remove_event_type_from_webhooks_outgoing_events.rb +5 -0
- data/db/migrate/20211127013800_add_new_event_type_id_to_webhooks_outgoing_events.rb +5 -0
- data/db/migrate/20211127014001_migrate_event_types_on_webhooks_outgoing_events.rb +10 -0
- data/db/migrate/20211127015712_drop_webhooks_outgoing_endpoint_event_types.rb +9 -0
- data/db/migrate/20211127015713_drop_webhooks_outgoing_event_types.rb +9 -0
- data/lib/bullet_train/outgoing_webhooks/engine.rb +13 -0
- data/lib/bullet_train/outgoing_webhooks/version.rb +1 -3
- data/lib/bullet_train/outgoing_webhooks.rb +2 -17
- data/lib/tasks/bullet_train/outgoing_webhooks_tasks.rake +4 -0
- metadata +97 -60
- data/.standard.yml +0 -2
- data/CHANGELOG.md +0 -5
- data/CODE_OF_CONDUCT.md +0 -84
- data/Gemfile +0 -12
- data/Gemfile.lock +0 -193
- data/LICENSE.txt +0 -21
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/lib/models/concerns/webhooks/outgoing/has_uuid.rb +0 -21
- data/lib/models/webhooks.rb +0 -2
- data/sig/bullet_train/outgoing_webhooks.rbs +0 -6
@@ -0,0 +1,21 @@
|
|
1
|
+
<%= form_with model: endpoint, url: (endpoint.persisted? ? [:account, endpoint] : [:account, @team, :webhooks_outgoing_endpoints]), local: true, class: 'form' do |form| %>
|
2
|
+
<%= render 'account/shared/forms/errors', form: form %>
|
3
|
+
|
4
|
+
<% with_field_settings form: form do %>
|
5
|
+
<%= render 'shared/fields/text_field', method: :name, options: {autofocus: true} %>
|
6
|
+
<%= render 'shared/fields/text_field', method: :url %>
|
7
|
+
<%= render 'shared/fields/super_select', method: :event_type_ids, html_options: {multiple: true},
|
8
|
+
choices: @endpoint.valid_event_types.map { |event_type| [event_type.label_string, event_type.id] } %>
|
9
|
+
<%# 🚅 super scaffolding will insert new fields above this line. %>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<div class="buttons">
|
13
|
+
<%= form.submit (form.object.persisted? ? t('.buttons.update') : t('.buttons.create')), class: "button" %>
|
14
|
+
<% if form.object.persisted? %>
|
15
|
+
<%= link_to t('global.buttons.cancel'), [:account, endpoint], class: "button-secondary" %>
|
16
|
+
<% else %>
|
17
|
+
<%= link_to t('global.buttons.cancel'), [:account, @team, :webhooks_outgoing_endpoints], class: "button-secondary" %>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<% end %>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<% team = @team || @team %>
|
2
|
+
<% context ||= team %>
|
3
|
+
<% collection ||= :webhooks_outgoing_endpoints %>
|
4
|
+
<% hide_actions ||= false %>
|
5
|
+
<% hide_back ||= false %>
|
6
|
+
|
7
|
+
<%= render 'account/shared/box' do |p| %>
|
8
|
+
<% p.content_for :title, t(".contexts.#{context.class.name.underscore}.header") %>
|
9
|
+
<% p.content_for :description do %>
|
10
|
+
<%= t(".contexts.#{context.class.name.underscore}.description") %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% p.content_for :table do %>
|
14
|
+
<% if endpoints.any? %>
|
15
|
+
<table class="table">
|
16
|
+
<thead>
|
17
|
+
<tr>
|
18
|
+
<th><%= t('.fields.name.heading') %></th>
|
19
|
+
<th><%= t('.fields.url.heading') %></th>
|
20
|
+
<%# 🚅 super scaffolding will insert new field headers above this line. %>
|
21
|
+
<th class="text-right"></th>
|
22
|
+
</tr>
|
23
|
+
</thead>
|
24
|
+
<tbody>
|
25
|
+
<% endpoints.each do |endpoint| %>
|
26
|
+
<% with_attribute_settings object: endpoint do %>
|
27
|
+
<tr data-id="<%= endpoint.id %>">
|
28
|
+
<td><%= render 'shared/attributes/text', attribute: :name, url: [:account, endpoint] %></td>
|
29
|
+
<td><%= render 'shared/attributes/code', attribute: :url %></td>
|
30
|
+
<%# 🚅 super scaffolding will insert new fields above this line. %>
|
31
|
+
<td class="buttons">
|
32
|
+
<% unless hide_actions %>
|
33
|
+
<% if can? :edit, endpoint %>
|
34
|
+
<%= link_to t('.buttons.shorthand.edit'), [:edit, :account, endpoint], class: 'button-secondary button-smaller' %>
|
35
|
+
<% end %>
|
36
|
+
<% if can? :destroy, endpoint %>
|
37
|
+
<%= button_to t('.buttons.shorthand.destroy'), [:account, endpoint], method: :delete, data: { confirm: t('.buttons.confirmations.destroy', model_locales(endpoint)) }, class: 'button-secondary button-smaller' %>
|
38
|
+
<% end %>
|
39
|
+
<% end %>
|
40
|
+
</td>
|
41
|
+
</tr>
|
42
|
+
<% end %>
|
43
|
+
<% end %>
|
44
|
+
</tbody>
|
45
|
+
</table>
|
46
|
+
<% end %>
|
47
|
+
<% end %>
|
48
|
+
|
49
|
+
<% p.content_for :actions do %>
|
50
|
+
<% unless hide_actions %>
|
51
|
+
<% if context == team %>
|
52
|
+
<% if can? :create, Webhooks::Outgoing::Endpoint.new(team: team) %>
|
53
|
+
<%= link_to t('.buttons.new'), [:new, :account, team, :webhooks_outgoing_endpoint], class: "#{first_button_primary(:webhooks_outgoing_endpoint)} new" %>
|
54
|
+
<% end %>
|
55
|
+
<% end %>
|
56
|
+
|
57
|
+
<% unless hide_back %>
|
58
|
+
<%= link_to t('global.buttons.back'), [:account, context], class: "#{first_button_primary(:webhooks_outgoing_endpoint)} back" %>
|
59
|
+
<% end %>
|
60
|
+
<% end %>
|
61
|
+
<% end %>
|
62
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% if can? :read, Webhooks::Outgoing::Endpoint.new(team: current_team) %>
|
2
|
+
<%= render 'account/shared/menu/item', {
|
3
|
+
url: main_app.polymorphic_path([:account, current_team, :webhooks_outgoing_endpoints]),
|
4
|
+
label: t('webhooks/outgoing/endpoints.navigation.label'),
|
5
|
+
} do |p| %>
|
6
|
+
<% p.content_for :icon do %>
|
7
|
+
<i class="<%= t('webhooks/outgoing/endpoints.navigation.icon') %>"></i>
|
8
|
+
<% end %>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= render 'account/shared/page' do |p| %>
|
2
|
+
<% p.content_for :title, t('.section') %>
|
3
|
+
<% p.content_for :body do %>
|
4
|
+
<%= render 'account/shared/box', divider: true do |p| %>
|
5
|
+
<% p.content_for :title, t('.header') %>
|
6
|
+
<% p.content_for :description, t('.description') %>
|
7
|
+
<% p.content_for :body do %>
|
8
|
+
<%= render 'form', endpoint: @endpoint %>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
json.array! @endpoints, partial: "webhooks/outgoing/endpoints/endpoint", as: :endpoint
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= render 'account/shared/page' do |p| %>
|
2
|
+
<% p.content_for :title, t('.section') %>
|
3
|
+
<% p.content_for :body do %>
|
4
|
+
<%= render 'account/shared/box', divider: true do |p| %>
|
5
|
+
<% p.content_for :title, t('.header') %>
|
6
|
+
<% p.content_for :description, t('.description') %>
|
7
|
+
<% p.content_for :body do %>
|
8
|
+
<%= render 'form', endpoint: @endpoint %>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<%= render 'account/shared/page' do |p| %>
|
2
|
+
<% p.content_for :title, t('.section') %>
|
3
|
+
<% p.content_for :body do %>
|
4
|
+
<%= render 'account/shared/box', divider: true do |p| %>
|
5
|
+
<% p.content_for :title, t('.header') %>
|
6
|
+
<% p.content_for :description do %>
|
7
|
+
<%= t('.description') %>
|
8
|
+
<%= t('.manage_description') if can? :manage, @endpoint %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<% p.content_for :body do %>
|
12
|
+
<% with_attribute_settings object: @endpoint, strategy: :label do %>
|
13
|
+
<%= render 'shared/attributes/text', attribute: :name %>
|
14
|
+
<%= render 'shared/attributes/code', attribute: :url %>
|
15
|
+
<% # TODO We should make the `has_many` attribute partial configurable enough to handle this use case. %>
|
16
|
+
<%= render 'shared/attributes/attribute', attribute: :event_types do %>
|
17
|
+
<% if @endpoint.event_type_ids.any? %>
|
18
|
+
<% @endpoint.event_types.map do |event_type| %>
|
19
|
+
<% capture do %>
|
20
|
+
<code><%= event_type.name %></code>
|
21
|
+
<% end %>
|
22
|
+
<% end.map(&:strip).to_sentence.html_safe %>
|
23
|
+
<% else %>
|
24
|
+
<% # TODO It feels like a Nice Partials bug that we can't just do `t('.fields.event_types.all')` here. %>
|
25
|
+
<%= t('webhooks/outgoing/endpoints.fields.event_types.all') %>
|
26
|
+
<% end %>
|
27
|
+
<% end %>
|
28
|
+
<%# 🚅 super scaffolding will insert new fields above this line. %>
|
29
|
+
<% end %>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% p.content_for :actions do %>
|
33
|
+
<%= link_to t('.buttons.edit'), [:edit, :account, @endpoint], class: first_button_primary if can? :edit, @endpoint %>
|
34
|
+
<%= button_to t('.buttons.destroy'), [:account, @endpoint], method: :delete, class: first_button_primary, data: { confirm: t('.buttons.confirmations.destroy', model_locales(@endpoint)) } if can? :destroy, @endpoint %>
|
35
|
+
<%= link_to t('global.buttons.back'), [:account, @team, :webhooks_outgoing_endpoints], class: first_button_primary %>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<%= render 'account/webhooks/outgoing/deliveries/index', deliveries: @endpoint.deliveries, hide_back: true %>
|
40
|
+
<%# 🚅 super scaffolding will insert new children above this line. %>
|
41
|
+
<% end %>
|
42
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
json.partial! "webhooks/outgoing/endpoints/endpoint", endpoint: @endpoint
|
@@ -0,0 +1,112 @@
|
|
1
|
+
en:
|
2
|
+
webhooks/outgoing/deliveries: &deliveries
|
3
|
+
label: &label Deliveries
|
4
|
+
breadcrumbs:
|
5
|
+
label: *label
|
6
|
+
navigation:
|
7
|
+
label: *label
|
8
|
+
icon: fal fa-puzzle-piece
|
9
|
+
buttons: &buttons
|
10
|
+
new: Add New Delivery
|
11
|
+
create: Create Delivery
|
12
|
+
edit: Edit Delivery
|
13
|
+
update: Update Delivery
|
14
|
+
destroy: Remove Delivery
|
15
|
+
shorthand:
|
16
|
+
show: Details
|
17
|
+
edit: Edit
|
18
|
+
destroy: Delete
|
19
|
+
confirmations:
|
20
|
+
# TODO customize for your use-case.
|
21
|
+
destroy: Are you sure you want to remove %{delivery_name}? This will also remove it's associated data. This can't be undone.
|
22
|
+
fields: &fields
|
23
|
+
id:
|
24
|
+
_: &id Delivery ID
|
25
|
+
label: *id
|
26
|
+
heading: *id
|
27
|
+
|
28
|
+
event_id: &event
|
29
|
+
_: &event_id Event
|
30
|
+
label: *event_id
|
31
|
+
heading: *event_id
|
32
|
+
placeholder: Select a Event
|
33
|
+
event: *event
|
34
|
+
|
35
|
+
endpoint_url:
|
36
|
+
_: &endpoint_url Endpoint URL
|
37
|
+
label: *endpoint_url
|
38
|
+
heading: *endpoint_url
|
39
|
+
|
40
|
+
delivered_at:
|
41
|
+
_: &delivered_at Delivered At
|
42
|
+
label: *delivered_at
|
43
|
+
heading: *delivered_at
|
44
|
+
|
45
|
+
status:
|
46
|
+
heading: Status
|
47
|
+
|
48
|
+
# 🚅 super scaffolding will insert new fields above this line.
|
49
|
+
created_at:
|
50
|
+
_: &created_at Issued At
|
51
|
+
label: *created_at
|
52
|
+
heading: *created_at
|
53
|
+
updated_at:
|
54
|
+
_: &updated_at Updated
|
55
|
+
label: *updated_at
|
56
|
+
heading: *updated_at
|
57
|
+
api:
|
58
|
+
endpoint_id: Absolutely Abstract Endpoint ID
|
59
|
+
collection_actions: "Collection Actions for Deliveries"
|
60
|
+
index: "List Deliveries"
|
61
|
+
create: "Add a New Delivery"
|
62
|
+
member_actions: "Actions for an Individual Delivery"
|
63
|
+
show: "Retrieve a Delivery"
|
64
|
+
update: "Update a Delivery"
|
65
|
+
destroy: "Delete a Delivery"
|
66
|
+
fields: *fields
|
67
|
+
index:
|
68
|
+
section: "%{endpoints_possessive} Deliveries"
|
69
|
+
contexts:
|
70
|
+
webhooks/outgoing/endpoint:
|
71
|
+
header: Deliveries
|
72
|
+
description: Below is a list of webhook deliveries that have been attempted for %{endpoint_name}.
|
73
|
+
description_empty: No Deliveries have been added for %{endpoint_name}.
|
74
|
+
fields: *fields
|
75
|
+
buttons: *buttons
|
76
|
+
show:
|
77
|
+
section: "Delivery of Event <code>%{delivery_name}</code> to %{endpoint_name}"
|
78
|
+
header: Webhook Delivery Details
|
79
|
+
description: Below are the available details for the event we've attempted to deliver.
|
80
|
+
manage_description: You'll also find options for updating these details or removing %{delivery_name} from %{endpoint_name} entirely.
|
81
|
+
fields: *fields
|
82
|
+
buttons: *buttons
|
83
|
+
form: &form
|
84
|
+
buttons: *buttons
|
85
|
+
fields: *fields
|
86
|
+
new:
|
87
|
+
section: "New Delivery for %{endpoint_name}"
|
88
|
+
header: New Delivery Details
|
89
|
+
description: Please provide the details of the new Delivery you'd like to add to %{endpoint_name}.
|
90
|
+
form: *form
|
91
|
+
edit:
|
92
|
+
section: "%{delivery_name}"
|
93
|
+
header: Edit Delivery Details
|
94
|
+
description: You can update the details or settings for %{delivery_name} below.
|
95
|
+
form: *form
|
96
|
+
notifications:
|
97
|
+
created: Delivery was successfully created.
|
98
|
+
updated: Delivery was successfully updated.
|
99
|
+
destroyed: Delivery was successfully destroyed.
|
100
|
+
account:
|
101
|
+
webhooks:
|
102
|
+
outgoing:
|
103
|
+
deliveries: *deliveries
|
104
|
+
activerecord:
|
105
|
+
attributes:
|
106
|
+
webhooks/outgoing/delivery:
|
107
|
+
event_id: *event_id
|
108
|
+
endpoint_url: *endpoint_url
|
109
|
+
delivered_at: *delivered_at
|
110
|
+
# 🚅 super scaffolding will insert new activerecord attributes above this line.
|
111
|
+
created_at: *created_at
|
112
|
+
updated_at: *updated_at
|
@@ -0,0 +1,122 @@
|
|
1
|
+
en:
|
2
|
+
webhooks/outgoing/delivery_attempts: &delivery_attempts
|
3
|
+
label: &label Delivery Attempts
|
4
|
+
breadcrumbs:
|
5
|
+
label: *label
|
6
|
+
navigation:
|
7
|
+
label: *label
|
8
|
+
icon: fal fa-puzzle-piece
|
9
|
+
buttons: &buttons
|
10
|
+
new: Add New Delivery Attempt
|
11
|
+
create: Create Delivery Attempt
|
12
|
+
edit: Edit Delivery Attempt
|
13
|
+
update: Update Delivery Attempt
|
14
|
+
destroy: Remove Delivery Attempt
|
15
|
+
shorthand:
|
16
|
+
show: Details
|
17
|
+
edit: Edit
|
18
|
+
destroy: Delete
|
19
|
+
confirmations:
|
20
|
+
# TODO customize for your use-case.
|
21
|
+
destroy: Are you sure you want to remove %{delivery_attempt_name}? This will also remove it's associated data. This can't be undone.
|
22
|
+
fields: &fields
|
23
|
+
id:
|
24
|
+
_: &id Delivery Attempt ID
|
25
|
+
label: *id
|
26
|
+
heading: *id
|
27
|
+
|
28
|
+
response_code:
|
29
|
+
_: &response_code Response Code
|
30
|
+
label: *response_code
|
31
|
+
heading: *response_code
|
32
|
+
|
33
|
+
response_body:
|
34
|
+
_: &response_body Response Body
|
35
|
+
label: *response_body
|
36
|
+
heading: *response_body
|
37
|
+
|
38
|
+
response_message:
|
39
|
+
_: &response_message Response Message
|
40
|
+
label: *response_message
|
41
|
+
heading: *response_message
|
42
|
+
|
43
|
+
error_message:
|
44
|
+
_: &error_message Error Message
|
45
|
+
label: *error_message
|
46
|
+
heading: *error_message
|
47
|
+
|
48
|
+
attempt_number:
|
49
|
+
_: &attempt_number Attempt Number
|
50
|
+
label: *attempt_number
|
51
|
+
heading: *attempt_number
|
52
|
+
|
53
|
+
status:
|
54
|
+
heading: Status
|
55
|
+
|
56
|
+
# 🚅 super scaffolding will insert new fields above this line.
|
57
|
+
created_at:
|
58
|
+
_: &created_at Attempted At
|
59
|
+
label: *created_at
|
60
|
+
heading: *created_at
|
61
|
+
updated_at:
|
62
|
+
_: &updated_at Updated
|
63
|
+
label: *updated_at
|
64
|
+
heading: *updated_at
|
65
|
+
api:
|
66
|
+
delivery_id: Absolutely Abstract Delivery ID
|
67
|
+
collection_actions: "Collection Actions for Delivery Attempts"
|
68
|
+
index: "List Delivery Attempts"
|
69
|
+
create: "Add a New Delivery Attempt"
|
70
|
+
member_actions: "Actions for an Individual Delivery Attempt"
|
71
|
+
show: "Retrieve a Delivery Attempt"
|
72
|
+
update: "Update a Delivery Attempt"
|
73
|
+
destroy: "Delete a Delivery Attempt"
|
74
|
+
fields: *fields
|
75
|
+
index:
|
76
|
+
section: "%{deliveries_possessive} Delivery Attempts"
|
77
|
+
contexts:
|
78
|
+
webhooks/outgoing/delivery:
|
79
|
+
header: Delivery Attempts
|
80
|
+
description: Below is an overview of individual attempts to deliver this event.
|
81
|
+
description_empty: We haven't attempted to deliver this event.
|
82
|
+
fields: *fields
|
83
|
+
buttons: *buttons
|
84
|
+
show:
|
85
|
+
section: "%{delivery_attempt_name} to Deliver <code>%{delivery_name}</code>"
|
86
|
+
header: Delivery Attempt Details
|
87
|
+
description: Below are the details we have for %{delivery_attempt_name}.
|
88
|
+
manage_description: You'll also find options for updating these details or removing %{delivery_attempt_name} from %{delivery_name} entirely.
|
89
|
+
fields: *fields
|
90
|
+
buttons: *buttons
|
91
|
+
form: &form
|
92
|
+
buttons: *buttons
|
93
|
+
fields: *fields
|
94
|
+
new:
|
95
|
+
section: "New Delivery Attempt for %{delivery_name}"
|
96
|
+
header: New Delivery Attempt Details
|
97
|
+
description: Please provide the details of the new Delivery Attempt you'd like to add to %{delivery_name}.
|
98
|
+
form: *form
|
99
|
+
edit:
|
100
|
+
section: "%{delivery_attempt_name}"
|
101
|
+
header: Edit Delivery Attempt Details
|
102
|
+
description: You can update the details or settings for %{delivery_attempt_name} below.
|
103
|
+
form: *form
|
104
|
+
notifications:
|
105
|
+
created: Delivery Attempt was successfully created.
|
106
|
+
updated: Delivery Attempt was successfully updated.
|
107
|
+
destroyed: Delivery Attempt was successfully destroyed.
|
108
|
+
account:
|
109
|
+
webhooks:
|
110
|
+
outgoing:
|
111
|
+
delivery_attempts: *delivery_attempts
|
112
|
+
activerecord:
|
113
|
+
attributes:
|
114
|
+
webhooks/outgoing/delivery_attempt:
|
115
|
+
response_code: *response_code
|
116
|
+
response_body: *response_body
|
117
|
+
response_message: *response_message
|
118
|
+
error_message: *error_message
|
119
|
+
attempt_number: *attempt_number
|
120
|
+
# 🚅 super scaffolding will insert new activerecord attributes above this line.
|
121
|
+
created_at: *created_at
|
122
|
+
updated_at: *updated_at
|
@@ -0,0 +1,108 @@
|
|
1
|
+
en:
|
2
|
+
webhooks/outgoing/endpoints: &endpoints
|
3
|
+
label: &label Webhooks
|
4
|
+
breadcrumbs:
|
5
|
+
label: *label
|
6
|
+
navigation:
|
7
|
+
label: *label
|
8
|
+
icon: fal fa-satellite-dish ti ti-bolt
|
9
|
+
buttons: &buttons
|
10
|
+
new: Add New Endpoint
|
11
|
+
create: Create Endpoint
|
12
|
+
edit: Edit Settings
|
13
|
+
update: Update Endpoint
|
14
|
+
destroy: Remove Endpoint
|
15
|
+
shorthand:
|
16
|
+
edit: Settings
|
17
|
+
destroy: Delete
|
18
|
+
confirmations:
|
19
|
+
# TODO customize for your use-case.
|
20
|
+
destroy: Are you sure you want to remove %{endpoint_name}? This will also remove it's associated data. This can't be undone.
|
21
|
+
fields: &fields
|
22
|
+
id:
|
23
|
+
_: &id Endpoint ID
|
24
|
+
label: *id
|
25
|
+
heading: *id
|
26
|
+
|
27
|
+
name:
|
28
|
+
_: &name Name
|
29
|
+
label: *name
|
30
|
+
heading: *name
|
31
|
+
|
32
|
+
url:
|
33
|
+
_: &url URL
|
34
|
+
label: *url
|
35
|
+
heading: *url
|
36
|
+
|
37
|
+
event_type_ids: &event_types
|
38
|
+
_: &event_type_ids Event Types
|
39
|
+
label: *event_type_ids
|
40
|
+
heading: *event_type_ids
|
41
|
+
all: All Events
|
42
|
+
event_types: *event_types
|
43
|
+
|
44
|
+
# 🚅 super scaffolding will insert new fields above this line.
|
45
|
+
created_at:
|
46
|
+
_: &created_at Added
|
47
|
+
label: *created_at
|
48
|
+
heading: *created_at
|
49
|
+
updated_at:
|
50
|
+
_: &updated_at Updated
|
51
|
+
label: *updated_at
|
52
|
+
heading: *updated_at
|
53
|
+
api:
|
54
|
+
team_id: Absolutely Abstract Team ID
|
55
|
+
collection_actions: "Collection Actions for Endpoints"
|
56
|
+
index: "List Endpoints"
|
57
|
+
create: "Add a New Endpoint"
|
58
|
+
member_actions: "Actions for an Individual Endpoint"
|
59
|
+
show: "Retrieve a Endpoint"
|
60
|
+
update: "Update a Endpoint"
|
61
|
+
destroy: "Delete a Endpoint"
|
62
|
+
fields: *fields
|
63
|
+
index:
|
64
|
+
section: "%{teams_possessive} Webhooks Endpoints"
|
65
|
+
contexts:
|
66
|
+
team:
|
67
|
+
header: Webhooks Endpoints
|
68
|
+
description: Below is a list of external endpoints we will try to deliver webhooks to based on %{teams_possessive} account activity.
|
69
|
+
description_empty: No Endpoints have been added for %{team_name}.
|
70
|
+
fields: *fields
|
71
|
+
buttons: *buttons
|
72
|
+
show:
|
73
|
+
section: "%{endpoint_name}"
|
74
|
+
header: Webhooks Endpoint Details
|
75
|
+
description: Below is the configuration for the %{endpoint_name} endpoint.
|
76
|
+
manage_description: You can update these settings or remove the endpoint.
|
77
|
+
fields: *fields
|
78
|
+
buttons: *buttons
|
79
|
+
form: &form
|
80
|
+
buttons: *buttons
|
81
|
+
fields: *fields
|
82
|
+
new:
|
83
|
+
section: "New Webhooks Endpoint for %{team_name}"
|
84
|
+
header: New Webhooks Endpoint Details
|
85
|
+
description: Please provide the details of the new Endpoint you'd like to add to %{team_name}.
|
86
|
+
form: *form
|
87
|
+
edit:
|
88
|
+
section: "%{endpoint_name}"
|
89
|
+
header: Edit Webhooks Endpoint Settings
|
90
|
+
description: You can update the settings for %{endpoint_name} below.
|
91
|
+
form: *form
|
92
|
+
notifications:
|
93
|
+
created: Endpoint was successfully created.
|
94
|
+
updated: Endpoint was successfully updated.
|
95
|
+
destroyed: Endpoint was successfully destroyed.
|
96
|
+
account:
|
97
|
+
webhooks:
|
98
|
+
outgoing:
|
99
|
+
endpoints: *endpoints
|
100
|
+
activerecord:
|
101
|
+
attributes:
|
102
|
+
webhooks/outgoing/endpoint:
|
103
|
+
name: *name
|
104
|
+
url: *url
|
105
|
+
event_type_ids: *event_type_ids
|
106
|
+
# 🚅 super scaffolding will insert new activerecord attributes above this line.
|
107
|
+
created_at: *created_at
|
108
|
+
updated_at: *updated_at
|
data/config/routes.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
namespace :account do
|
3
|
+
shallow do
|
4
|
+
resources :teams do
|
5
|
+
namespace :webhooks do
|
6
|
+
namespace :outgoing do
|
7
|
+
resources :events
|
8
|
+
resources :endpoints do
|
9
|
+
resources :deliveries, only: [:index, :show] do
|
10
|
+
resources :delivery_attempts, only: [:index, :show]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class CreateWebhooksOutgoingDeliveryAttempts < ActiveRecord::Migration[5.2]
|
2
|
+
def change
|
3
|
+
create_table :webhooks_outgoing_delivery_attempts do |t|
|
4
|
+
t.integer :delivery_id
|
5
|
+
t.integer :response_code
|
6
|
+
t.text :response_body
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|