2016-06-15 13:49:57 -04:00
|
|
|
import computed from 'ember-addons/ember-computed-decorators';
|
|
|
|
import { ajax } from 'discourse/lib/ajax';
|
|
|
|
import { popupAjaxError } from 'discourse/lib/ajax-error';
|
|
|
|
import { ensureJSON, plainJSON, prettyJSON } from 'discourse/lib/formatter';
|
|
|
|
|
|
|
|
export default Ember.Component.extend({
|
|
|
|
tagName: 'li',
|
|
|
|
expandDetails: null,
|
|
|
|
|
|
|
|
@computed('model.status')
|
|
|
|
statusColorClasses(status) {
|
|
|
|
if (!status) return '';
|
|
|
|
|
|
|
|
if (status >= 200 && status <= 299) {
|
|
|
|
return 'text-successful';
|
|
|
|
} else {
|
|
|
|
return 'text-danger';
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
@computed('model.created_at')
|
|
|
|
createdAt(createdAt) {
|
|
|
|
return moment(createdAt).format('YYYY-MM-DD HH:mm:ss');
|
|
|
|
},
|
|
|
|
|
|
|
|
@computed('model.duration')
|
|
|
|
completion(duration) {
|
|
|
|
const seconds = Math.floor(duration / 10.0) / 100.0;
|
2016-09-15 00:57:04 -04:00
|
|
|
return I18n.t('admin.web_hooks.events.completed_in', { count: seconds });
|
2016-06-15 13:49:57 -04:00
|
|
|
},
|
|
|
|
|
|
|
|
actions: {
|
|
|
|
redeliver() {
|
|
|
|
return bootbox.confirm(I18n.t('admin.web_hooks.events.redeliver_confirm'), I18n.t('no_value'), I18n.t('yes_value'), result => {
|
|
|
|
if (result) {
|
2016-09-19 04:43:06 -04:00
|
|
|
ajax(`/admin/api/web_hooks/${this.get('model.web_hook_id')}/events/${this.get('model.id')}/redeliver`, { type: 'POST' }).then(json => {
|
2016-06-15 13:49:57 -04:00
|
|
|
this.set('model', json.web_hook_event);
|
|
|
|
}).catch(popupAjaxError);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
toggleRequest() {
|
|
|
|
const expandDetailsKey = 'request';
|
|
|
|
|
|
|
|
if (this.get('expandDetails') !== expandDetailsKey) {
|
|
|
|
let headers = _.extend({
|
|
|
|
'Request URL': this.get('model.request_url'),
|
|
|
|
'Request method': 'POST'
|
|
|
|
}, ensureJSON(this.get('model.headers')));
|
|
|
|
this.setProperties({
|
|
|
|
headers: plainJSON(headers),
|
|
|
|
body: prettyJSON(this.get('model.payload')),
|
|
|
|
expandDetails: expandDetailsKey,
|
|
|
|
bodyLabel: I18n.t('admin.web_hooks.events.payload')
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
this.set('expandDetails', null);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
toggleResponse() {
|
|
|
|
const expandDetailsKey = 'response';
|
|
|
|
|
|
|
|
if (this.get('expandDetails') !== expandDetailsKey) {
|
|
|
|
this.setProperties({
|
|
|
|
headers: plainJSON(this.get('model.response_headers')),
|
|
|
|
body: this.get('model.response_body'),
|
|
|
|
expandDetails: expandDetailsKey,
|
|
|
|
bodyLabel: I18n.t('admin.web_hooks.events.body')
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
this.set('expandDetails', null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|