예제 #1
0
 /**
  * @access private
  */
 private static function checkRanges($start, $end, $use_range, $range_header)
 {
     if ($end && !$start) {
         throw new \InvalidArgumentException("May not specify an end range value without a start value.");
     }
     $use_indexes = isset($start);
     if ($use_indexes) {
         if (isset($end)) {
             if ($start > $end) {
                 throw new \InvalidArgumentException(sprintf("Start range (%d) cannot be greater than the end range (%d).", $start, $end));
             }
             if ($start < 0) {
                 throw new \InvalidArgumentException(sprintf("The start range (%d) cannot be less than 0.", $start));
             }
         }
         $range_indexes = BlobstoreService::serializeRange($start, $end);
     }
     // If both headers and index parameters are in use they must be the same.
     if ($use_range && $use_indexes) {
         if (strcmp($range_header, $range_indexes) != 0) {
             throw new \InvalidArgumentException(sprintf("May not provide non-equivalent range indexes and " . "range headers: (header) %s != (indexes) %s.", $range_header, $range_indexes));
         }
     }
     if ($use_range && isset($range_header)) {
         return $range_header;
     } else {
         if ($use_indexes) {
             return $range_indexes;
         } else {
             return null;
         }
     }
 }