git-off

git off handles large files in git repos
git clone https://noulin.net/git/git-off.git
Log | Files | Refs | README

dynamodb.js (1425B)


      1 var AWS = require('../core');
      2 require('../dynamodb/document_client');
      3 
      4 AWS.util.update(AWS.DynamoDB.prototype, {
      5   /**
      6    * @api private
      7    */
      8   setupRequestListeners: function setupRequestListeners(request) {
      9     if (request.service.config.dynamoDbCrc32) {
     10       request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);
     11       request.addListener('extractData', this.checkCrc32);
     12       request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);
     13     }
     14   },
     15 
     16   /**
     17    * @api private
     18    */
     19   checkCrc32: function checkCrc32(resp) {
     20     if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {
     21       resp.data = null;
     22       resp.error = AWS.util.error(new Error(), {
     23         code: 'CRC32CheckFailed',
     24         message: 'CRC32 integrity check failed',
     25         retryable: true
     26       });
     27       resp.request.haltHandlersOnError();
     28       throw (resp.error);
     29     }
     30   },
     31 
     32   /**
     33    * @api private
     34    */
     35   crc32IsValid: function crc32IsValid(resp) {
     36     var crc = resp.httpResponse.headers['x-amz-crc32'];
     37     if (!crc) return true; // no (valid) CRC32 header
     38     return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);
     39   },
     40 
     41   /**
     42    * @api private
     43    */
     44   defaultRetryCount: 10,
     45 
     46   /**
     47    * @api private
     48    */
     49   retryDelays: function retryDelays(retryCount) {
     50     var delay = retryCount > 0 ? (50 * Math.pow(2, retryCount - 1)) : 0;
     51     return delay;
     52   }
     53 });