public function copy_object($from_bucket, $from_object, $to_bucket, $to_object, $options = null)
{
//options
$this->validate_options($options);
if (!$options) {
$options = array();
}
//from bucket
$this->is_empty($from_bucket, OSS_BUCKET_IS_NOT_ALLOWED_EMPTY);
//to bucket
$this->is_empty($to_bucket, OSS_BUCKET_IS_NOT_ALLOWED_EMPTY);
//from object
$this->is_empty($from_object, OSS_OBJECT_IS_NOT_ALLOWED_EMPTY);
//to object
$this->is_empty($to_object, OSS_OBJECT_IS_NOT_ALLOWED_EMPTY);
$options[self::OSS_BUCKET] = $to_bucket;
$options[self::OSS_METHOD] = 'PUT';
$options[self::OSS_OBJECT] = $to_object;
$options[self::OSS_HEADERS] = array(self::OSS_OBJECT_COPY_SOURCE => '/' . $from_bucket . '/' . $from_object);
$response = $this->auth($options);
return $response;
}