mirror of
https://github.com/status-im/consul.git
synced 2025-01-09 13:26:07 +00:00
f2accb0bd1
* Add uri identifiers to all data source things and make them the same 1. Add uri identitifer to data-source service 2. Make <EventSource /> and <DataSource /> as close as possible 3. Add extra `.closed` method to get a list of inactive/closed/closing data-sources from elsewhere * Make the connections cleanup the least worst connection when required * Pass the uri/request id through all the things * Better user erroring * Make event sources close on error * Allow <DataLoader /> data slot to be configurable * Allow the <DataWriter /> removed state to be configurable * Don't error if meta is undefined * Stitch together all the repositories into the data-source/sink * Use data.source over repositories * Add missing <EventSource /> components * Fix up the views/templates * Disable all the old route based blocking query things * We still need the repo for the mixin for the moment * Don't default to default, default != ''
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
import Service from '@ember/service';
|
|
|
|
import createHeaders from 'consul-ui/utils/http/create-headers';
|
|
import createXHR from 'consul-ui/utils/http/xhr';
|
|
import Request from 'consul-ui/utils/http/request';
|
|
import HTTPError from 'consul-ui/utils/http/error';
|
|
|
|
const xhr = createXHR(createHeaders());
|
|
|
|
export default Service.extend({
|
|
xhr: function(options) {
|
|
return xhr(options);
|
|
},
|
|
request: function(params) {
|
|
const request = new Request(params.method, params.url, {
|
|
['x-request-id']: params.clientHeaders['x-request-id'],
|
|
body: params.data || {},
|
|
});
|
|
const options = {
|
|
...params,
|
|
beforeSend: function(xhr) {
|
|
request.open(xhr);
|
|
},
|
|
converters: {
|
|
'text json': function(response) {
|
|
try {
|
|
return JSON.parse(response);
|
|
} catch (e) {
|
|
return response;
|
|
}
|
|
},
|
|
},
|
|
success: function(headers, response, status, statusText) {
|
|
// Response-ish
|
|
request.respond({
|
|
headers: headers,
|
|
response: response,
|
|
status: status,
|
|
statusText: statusText,
|
|
});
|
|
},
|
|
error: function(headers, response, status, statusText, err) {
|
|
let error;
|
|
if (err instanceof Error) {
|
|
error = err;
|
|
} else {
|
|
error = new HTTPError(status, response);
|
|
}
|
|
request.error(error);
|
|
},
|
|
complete: function(status) {
|
|
request.close();
|
|
},
|
|
};
|
|
request.fetch = () => {
|
|
this.xhr(options);
|
|
return request;
|
|
};
|
|
return request;
|
|
},
|
|
});
|