示例#1
0
 private async retrieveJSONOrError(response: Response) {
   if (!response.ok) {
     return Promise.reject(response.statusText)
   } else {
     return await response.json()
   }
 }
示例#2
0
function parseJSON(resp: Response): any {
  const contentType = resp.headers.get('Content-Type');
  if (contentType && contentType.indexOf('application/json') !== -1) {
    return resp.json();
  } else {
    return resp;
  }
}
  async readAuthTimestamp(bucketAddress: string): Promise<number> {

    const authTimestampDir = this.getAuthTimestampFileDir(bucketAddress)
    
    let fetchResponse: Response
    try {
      const authNumberFileUrl = `${this.readUrlPrefix}${authTimestampDir}/${AUTH_TIMESTAMP_FILE_NAME}`
      fetchResponse = await fetch(authNumberFileUrl, {
        redirect: 'manual',
        headers: {
          'Cache-Control': 'no-cache'
        }
      })
    } catch (err) {
      // Catch any errors that may occur from network issues during `fetch` async operation.
      const errMsg = (err instanceof Error) ? err.message : err
      throw new errors.ValidationError(`Error trying to fetch bucket authentication revocation timestamp: ${errMsg}`)
    }

    if (fetchResponse.ok) {
      try {
        const authNumberText = await fetchResponse.text()
        const authNumber = parseInt(authNumberText)
        if (Number.isFinite(authNumber)) {
          return authNumber
        } else {
          throw new errors.ValidationError(`Bucket contained an invalid authentication revocation timestamp: ${authNumberText}`)
        }
      } catch (err) {
        // Catch any errors that may occur from network issues during `.text()` async operation.
        const errMsg = (err instanceof Error) ? err.message : err
        throw new errors.ValidationError(`Error trying to read fetch stream of bucket authentication revocation timestamp: ${errMsg}`)
      }
    } else if (fetchResponse.status === 404) {
      // 404 incidates no revocation file has been created.
      return 0
    } else {
      throw new errors.ValidationError(`Error trying to fetch bucket authentication revocation timestamp: server returned ${fetchResponse.status} - ${fetchResponse.statusText}`)
    }

  }
示例#4
0
  private async handleResponse(
    response: Response,
    options: any,
    operationName: OperationName
  ): Promise<OperationResponse> {
    if (options.write) {
      if (response.status >= 400) {
        return {[operationName]: {success: false}, peek: false}
      }

      return {[operationName]: {success: true}, peek: false}
    } else {
      const {data} = await response.json()

      return {peek: data, [operationName]: {success: true}}
    }
  }
示例#5
0
function checkStatus(resp: Response): any {
  if (resp.status >= 200 && resp.status < 300) {
    return resp;
  } else {
    const contentType = resp.headers.get('Content-Type');
    if (contentType && contentType.indexOf('application/json') !== -1) {
      return resp.json().then((data) => {
        if (data.message) {
          throw new KevoreeRegistryClientError(resp, ` - ${data.message}`);
        } else if (data.error_description) {
          throw new KevoreeRegistryClientError(resp, ` - ${data.error_description}`);
        } else {
          throw new KevoreeRegistryClientError(resp);
        }
      });
    } else {
      throw new KevoreeRegistryClientError(resp, ` - ${resp.url}`);
    }
  }
}