Esempio n. 1
0
        hash.error = function(jqXHR, textStatus, errorThrown) {
          runInDebug(function() {
            let message = `The server returned an empty string for ${method} ${url}, which cannot be parsed into a valid JSON. Return either null or {}.`;
            let validJSONString = !(textStatus === "parsererror" && jqXHR.responseText === "");
            warn(message, validJSONString, {
              id: 'ds.adapter.returned-empty-string-as-JSON'
            });
          });

          let error;

          if (errorThrown instanceof Error) {
            error = errorThrown;
          } else if (textStatus === 'timeout') {
            error = new TimeoutError();
          } else if (textStatus === 'abort') {
            error = new AbortError();
          } else {
            error = adapter.handleResponse(
              jqXHR.status,
              parseResponseHeaders(jqXHR.getAllResponseHeaders()),
              adapter.parseErrorResponse(jqXHR.responseText) || errorThrown,
              requestData
            );
          }

          Ember.run.join(null, reject, error);
        };
Esempio n. 2
0
function ajaxError(adapter, jqXHR, requestData, responseData) {
  runInDebug(function () {
    var message = 'The server returned an empty string for ' + requestData.method + ' ' + requestData.url + ', which cannot be parsed into a valid JSON. Return either null or {}.';
    var validJSONString = !(responseData.textStatus === "parsererror" && jqXHR.responseText === "");
    warn(message, validJSONString, {
      id: 'ds.adapter.returned-empty-string-as-JSON'
    });
  });

  var error = undefined;

  if (responseData.errorThrown instanceof Error) {
    error = responseData.errorThrown;
  } else if (responseData.textStatus === 'timeout') {
    error = new TimeoutError();
  } else if (responseData.textStatus === 'abort' || jqXHR.status === 0) {
    error = new AbortError();
  } else {
    try {
      error = adapter.handleResponse(jqXHR.status, parseResponseHeaders(jqXHR.getAllResponseHeaders()), adapter.parseErrorResponse(jqXHR.responseText) || responseData.errorThrown, requestData);
    } catch (e) {
      error = e;
    }
  }

  return error;
}
Esempio n. 3
0
test('ignores headers that do not contain a colon', function(assert) {
  let headersString = [
    'Content-Encoding: gzip',
    'I am ignored because I do not contain a colon'
  ].join(CRLF);

  let headers = parseResponseHeaders(headersString);

  assert.deepEqual(headers['Content-Encoding'], 'gzip', 'parses basic header pair');
  assert.equal(Object.keys(headers).length, 1, 'only has the one valid header');
});
Esempio n. 4
0
test('field-name parsing', function(assert) {
  let headersString = [
    '  name-with-leading-whitespace: some value',
    'name-with-whitespace-before-colon : another value'
  ].join(CRLF);

  let headers = parseResponseHeaders(headersString);

  assert.equal(headers['name-with-leading-whitespace'], 'some value', 'strips leading whitespace from field-name');
  assert.equal(headers['name-with-whitespace-before-colon'], 'another value', 'strips whitespace before colon from field-name');
});
Esempio n. 5
0
test('header parsing', function(assert) {
  let headersString = [
    'Content-Encoding: gzip',
    'content-type: application/json; charset=utf-8',
    'date: Fri, 05 Feb 2016 21:47:56 GMT'
  ].join(CRLF);

  let headers = parseResponseHeaders(headersString);

  assert.equal(headers['Content-Encoding'], 'gzip', 'parses basic header pair');
  assert.equal(headers['content-type'], 'application/json; charset=utf-8', 'parses header with complex value');
  assert.equal(headers['date'], 'Fri, 05 Feb 2016 21:47:56 GMT', 'parses header with date value');
});
Esempio n. 6
0
        hash.success = function(payload, textStatus, jqXHR) {
          let response = adapter.handleResponse(
            jqXHR.status,
            parseResponseHeaders(jqXHR.getAllResponseHeaders()),
            payload,
            requestData
          );

          if (response instanceof AdapterError) {
            Ember.run.join(null, reject, response);
          } else {
            Ember.run.join(null, resolve, response);
          }
        };
Esempio n. 7
0
function ajaxSuccess(adapter, jqXHR, payload, requestData) {
  var response = undefined;
  try {
    response = adapter.handleResponse(jqXHR.status, parseResponseHeaders(jqXHR.getAllResponseHeaders()), payload, requestData);
  } catch (error) {
    return Promise.reject(error);
  }

  if (response && response.isAdapterError) {
    return Promise.reject(response);
  } else {
    return response;
  }
}
Esempio n. 8
0
test('field-value parsing', function(assert) {
  let headersString = [
    'value-with-leading-space: value with leading whitespace',
    'value-without-leading-space:value without leading whitespace',
    'value-with-colon: value with: a colon',
    'value-with-trailing-whitespace: banana   '
  ].join(CRLF);

  let headers = parseResponseHeaders(headersString);

  assert.equal(headers['value-with-leading-space'], 'value with leading whitespace', 'strips leading whitespace in field-value');
  assert.equal(headers['value-without-leading-space'], 'value without leading whitespace', 'works without leaading whitespace in field-value');
  assert.equal(headers['value-with-colon'], 'value with: a colon', 'has correct value when value contains a colon');
  assert.equal(headers['value-with-trailing-whitespace'], 'banana', 'strips trailing whitespace from field-value');
});
Esempio n. 9
0
File: rest.js Progetto: CNDW/data
      hash.error = function(jqXHR, textStatus, errorThrown) {
        let error;

        if (errorThrown instanceof Error) {
          error = errorThrown;
        } else if (textStatus === 'timeout') {
          error = new TimeoutError();
        } else if (textStatus === 'abort') {
          error = new AbortError();
        } else {
          error = adapter.handleResponse(
            jqXHR.status,
            parseResponseHeaders(jqXHR.getAllResponseHeaders()),
            adapter.parseErrorResponse(jqXHR.responseText) || errorThrown,
            requestData
          );
        }

        Ember.run.join(null, reject, error);
      };
Esempio n. 10
0
test('returns an EmptyObject when headersString is undefined', function(assert) {
  let headers = parseResponseHeaders(undefined);

  assert.deepEqual(headers, new EmptyObject(), 'EmptyObject is returned');
});