java 调用阿里云OSS

1、重写OSS

   1 import static com.aliyun.oss.common.utils.CodingUtils.assertParameterNotNull;
   2 import static com.aliyun.oss.common.utils.IOUtils.checkFile;
   3 import static com.aliyun.oss.common.utils.LogUtils.logException;
   4 import static com.aliyun.oss.internal.OSSConstants.DEFAULT_CHARSET_NAME;
   5 import static com.aliyun.oss.internal.OSSConstants.DEFAULT_OSS_ENDPOINT;
   6 import static com.aliyun.oss.internal.OSSUtils.OSS_RESOURCE_MANAGER;
   7 import static com.aliyun.oss.internal.OSSUtils.ensureBucketNameValid;
   8 
   9 import java.io.File;
  10 import java.io.FileInputStream;
  11 import java.io.FileNotFoundException;
  12 import java.io.IOException;
  13 import java.io.InputStream;
  14 import java.io.UnsupportedEncodingException;
  15 import java.net.InetAddress;
  16 import java.net.MalformedURLException;
  17 import java.net.URI;
  18 import java.net.URISyntaxException;
  19 import java.net.URL;
  20 import java.net.UnknownHostException;
  21 import java.util.Date;
  22 import java.util.List;
  23 import java.util.Map;
  24 
  25 import com.aliyun.oss.*;
  26 import com.aliyun.oss.common.auth.Credentials;
  27 import com.aliyun.oss.common.auth.CredentialsProvider;
  28 import com.aliyun.oss.common.auth.DefaultCredentialProvider;
  29 import com.aliyun.oss.common.auth.ServiceSignature;
  30 import com.aliyun.oss.common.comm.*;
  31 import com.aliyun.oss.common.utils.BinaryUtil;
  32 import com.aliyun.oss.common.utils.DateUtil;
  33 import com.aliyun.oss.internal.*;
  34 import com.aliyun.oss.model.*;
  35 import com.aliyun.oss.model.SetBucketCORSRequest.CORSRule;
  36 
  37 
  38 public class OSSClient implements OSS {
  39 
  40     private CredentialsProvider credsProvider;
  41 
  42     private URI endpoint;
  43 
  44     private ServiceClient serviceClient;
  45 
  46     private OSSBucketOperation bucketOperation;
  47     private OSSObjectOperation objectOperation;
  48     private OSSMultipartOperation multipartOperation;
  49     private CORSOperation corsOperation;
  50     private OSSUploadOperation uploadOperation;
  51     private OSSDownloadOperation downloadOperation;
  52     private LiveChannelOperation liveChannelOperation;
  53 
  54 
  55     @Deprecated
  56     public OSSClient(String accessKeyId, String secretAccessKey) {
  57         this(DEFAULT_OSS_ENDPOINT, new DefaultCredentialProvider(accessKeyId, secretAccessKey));
  58     }
  59 
  60 
  61     @Deprecated
  62     public OSSClient(String endpoint, String accessKeyId, String secretAccessKey) {
  63         this(endpoint, new DefaultCredentialProvider(accessKeyId, secretAccessKey), null);
  64     }
  65 
  66 
  67     @Deprecated
  68     public OSSClient(String endpoint, String accessKeyId, String secretAccessKey, String securityToken) {
  69         this(endpoint, new DefaultCredentialProvider(accessKeyId, secretAccessKey, securityToken), null);
  70     }
  71 
  72     @Deprecated
  73     public OSSClient(String endpoint, String accessKeyId, String secretAccessKey, ClientConfiguration config) {
  74         this(endpoint, new DefaultCredentialProvider(accessKeyId, secretAccessKey), config);
  75     }
  76 
  77     @Deprecated
  78     public OSSClient(String endpoint, String accessKeyId, String secretAccessKey, String securityToken,
  79                      ClientConfiguration config) {
  80         this(endpoint, new DefaultCredentialProvider(accessKeyId, secretAccessKey, securityToken), config);
  81     }
  82 
  83     @Deprecated
  84     public OSSClient(String endpoint, CredentialsProvider credsProvider) {
  85         this(endpoint, credsProvider, null);
  86     }
  87 
  88     public OSSClient(String endpoint, CredentialsProvider credsProvider, ClientConfiguration config) {
  89         this.credsProvider = credsProvider;
  90         config = config == null ? new ClientConfiguration() : config;
  91         if (config.isRequestTimeoutEnabled()) {
  92             this.serviceClient = new TimeoutServiceClient(config);
  93         } else {
  94             this.serviceClient = new DefaultServiceClient(config);
  95         }
  96         initOperations();
  97         setEndpoint(endpoint);
  98     }
  99 
 100 
 101     public synchronized URI getEndpoint() {
 102         return URI.create(endpoint.toString());
 103     }
 104 
 105 
 106     public synchronized void setEndpoint(String endpoint) {
 107         URI uri = toURI(endpoint);
 108         this.endpoint = uri;
 109 
 110         if (isIpOrLocalhost(uri)) {
 111             serviceClient.getClientConfiguration().setSLDEnabled(true);
 112         }
 113 
 114         this.bucketOperation.setEndpoint(uri);
 115         this.objectOperation.setEndpoint(uri);
 116         this.multipartOperation.setEndpoint(uri);
 117         this.corsOperation.setEndpoint(uri);
 118         this.liveChannelOperation.setEndpoint(uri);
 119     }
 120 
 121     private boolean isIpOrLocalhost(URI uri) {
 122         if (uri.getHost().equals("localhost")) {
 123             return true;
 124         }
 125 
 126         InetAddress ia;
 127         try {
 128             ia = InetAddress.getByName(uri.getHost());
 129         } catch (UnknownHostException e) {
 130             return false;
 131         }
 132 
 133         if (uri.getHost().equals(ia.getHostAddress())) {
 134             return true;
 135         }
 136 
 137         return false;
 138     }
 139 
 140     private URI toURI(String endpoint) throws IllegalArgumentException {
 141         if (!endpoint.contains("://")) {
 142             ClientConfiguration conf = this.serviceClient.getClientConfiguration();
 143             endpoint = conf.getProtocol().toString() + "://" + endpoint;
 144         }
 145 
 146         try {
 147             return new URI(endpoint);
 148         } catch (URISyntaxException e) {
 149             throw new IllegalArgumentException(e);
 150         }
 151     }
 152 
 153     private void initOperations() {
 154         this.bucketOperation = new OSSBucketOperation(this.serviceClient, this.credsProvider);
 155         this.objectOperation = new OSSObjectOperation(this.serviceClient, this.credsProvider);
 156         this.multipartOperation = new OSSMultipartOperation(this.serviceClient, this.credsProvider);
 157         this.corsOperation = new CORSOperation(this.serviceClient, this.credsProvider);
 158         this.uploadOperation = new OSSUploadOperation(this.multipartOperation);
 159         this.downloadOperation = new OSSDownloadOperation(objectOperation);
 160         this.liveChannelOperation = new LiveChannelOperation(this.serviceClient, this.credsProvider);
 161     }
 162 
 163     @Override
 164     public void switchCredentials(Credentials creds) {
 165         if (creds == null) {
 166             throw new IllegalArgumentException("creds should not be null.");
 167         }
 168 
 169         this.credsProvider.setCredentials(creds);
 170     }
 171 
 172     @Override
 173     public void switchSignatureVersion(SignVersion signatureVersion) {
 174         if (signatureVersion == null) {
 175             throw new IllegalArgumentException("signatureVersion should not be null.");
 176         }
 177 
 178         this.getClientConfiguration().setSignatureVersion(signatureVersion);
 179     }
 180 
 181     public CredentialsProvider getCredentialsProvider() {
 182         return this.credsProvider;
 183     }
 184 
 185     public ClientConfiguration getClientConfiguration() {
 186         return serviceClient.getClientConfiguration();
 187     }
 188 
 189     @Override
 190     public Bucket createBucket(String bucketName) throws OSSException, ClientException {
 191         return this.createBucket(new CreateBucketRequest(bucketName));
 192     }
 193 
 194     @Override
 195     public Bucket createBucket(CreateBucketRequest createBucketRequest) throws OSSException, ClientException {
 196         return bucketOperation.createBucket(createBucketRequest);
 197     }
 198 
 199     @Override
 200     public void deleteBucket(String bucketName) throws OSSException, ClientException {
 201         this.deleteBucket(new GenericRequest(bucketName));
 202     }
 203 
 204     @Override
 205     public void deleteBucket(GenericRequest genericRequest) throws OSSException, ClientException {
 206         bucketOperation.deleteBucket(genericRequest);
 207     }
 208 
 209     @Override
 210     public List<Bucket> listBuckets() throws OSSException, ClientException {
 211         return bucketOperation.listBuckets();
 212     }
 213 
 214     @Override
 215     public BucketList listBuckets(ListBucketsRequest listBucketsRequest) throws OSSException, ClientException {
 216         return bucketOperation.listBuckets(listBucketsRequest);
 217     }
 218 
 219     @Override
 220     public BucketList listBuckets(String prefix, String marker, Integer maxKeys) throws OSSException, ClientException {
 221         return bucketOperation.listBuckets(new ListBucketsRequest(prefix, marker, maxKeys));
 222     }
 223 
 224     @Override
 225     public void setBucketAcl(String bucketName, CannedAccessControlList cannedACL)
 226             throws OSSException, ClientException {
 227         this.setBucketAcl(new SetBucketAclRequest(bucketName, cannedACL));
 228     }
 229 
 230     @Override
 231     public void setBucketAcl(SetBucketAclRequest setBucketAclRequest) throws OSSException, ClientException {
 232         bucketOperation.setBucketAcl(setBucketAclRequest);
 233     }
 234 
 235     @Override
 236     public AccessControlList getBucketAcl(String bucketName) throws OSSException, ClientException {
 237         return this.getBucketAcl(new GenericRequest(bucketName));
 238     }
 239 
 240     @Override
 241     public AccessControlList getBucketAcl(GenericRequest genericRequest) throws OSSException, ClientException {
 242         return bucketOperation.getBucketAcl(genericRequest);
 243     }
 244 
 245     @Override
 246     public BucketMetadata getBucketMetadata(String bucketName) throws OSSException, ClientException {
 247         return this.getBucketMetadata(new GenericRequest(bucketName));
 248     }
 249 
 250     @Override
 251     public BucketMetadata getBucketMetadata(GenericRequest genericRequest) throws OSSException, ClientException {
 252         return bucketOperation.getBucketMetadata(genericRequest);
 253     }
 254 
 255     @Override
 256     public void setBucketReferer(String bucketName, BucketReferer referer) throws OSSException, ClientException {
 257         this.setBucketReferer(new SetBucketRefererRequest(bucketName, referer));
 258     }
 259 
 260     @Override
 261     public void setBucketReferer(SetBucketRefererRequest setBucketRefererRequest) throws OSSException, ClientException {
 262         bucketOperation.setBucketReferer(setBucketRefererRequest);
 263     }
 264 
 265     @Override
 266     public BucketReferer getBucketReferer(String bucketName) throws OSSException, ClientException {
 267         return this.getBucketReferer(new GenericRequest(bucketName));
 268     }
 269 
 270     @Override
 271     public BucketReferer getBucketReferer(GenericRequest genericRequest) throws OSSException, ClientException {
 272         return bucketOperation.getBucketReferer(genericRequest);
 273     }
 274 
 275     @Override
 276     public String getBucketLocation(String bucketName) throws OSSException, ClientException {
 277         return this.getBucketLocation(new GenericRequest(bucketName));
 278     }
 279 
 280     @Override
 281     public String getBucketLocation(GenericRequest genericRequest) throws OSSException, ClientException {
 282         return bucketOperation.getBucketLocation(genericRequest);
 283     }
 284 
 285     @Override
 286     public boolean doesBucketExist(String bucketName) throws OSSException, ClientException {
 287         return this.doesBucketExist(new GenericRequest(bucketName));
 288     }
 289 
 290     @Override
 291     public boolean doesBucketExist(GenericRequest genericRequest) throws OSSException, ClientException {
 292         return bucketOperation.doesBucketExists(genericRequest);
 293     }
 294 
 295 
 296     @Deprecated
 297     public boolean isBucketExist(String bucketName) throws OSSException, ClientException {
 298         return this.doesBucketExist(bucketName);
 299     }
 300 
 301     @Override
 302     public ObjectListing listObjects(String bucketName) throws OSSException, ClientException {
 303         return listObjects(new ListObjectsRequest(bucketName, null, null, null, null));
 304     }
 305 
 306     @Override
 307     public ObjectListing listObjects(String bucketName, String prefix) throws OSSException, ClientException {
 308         return listObjects(new ListObjectsRequest(bucketName, prefix, null, null, null));
 309     }
 310 
 311     @Override
 312     public ObjectListing listObjects(ListObjectsRequest listObjectsRequest) throws OSSException, ClientException {
 313         return bucketOperation.listObjects(listObjectsRequest);
 314     }
 315 
 316     @Override
 317     public VersionListing listVersions(String bucketName, String prefix) throws OSSException, ClientException {
 318         return listVersions(new ListVersionsRequest(bucketName, prefix, null, null, null, null));
 319     }
 320 
 321     @Override
 322     public VersionListing listVersions(String bucketName, String prefix, String keyMarker, String versionIdMarker,
 323                                        String delimiter, Integer maxResults) throws OSSException, ClientException {
 324         ListVersionsRequest request = new ListVersionsRequest()
 325                 .withBucketName(bucketName)
 326                 .withPrefix(prefix)
 327                 .withDelimiter(delimiter)
 328                 .withKeyMarker(keyMarker)
 329                 .withVersionIdMarker(versionIdMarker)
 330                 .withMaxResults(maxResults);
 331         return listVersions(request);
 332     }
 333 
 334     @Override
 335     public VersionListing listVersions(ListVersionsRequest listVersionsRequest) throws OSSException, ClientException {
 336         return bucketOperation.listVersions(listVersionsRequest);
 337     }
 338 
 339     @Override
 340     public PutObjectResult putObject(String bucketName, String key, InputStream input)
 341             throws OSSException, ClientException {
 342         return putObject(bucketName, key, input, null);
 343     }
 344 
 345     @Override
 346     public PutObjectResult putObject(String bucketName, String key, InputStream input, ObjectMetadata metadata)
 347             throws OSSException, ClientException {
 348         return putObject(new PutObjectRequest(bucketName, key, input, metadata));
 349     }
 350 
 351     @Override
 352     public PutObjectResult putObject(String bucketName, String key, File file, ObjectMetadata metadata)
 353             throws OSSException, ClientException {
 354         return putObject(new PutObjectRequest(bucketName, key, file, metadata));
 355     }
 356 
 357     @Override
 358     public PutObjectResult putObject(String bucketName, String key, File file) throws OSSException, ClientException {
 359         return putObject(bucketName, key, file, null);
 360     }
 361 
 362     @Override
 363     public PutObjectResult putObject(PutObjectRequest putObjectRequest) throws OSSException, ClientException {
 364         return objectOperation.putObject(putObjectRequest);
 365     }
 366 
 367     @Override
 368     public PutObjectResult putObject(URL signedUrl, String filePath, Map<String, String> requestHeaders)
 369             throws OSSException, ClientException {
 370         return putObject(signedUrl, filePath, requestHeaders, false);
 371     }
 372 
 373     @Override
 374     public PutObjectResult putObject(URL signedUrl, String filePath, Map<String, String> requestHeaders,
 375                                      boolean useChunkEncoding) throws OSSException, ClientException {
 376 
 377         FileInputStream requestContent = null;
 378         try {
 379             File toUpload = new File(filePath);
 380             if (!checkFile(toUpload)) {
 381                 throw new IllegalArgumentException("Illegal file path: " + filePath);
 382             }
 383             long fileSize = toUpload.length();
 384             requestContent = new FileInputStream(toUpload);
 385 
 386             return putObject(signedUrl, requestContent, fileSize, requestHeaders, useChunkEncoding);
 387         } catch (FileNotFoundException e) {
 388             throw new ClientException(e);
 389         } finally {
 390             if (requestContent != null) {
 391                 try {
 392                     requestContent.close();
 393                 } catch (IOException e) {
 394                 }
 395             }
 396         }
 397     }
 398 
 399     @Override
 400     public PutObjectResult putObject(URL signedUrl, InputStream requestContent, long contentLength,
 401                                      Map<String, String> requestHeaders) throws OSSException, ClientException {
 402         return putObject(signedUrl, requestContent, contentLength, requestHeaders, false);
 403     }
 404 
 405     @Override
 406     public PutObjectResult putObject(URL signedUrl, InputStream requestContent, long contentLength,
 407                                      Map<String, String> requestHeaders, boolean useChunkEncoding) throws OSSException, ClientException {
 408         return objectOperation.putObject(signedUrl, requestContent, contentLength, requestHeaders, useChunkEncoding);
 409     }
 410 
 411     @Override
 412     public CopyObjectResult copyObject(String sourceBucketName, String sourceKey, String destinationBucketName,
 413                                        String destinationKey) throws OSSException, ClientException {
 414         return copyObject(new CopyObjectRequest(sourceBucketName, sourceKey, destinationBucketName, destinationKey));
 415     }
 416 
 417     @Override
 418     public CopyObjectResult copyObject(CopyObjectRequest copyObjectRequest) throws OSSException, ClientException {
 419         return objectOperation.copyObject(copyObjectRequest);
 420     }
 421 
 422     @Override
 423     public OSSObject getObject(String bucketName, String key) throws OSSException, ClientException {
 424         return this.getObject(new GetObjectRequest(bucketName, key));
 425     }
 426 
 427     @Override
 428     public ObjectMetadata getObject(GetObjectRequest getObjectRequest, File file) throws OSSException, ClientException {
 429         return objectOperation.getObject(getObjectRequest, file);
 430     }
 431 
 432     @Override
 433     public OSSObject getObject(GetObjectRequest getObjectRequest) throws OSSException, ClientException {
 434         return objectOperation.getObject(getObjectRequest);
 435     }
 436 
 437     @Override
 438     public OSSObject getObject(URL signedUrl, Map<String, String> requestHeaders) throws OSSException, ClientException {
 439         GetObjectRequest getObjectRequest = new GetObjectRequest(signedUrl, requestHeaders);
 440         return objectOperation.getObject(getObjectRequest);
 441     }
 442 
 443     @Override
 444     public OSSObject selectObject(SelectObjectRequest selectObjectRequest) throws OSSException, ClientException {
 445         return objectOperation.selectObject(selectObjectRequest);
 446     }
 447 
 448     @Override
 449     public SimplifiedObjectMeta getSimplifiedObjectMeta(String bucketName, String key)
 450             throws OSSException, ClientException {
 451         return this.getSimplifiedObjectMeta(new GenericRequest(bucketName, key));
 452     }
 453 
 454     @Override
 455     public SimplifiedObjectMeta getSimplifiedObjectMeta(GenericRequest genericRequest)
 456             throws OSSException, ClientException {
 457         return this.objectOperation.getSimplifiedObjectMeta(genericRequest);
 458     }
 459 
 460     @Override
 461     public ObjectMetadata getObjectMetadata(String bucketName, String key) throws OSSException, ClientException {
 462         return this.getObjectMetadata(new GenericRequest(bucketName, key));
 463     }
 464 
 465     @Override
 466     public SelectObjectMetadata createSelectObjectMetadata(CreateSelectObjectMetadataRequest createSelectObjectMetadataRequest) throws OSSException, ClientException {
 467         return objectOperation.createSelectObjectMetadata(createSelectObjectMetadataRequest);
 468     }
 469 
 470     @Override
 471     public ObjectMetadata getObjectMetadata(GenericRequest genericRequest) throws OSSException, ClientException {
 472         return objectOperation.getObjectMetadata(genericRequest);
 473     }
 474 
 475     @Override
 476     public ObjectMetadata headObject(String bucketName, String key) throws OSSException, ClientException {
 477         return this.headObject(new HeadObjectRequest(bucketName, key));
 478     }
 479 
 480     @Override
 481     public ObjectMetadata headObject(HeadObjectRequest headObjectRequest) throws OSSException, ClientException {
 482         return objectOperation.headObject(headObjectRequest);
 483     }
 484 
 485     @Override
 486     public AppendObjectResult appendObject(AppendObjectRequest appendObjectRequest)
 487             throws OSSException, ClientException {
 488         return objectOperation.appendObject(appendObjectRequest);
 489     }
 490 
 491     @Override
 492     public void deleteObject(String bucketName, String key) throws OSSException, ClientException {
 493         this.deleteObject(new GenericRequest(bucketName, key));
 494     }
 495 
 496     @Override
 497     public void deleteObject(GenericRequest genericRequest) throws OSSException, ClientException {
 498         objectOperation.deleteObject(genericRequest);
 499     }
 500 
 501     @Override
 502     public void deleteVersion(String bucketName, String key, String versionId) throws OSSException, ClientException {
 503         deleteVersion(new DeleteVersionRequest(bucketName, key, versionId));
 504     }
 505 
 506     @Override
 507     public void deleteVersion(DeleteVersionRequest deleteVersionRequest) throws OSSException, ClientException {
 508         objectOperation.deleteVersion(deleteVersionRequest);
 509     }
 510 
 511     @Override
 512     public DeleteObjectsResult deleteObjects(DeleteObjectsRequest deleteObjectsRequest)
 513             throws OSSException, ClientException {
 514         return objectOperation.deleteObjects(deleteObjectsRequest);
 515     }
 516 
 517     @Override
 518     public DeleteVersionsResult deleteVersions(DeleteVersionsRequest deleteVersionsRequest)
 519             throws OSSException, ClientException {
 520         return objectOperation.deleteVersions(deleteVersionsRequest);
 521     }
 522 
 523     @Override
 524     public boolean doesObjectExist(String bucketName, String key) throws OSSException, ClientException {
 525         return doesObjectExist(new GenericRequest(bucketName, key));
 526     }
 527 
 528     @Override
 529     public boolean doesObjectExist(String bucketName, String key, boolean isOnlyInOSS) {
 530         if (isOnlyInOSS) {
 531             return doesObjectExist(bucketName, key);
 532         } else {
 533             return objectOperation.doesObjectExistWithRedirect(new GenericRequest(bucketName, key));
 534         }
 535     }
 536 
 537     @Deprecated
 538     @Override
 539     public boolean doesObjectExist(HeadObjectRequest headObjectRequest) throws OSSException, ClientException {
 540         return doesObjectExist(new GenericRequest(headObjectRequest.getBucketName(), headObjectRequest.getKey()));
 541     }
 542 
 543     @Override
 544     public boolean doesObjectExist(GenericRequest genericRequest) throws OSSException, ClientException {
 545         return objectOperation.doesObjectExist(genericRequest);
 546     }
 547 
 548     @Override
 549     public boolean doesObjectExist(GenericRequest genericRequest, boolean isOnlyInOSS) throws OSSException, ClientException {
 550         if (isOnlyInOSS) {
 551             return objectOperation.doesObjectExist(genericRequest);
 552         } else {
 553             return objectOperation.doesObjectExistWithRedirect(genericRequest);
 554         }
 555     }
 556 
 557     @Override
 558     public void setObjectAcl(String bucketName, String key, CannedAccessControlList cannedACL)
 559             throws OSSException, ClientException {
 560         this.setObjectAcl(new SetObjectAclRequest(bucketName, key, cannedACL));
 561     }
 562 
 563     @Override
 564     public void setObjectAcl(SetObjectAclRequest setObjectAclRequest) throws OSSException, ClientException {
 565         objectOperation.setObjectAcl(setObjectAclRequest);
 566     }
 567 
 568     @Override
 569     public ObjectAcl getObjectAcl(String bucketName, String key) throws OSSException, ClientException {
 570         return this.getObjectAcl(new GenericRequest(bucketName, key));
 571     }
 572 
 573     @Override
 574     public ObjectAcl getObjectAcl(GenericRequest genericRequest) throws OSSException, ClientException {
 575         return objectOperation.getObjectAcl(genericRequest);
 576     }
 577 
 578     @Override
 579     public RestoreObjectResult restoreObject(String bucketName, String key) throws OSSException, ClientException {
 580         return this.restoreObject(new GenericRequest(bucketName, key));
 581     }
 582 
 583     @Override
 584     public RestoreObjectResult restoreObject(GenericRequest genericRequest) throws OSSException, ClientException {
 585         return objectOperation.restoreObject(genericRequest);
 586     }
 587 
 588     @Override
 589     public void setObjectTagging(String bucketName, String key, Map<String, String> tags)
 590             throws OSSException, ClientException {
 591         this.setObjectTagging(new SetObjectTaggingRequest(bucketName, key, tags));
 592     }
 593 
 594     @Override
 595     public void setObjectTagging(String bucketName, String key, TagSet tagSet) throws OSSException, ClientException {
 596         this.setObjectTagging(new SetObjectTaggingRequest(bucketName, key, tagSet));
 597     }
 598 
 599     @Override
 600     public void setObjectTagging(SetObjectTaggingRequest setObjectTaggingRequest) throws OSSException, ClientException {
 601         objectOperation.setObjectTagging(setObjectTaggingRequest);
 602     }
 603 
 604     @Override
 605     public TagSet getObjectTagging(String bucketName, String key) throws OSSException, ClientException {
 606         return this.getObjectTagging(new GenericRequest(bucketName, key));
 607     }
 608 
 609     @Override
 610     public TagSet getObjectTagging(GenericRequest genericRequest) throws OSSException, ClientException {
 611         return objectOperation.getObjectTagging(genericRequest);
 612     }
 613 
 614     @Override
 615     public void deleteObjectTagging(String bucketName, String key) throws OSSException, ClientException {
 616         this.deleteObjectTagging(new GenericRequest(bucketName, key));
 617     }
 618 
 619     @Override
 620     public void deleteObjectTagging(GenericRequest genericRequest) throws OSSException, ClientException {
 621         objectOperation.deleteObjectTagging(genericRequest);
 622     }
 623 
 624     @Override
 625     public URL generatePresignedUrl(String bucketName, String key, Date expiration) throws ClientException {
 626         return generatePresignedUrl(bucketName, key, expiration, HttpMethod.GET);
 627     }
 628 
 629     @Override
 630     public URL generatePresignedUrl(String bucketName, String key, Date expiration, HttpMethod method)
 631             throws ClientException {
 632         GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key);
 633         request.setExpiration(expiration);
 634         request.setMethod(method);
 635 
 636         return generatePresignedUrl(request);
 637     }
 638 
 639     @Override
 640     public URL generatePresignedUrl(GeneratePresignedUrlRequest request) throws ClientException {
 641 
 642         assertParameterNotNull(request, "request");
 643 
 644         if (request.getBucketName() == null) {
 645             throw new IllegalArgumentException(OSS_RESOURCE_MANAGER.getString("MustSetBucketName"));
 646         }
 647         ensureBucketNameValid(request.getBucketName());
 648 
 649         if (request.getExpiration() == null) {
 650             throw new IllegalArgumentException(OSS_RESOURCE_MANAGER.getString("MustSetExpiration"));
 651         }
 652         String url;
 653 
 654         if (serviceClient.getClientConfiguration().getSignatureVersion() != null && serviceClient.getClientConfiguration().getSignatureVersion() == SignVersion.V2) {
 655             url = SignV2Utils.buildSignedURL(request, credsProvider.getCredentials(), serviceClient.getClientConfiguration(), endpoint);
 656         } else {
 657             url = SignUtils.buildSignedURL(request, credsProvider.getCredentials(), serviceClient.getClientConfiguration(), endpoint);
 658         }
 659 
 660         try {
 661             return new URL(url);
 662         } catch (MalformedURLException e) {
 663             throw new ClientException(e);
 664         }
 665     }
 666 
 667     @Override
 668     public void abortMultipartUpload(AbortMultipartUploadRequest request) throws OSSException, ClientException {
 669         multipartOperation.abortMultipartUpload(request);
 670     }
 671 
 672     @Override
 673     public CompleteMultipartUploadResult completeMultipartUpload(CompleteMultipartUploadRequest request)
 674             throws OSSException, ClientException {
 675         return multipartOperation.completeMultipartUpload(request);
 676     }
 677 
 678     @Override
 679     public InitiateMultipartUploadResult initiateMultipartUpload(InitiateMultipartUploadRequest request)
 680             throws OSSException, ClientException {
 681         return multipartOperation.initiateMultipartUpload(request);
 682     }
 683 
 684     @Override
 685     public MultipartUploadListing listMultipartUploads(ListMultipartUploadsRequest request)
 686             throws OSSException, ClientException {
 687         return multipartOperation.listMultipartUploads(request);
 688     }
 689 
 690     @Override
 691     public PartListing listParts(ListPartsRequest request) throws OSSException, ClientException {
 692         return multipartOperation.listParts(request);
 693     }
 694 
 695     @Override
 696     public UploadPartResult uploadPart(UploadPartRequest request) throws OSSException, ClientException {
 697         return multipartOperation.uploadPart(request);
 698     }
 699 
 700     @Override
 701     public UploadPartCopyResult uploadPartCopy(UploadPartCopyRequest request) throws OSSException, ClientException {
 702         return multipartOperation.uploadPartCopy(request);
 703     }
 704 
 705     @Override
 706     public void setBucketCORS(SetBucketCORSRequest request) throws OSSException, ClientException {
 707         corsOperation.setBucketCORS(request);
 708     }
 709 
 710     @Override
 711     public List<CORSRule> getBucketCORSRules(String bucketName) throws OSSException, ClientException {
 712         return this.getBucketCORSRules(new GenericRequest(bucketName));
 713     }
 714 
 715     @Override
 716     public List<CORSRule> getBucketCORSRules(GenericRequest genericRequest) throws OSSException, ClientException {
 717         return corsOperation.getBucketCORSRules(genericRequest);
 718     }
 719 
 720     @Override
 721     public void deleteBucketCORSRules(String bucketName) throws OSSException, ClientException {
 722         this.deleteBucketCORSRules(new GenericRequest(bucketName));
 723     }
 724 
 725     @Override
 726     public void deleteBucketCORSRules(GenericRequest genericRequest) throws OSSException, ClientException {
 727         corsOperation.deleteBucketCORS(genericRequest);
 728     }
 729 
 730     @Override
 731     public ResponseMessage optionsObject(OptionsRequest request) throws OSSException, ClientException {
 732         return corsOperation.optionsObject(request);
 733     }
 734 
 735     @Override
 736     public void setBucketLogging(SetBucketLoggingRequest request) throws OSSException, ClientException {
 737         bucketOperation.setBucketLogging(request);
 738     }
 739 
 740     @Override
 741     public BucketLoggingResult getBucketLogging(String bucketName) throws OSSException, ClientException {
 742         return this.getBucketLogging(new GenericRequest(bucketName));
 743     }
 744 
 745     @Override
 746     public BucketLoggingResult getBucketLogging(GenericRequest genericRequest) throws OSSException, ClientException {
 747         return bucketOperation.getBucketLogging(genericRequest);
 748     }
 749 
 750     @Override
 751     public void deleteBucketLogging(String bucketName) throws OSSException, ClientException {
 752         this.deleteBucketLogging(new GenericRequest(bucketName));
 753     }
 754 
 755     @Override
 756     public void deleteBucketLogging(GenericRequest genericRequest) throws OSSException, ClientException {
 757         bucketOperation.deleteBucketLogging(genericRequest);
 758     }
 759 
 760     @Override
 761     public void putBucketImage(PutBucketImageRequest request) throws OSSException, ClientException {
 762         bucketOperation.putBucketImage(request);
 763     }
 764 
 765     @Override
 766     public GetBucketImageResult getBucketImage(String bucketName) throws OSSException, ClientException {
 767         return bucketOperation.getBucketImage(bucketName, new GenericRequest());
 768     }
 769 
 770     @Override
 771     public GetBucketImageResult getBucketImage(String bucketName, GenericRequest genericRequest)
 772             throws OSSException, ClientException {
 773         return bucketOperation.getBucketImage(bucketName, genericRequest);
 774     }
 775 
 776     @Override
 777     public void deleteBucketImage(String bucketName) throws OSSException, ClientException {
 778         bucketOperation.deleteBucketImage(bucketName, new GenericRequest());
 779     }
 780 
 781     @Override
 782     public void deleteBucketImage(String bucketName, GenericRequest genericRequest)
 783             throws OSSException, ClientException {
 784         bucketOperation.deleteBucketImage(bucketName, genericRequest);
 785     }
 786 
 787     @Override
 788     public void putImageStyle(PutImageStyleRequest putImageStyleRequest) throws OSSException, ClientException {
 789         bucketOperation.putImageStyle(putImageStyleRequest);
 790     }
 791 
 792     @Override
 793     public void deleteImageStyle(String bucketName, String styleName) throws OSSException, ClientException {
 794         bucketOperation.deleteImageStyle(bucketName, styleName, new GenericRequest());
 795     }
 796 
 797     @Override
 798     public void deleteImageStyle(String bucketName, String styleName, GenericRequest genericRequest)
 799             throws OSSException, ClientException {
 800         bucketOperation.deleteImageStyle(bucketName, styleName, genericRequest);
 801     }
 802 
 803     @Override
 804     public GetImageStyleResult getImageStyle(String bucketName, String styleName) throws OSSException, ClientException {
 805         return bucketOperation.getImageStyle(bucketName, styleName, new GenericRequest());
 806     }
 807 
 808     @Override
 809     public GetImageStyleResult getImageStyle(String bucketName, String styleName, GenericRequest genericRequest)
 810             throws OSSException, ClientException {
 811         return bucketOperation.getImageStyle(bucketName, styleName, genericRequest);
 812     }
 813 
 814     @Override
 815     public List<Style> listImageStyle(String bucketName) throws OSSException, ClientException {
 816         return bucketOperation.listImageStyle(bucketName, new GenericRequest());
 817     }
 818 
 819     @Override
 820     public List<Style> listImageStyle(String bucketName, GenericRequest genericRequest)
 821             throws OSSException, ClientException {
 822         return bucketOperation.listImageStyle(bucketName, genericRequest);
 823     }
 824 
 825     @Override
 826     public void setBucketProcess(SetBucketProcessRequest setBucketProcessRequest) throws OSSException, ClientException {
 827         bucketOperation.setBucketProcess(setBucketProcessRequest);
 828     }
 829 
 830     @Override
 831     public BucketProcess getBucketProcess(String bucketName) throws OSSException, ClientException {
 832         return this.getBucketProcess(new GenericRequest(bucketName));
 833     }
 834 
 835     @Override
 836     public BucketProcess getBucketProcess(GenericRequest genericRequest) throws OSSException, ClientException {
 837         return bucketOperation.getBucketProcess(genericRequest);
 838     }
 839 
 840     @Override
 841     public void setBucketWebsite(SetBucketWebsiteRequest setBucketWebSiteRequest) throws OSSException, ClientException {
 842         bucketOperation.setBucketWebsite(setBucketWebSiteRequest);
 843     }
 844 
 845     @Override
 846     public BucketWebsiteResult getBucketWebsite(String bucketName) throws OSSException, ClientException {
 847         return this.getBucketWebsite(new GenericRequest(bucketName));
 848     }
 849 
 850     @Override
 851     public BucketWebsiteResult getBucketWebsite(GenericRequest genericRequest) throws OSSException, ClientException {
 852         return bucketOperation.getBucketWebsite(genericRequest);
 853     }
 854 
 855     @Override
 856     public void deleteBucketWebsite(String bucketName) throws OSSException, ClientException {
 857         this.deleteBucketWebsite(new GenericRequest(bucketName));
 858     }
 859 
 860     @Override
 861     public void deleteBucketWebsite(GenericRequest genericRequest) throws OSSException, ClientException {
 862         bucketOperation.deleteBucketWebsite(genericRequest);
 863     }
 864 
 865     @Override
 866     public BucketVersioningConfiguration getBucketVersioning(String bucketName) throws OSSException, ClientException {
 867         return getBucketVersioning(new GenericRequest(bucketName));
 868     }
 869 
 870     @Override
 871     public BucketVersioningConfiguration getBucketVersioning(GenericRequest genericRequest)
 872             throws OSSException, ClientException {
 873         return bucketOperation.getBucketVersioning(genericRequest);
 874     }
 875 
 876     @Override
 877     public void setBucketVersioning(SetBucketVersioningRequest setBucketVersioningRequest)
 878             throws OSSException, ClientException {
 879         bucketOperation.setBucketVersioning(setBucketVersioningRequest);
 880     }
 881 
 882     @Override
 883     public String generatePostPolicy(Date expiration, PolicyConditions conds) {
 884         String formatedExpiration = DateUtil.formatIso8601Date(expiration);
 885         String jsonizedExpiration = String.format(""expiration":"%s"", formatedExpiration);
 886         String jsonizedConds = conds.jsonize();
 887 
 888         StringBuilder postPolicy = new StringBuilder();
 889         postPolicy.append(String.format("{%s,%s}", jsonizedExpiration, jsonizedConds));
 890 
 891         return postPolicy.toString();
 892     }
 893 
 894     @Override
 895     public String calculatePostSignature(String postPolicy) throws ClientException {
 896         try {
 897             byte[] binaryData = postPolicy.getBytes(DEFAULT_CHARSET_NAME);
 898             String encPolicy = BinaryUtil.toBase64String(binaryData);
 899             return ServiceSignature.create().computeSignature(credsProvider.getCredentials().getSecretAccessKey(),
 900                     encPolicy);
 901         } catch (UnsupportedEncodingException ex) {
 902             throw new ClientException("Unsupported charset: " + ex.getMessage());
 903         }
 904     }
 905 
 906     @Override
 907     public void setBucketLifecycle(SetBucketLifecycleRequest setBucketLifecycleRequest)
 908             throws OSSException, ClientException {
 909         bucketOperation.setBucketLifecycle(setBucketLifecycleRequest);
 910     }
 911 
 912     @Override
 913     public List<LifecycleRule> getBucketLifecycle(String bucketName) throws OSSException, ClientException {
 914         return this.getBucketLifecycle(new GenericRequest(bucketName));
 915     }
 916 
 917     @Override
 918     public List<LifecycleRule> getBucketLifecycle(GenericRequest genericRequest) throws OSSException, ClientException {
 919         return bucketOperation.getBucketLifecycle(genericRequest);
 920     }
 921 
 922     @Override
 923     public void deleteBucketLifecycle(String bucketName) throws OSSException, ClientException {
 924         this.deleteBucketLifecycle(new GenericRequest(bucketName));
 925     }
 926 
 927     @Override
 928     public void deleteBucketLifecycle(GenericRequest genericRequest) throws OSSException, ClientException {
 929         bucketOperation.deleteBucketLifecycle(genericRequest);
 930     }
 931 
 932     @Override
 933     public void setBucketTagging(String bucketName, Map<String, String> tags) throws OSSException, ClientException {
 934         this.setBucketTagging(new SetBucketTaggingRequest(bucketName, tags));
 935     }
 936 
 937     @Override
 938     public void setBucketTagging(String bucketName, TagSet tagSet) throws OSSException, ClientException {
 939         this.setBucketTagging(new SetBucketTaggingRequest(bucketName, tagSet));
 940     }
 941 
 942     @Override
 943     public void setBucketTagging(SetBucketTaggingRequest setBucketTaggingRequest) throws OSSException, ClientException {
 944         this.bucketOperation.setBucketTagging(setBucketTaggingRequest);
 945     }
 946 
 947     @Override
 948     public TagSet getBucketTagging(String bucketName) throws OSSException, ClientException {
 949         return this.getBucketTagging(new GenericRequest(bucketName));
 950     }
 951 
 952     @Override
 953     public TagSet getBucketTagging(GenericRequest genericRequest) throws OSSException, ClientException {
 954         return this.bucketOperation.getBucketTagging(genericRequest);
 955     }
 956 
 957     @Override
 958     public void deleteBucketTagging(String bucketName) throws OSSException, ClientException {
 959         this.deleteBucketTagging(new GenericRequest(bucketName));
 960     }
 961 
 962     @Override
 963     public void deleteBucketTagging(GenericRequest genericRequest) throws OSSException, ClientException {
 964         this.bucketOperation.deleteBucketTagging(genericRequest);
 965     }
 966 
 967     @Override
 968     public void addBucketReplication(AddBucketReplicationRequest addBucketReplicationRequest)
 969             throws OSSException, ClientException {
 970         this.bucketOperation.addBucketReplication(addBucketReplicationRequest);
 971     }
 972 
 973     @Override
 974     public List<ReplicationRule> getBucketReplication(String bucketName) throws OSSException, ClientException {
 975         return this.getBucketReplication(new GenericRequest(bucketName));
 976     }
 977 
 978     @Override
 979     public List<ReplicationRule> getBucketReplication(GenericRequest genericRequest)
 980             throws OSSException, ClientException {
 981         return this.bucketOperation.getBucketReplication(genericRequest);
 982     }
 983 
 984     @Override
 985     public void deleteBucketReplication(String bucketName, String replicationRuleID)
 986             throws OSSException, ClientException {
 987         this.deleteBucketReplication(new DeleteBucketReplicationRequest(bucketName, replicationRuleID));
 988     }
 989 
 990     @Override
 991     public void deleteBucketReplication(DeleteBucketReplicationRequest deleteBucketReplicationRequest)
 992             throws OSSException, ClientException {
 993         this.bucketOperation.deleteBucketReplication(deleteBucketReplicationRequest);
 994     }
 995 
 996     @Override
 997     public BucketReplicationProgress getBucketReplicationProgress(String bucketName, String replicationRuleID)
 998             throws OSSException, ClientException {
 999         return this
1000                 .getBucketReplicationProgress(new GetBucketReplicationProgressRequest(bucketName, replicationRuleID));
1001     }
1002 
1003     @Override
1004     public BucketReplicationProgress getBucketReplicationProgress(
1005             GetBucketReplicationProgressRequest getBucketReplicationProgressRequest)
1006             throws OSSException, ClientException {
1007         return this.bucketOperation.getBucketReplicationProgress(getBucketReplicationProgressRequest);
1008     }
1009 
1010     @Override
1011     public List<String> getBucketReplicationLocation(String bucketName) throws OSSException, ClientException {
1012         return this.getBucketReplicationLocation(new GenericRequest(bucketName));
1013     }
1014 
1015     @Override
1016     public List<String> getBucketReplicationLocation(GenericRequest genericRequest)
1017             throws OSSException, ClientException {
1018         return this.bucketOperation.getBucketReplicationLocation(genericRequest);
1019     }
1020 
1021     @Override
1022     public void addBucketCname(AddBucketCnameRequest addBucketCnameRequest) throws OSSException, ClientException {
1023         this.bucketOperation.addBucketCname(addBucketCnameRequest);
1024     }
1025 
1026     @Override
1027     public List<CnameConfiguration> getBucketCname(String bucketName) throws OSSException, ClientException {
1028         return this.getBucketCname(new GenericRequest(bucketName));
1029     }
1030 
1031     @Override
1032     public List<CnameConfiguration> getBucketCname(GenericRequest genericRequest) throws OSSException, ClientException {
1033         return this.bucketOperation.getBucketCname(genericRequest);
1034     }
1035 
1036     @Override
1037     public void deleteBucketCname(String bucketName, String domain) throws OSSException, ClientException {
1038         this.deleteBucketCname(new DeleteBucketCnameRequest(bucketName, domain));
1039     }
1040 
1041     @Override
1042     public void deleteBucketCname(DeleteBucketCnameRequest deleteBucketCnameRequest)
1043             throws OSSException, ClientException {
1044         this.bucketOperation.deleteBucketCname(deleteBucketCnameRequest);
1045     }
1046 
1047     @Override
1048     public BucketInfo getBucketInfo(String bucketName) throws OSSException, ClientException {
1049         return this.getBucketInfo(new GenericRequest(bucketName));
1050     }
1051 
1052     @Override
1053     public BucketInfo getBucketInfo(GenericRequest genericRequest) throws OSSException, ClientException {
1054         return this.bucketOperation.getBucketInfo(genericRequest);
1055     }
1056 
1057     @Override
1058     public BucketStat getBucketStat(String bucketName) throws OSSException, ClientException {
1059         return this.getBucketStat(new GenericRequest(bucketName));
1060     }
1061 
1062     @Override
1063     public BucketStat getBucketStat(GenericRequest genericRequest) throws OSSException, ClientException {
1064         return this.bucketOperation.getBucketStat(genericRequest);
1065     }
1066 
1067     @Override
1068     public void setBucketStorageCapacity(String bucketName, UserQos userQos) throws OSSException, ClientException {
1069         this.setBucketStorageCapacity(new SetBucketStorageCapacityRequest(bucketName).withUserQos(userQos));
1070     }
1071 
1072     @Override
1073     public void setBucketStorageCapacity(SetBucketStorageCapacityRequest setBucketStorageCapacityRequest)
1074             throws OSSException, ClientException {
1075         this.bucketOperation.setBucketStorageCapacity(setBucketStorageCapacityRequest);
1076     }
1077 
1078     @Override
1079     public UserQos getBucketStorageCapacity(String bucketName) throws OSSException, ClientException {
1080         return this.getBucketStorageCapacity(new GenericRequest(bucketName));
1081     }
1082 
1083     @Override
1084     public UserQos getBucketStorageCapacity(GenericRequest genericRequest) throws OSSException, ClientException {
1085         return this.bucketOperation.getBucketStorageCapacity(genericRequest);
1086     }
1087 
1088     @Override
1089     public void setBucketEncryption(SetBucketEncryptionRequest setBucketEncryptionRequest)
1090             throws OSSException, ClientException {
1091         this.bucketOperation.setBucketEncryption(setBucketEncryptionRequest);
1092     }
1093 
1094     @Override
1095     public ServerSideEncryptionConfiguration getBucketEncryption(String bucketName)
1096             throws OSSException, ClientException {
1097         return this.getBucketEncryption(new GenericRequest(bucketName));
1098     }
1099 
1100     @Override
1101     public ServerSideEncryptionConfiguration getBucketEncryption(GenericRequest genericRequest)
1102             throws OSSException, ClientException {
1103         return this.bucketOperation.getBucketEncryption(genericRequest);
1104     }
1105 
1106     @Override
1107     public void deleteBucketEncryption(String bucketName) throws OSSException, ClientException {
1108         this.deleteBucketEncryption(new GenericRequest(bucketName));
1109     }
1110 
1111     @Override
1112     public void deleteBucketEncryption(GenericRequest genericRequest) throws OSSException, ClientException {
1113         this.bucketOperation.deleteBucketEncryption(genericRequest);
1114     }
1115 
1116     @Override
1117     public void setBucketPolicy(String bucketName, String policyText) throws OSSException, ClientException {
1118         this.setBucketPolicy(new SetBucketPolicyRequest(bucketName, policyText));
1119     }
1120 
1121     @Override
1122     public void setBucketPolicy(SetBucketPolicyRequest setBucketPolicyRequest) throws OSSException, ClientException {
1123         this.bucketOperation.setBucketPolicy(setBucketPolicyRequest);
1124     }
1125 
1126     @Override
1127     public GetBucketPolicyResult getBucketPolicy(GenericRequest genericRequest) throws OSSException, ClientException {
1128         return this.bucketOperation.getBucketPolicy(genericRequest);
1129     }
1130 
1131     @Override
1132     public GetBucketPolicyResult getBucketPolicy(String bucketName) throws OSSException, ClientException {
1133         return this.getBucketPolicy(new GenericRequest(bucketName));
1134     }
1135 
1136     @Override
1137     public void deleteBucketPolicy(GenericRequest genericRequest) throws OSSException, ClientException {
1138         this.bucketOperation.deleteBucketPolicy(genericRequest);
1139     }
1140 
1141     @Override
1142     public void deleteBucketPolicy(String bucketName) throws OSSException, ClientException {
1143         this.deleteBucketPolicy(new GenericRequest(bucketName));
1144     }
1145 
1146     @Override
1147     public UploadFileResult uploadFile(UploadFileRequest uploadFileRequest) throws Throwable {
1148         return this.uploadOperation.uploadFile(uploadFileRequest);
1149     }
1150 
1151     @Override
1152     public DownloadFileResult downloadFile(DownloadFileRequest downloadFileRequest) throws Throwable {
1153         return downloadOperation.downloadFile(downloadFileRequest);
1154     }
1155 
1156     @Override
1157     public CreateLiveChannelResult createLiveChannel(CreateLiveChannelRequest createLiveChannelRequest)
1158             throws OSSException, ClientException {
1159         return liveChannelOperation.createLiveChannel(createLiveChannelRequest);
1160     }
1161 
1162     @Override
1163     public void setLiveChannelStatus(String bucketName, String liveChannel, LiveChannelStatus status)
1164             throws OSSException, ClientException {
1165         this.setLiveChannelStatus(new SetLiveChannelRequest(bucketName, liveChannel, status));
1166     }
1167 
1168     @Override
1169     public void setLiveChannelStatus(SetLiveChannelRequest setLiveChannelRequest) throws OSSException, ClientException {
1170         liveChannelOperation.setLiveChannelStatus(setLiveChannelRequest);
1171     }
1172 
1173     @Override
1174     public LiveChannelInfo getLiveChannelInfo(String bucketName, String liveChannel)
1175             throws OSSException, ClientException {
1176         return this.getLiveChannelInfo(new LiveChannelGenericRequest(bucketName, liveChannel));
1177     }
1178 
1179     @Override
1180     public LiveChannelInfo getLiveChannelInfo(LiveChannelGenericRequest liveChannelGenericRequest)
1181             throws OSSException, ClientException {
1182         return liveChannelOperation.getLiveChannelInfo(liveChannelGenericRequest);
1183     }
1184 
1185     @Override
1186     public LiveChannelStat getLiveChannelStat(String bucketName, String liveChannel)
1187             throws OSSException, ClientException {
1188         return this.getLiveChannelStat(new LiveChannelGenericRequest(bucketName, liveChannel));
1189     }
1190 
1191     @Override
1192     public LiveChannelStat getLiveChannelStat(LiveChannelGenericRequest liveChannelGenericRequest)
1193             throws OSSException, ClientException {
1194         return liveChannelOperation.getLiveChannelStat(liveChannelGenericRequest);
1195     }
1196 
1197     @Override
1198     public void deleteLiveChannel(String bucketName, String liveChannel) throws OSSException, ClientException {
1199         this.deleteLiveChannel(new LiveChannelGenericRequest(bucketName, liveChannel));
1200     }
1201 
1202     @Override
1203     public void deleteLiveChannel(LiveChannelGenericRequest liveChannelGenericRequest)
1204             throws OSSException, ClientException {
1205         liveChannelOperation.deleteLiveChannel(liveChannelGenericRequest);
1206     }
1207 
1208     @Override
1209     public List<LiveChannel> listLiveChannels(String bucketName) throws OSSException, ClientException {
1210         return liveChannelOperation.listLiveChannels(bucketName);
1211     }
1212 
1213     @Override
1214     public LiveChannelListing listLiveChannels(ListLiveChannelsRequest listLiveChannelRequest)
1215             throws OSSException, ClientException {
1216         return liveChannelOperation.listLiveChannels(listLiveChannelRequest);
1217     }
1218 
1219     @Override
1220     public List<LiveRecord> getLiveChannelHistory(String bucketName, String liveChannel)
1221             throws OSSException, ClientException {
1222         return this.getLiveChannelHistory(new LiveChannelGenericRequest(bucketName, liveChannel));
1223     }
1224 
1225     @Override
1226     public List<LiveRecord> getLiveChannelHistory(LiveChannelGenericRequest liveChannelGenericRequest)
1227             throws OSSException, ClientException {
1228         return liveChannelOperation.getLiveChannelHistory(liveChannelGenericRequest);
1229     }
1230 
1231     @Override
1232     public void generateVodPlaylist(String bucketName, String liveChannelName, String PlaylistName, long startTime,
1233                                     long endTime) throws OSSException, ClientException {
1234         this.generateVodPlaylist(
1235                 new GenerateVodPlaylistRequest(bucketName, liveChannelName, PlaylistName, startTime, endTime));
1236     }
1237 
1238     @Override
1239     public void generateVodPlaylist(GenerateVodPlaylistRequest generateVodPlaylistRequest)
1240             throws OSSException, ClientException {
1241         liveChannelOperation.generateVodPlaylist(generateVodPlaylistRequest);
1242     }
1243 
1244     @Override
1245     public OSSObject getVodPlaylist(String bucketName, String liveChannelName, long startTime,
1246                                     long endTime) throws OSSException, ClientException {
1247         return this.getVodPlaylist(
1248                 new GetVodPlaylistRequest(bucketName, liveChannelName, startTime, endTime));
1249     }
1250 
1251     @Override
1252     public OSSObject getVodPlaylist(GetVodPlaylistRequest getVodPlaylistRequest)
1253             throws OSSException, ClientException {
1254         return liveChannelOperation.getVodPlaylist(getVodPlaylistRequest);
1255     }
1256 
1257     @Override
1258     public String generateRtmpUri(String bucketName, String liveChannelName, String PlaylistName, long expires)
1259             throws OSSException, ClientException {
1260         return this.generateRtmpUri(new GenerateRtmpUriRequest(bucketName, liveChannelName, PlaylistName, expires));
1261     }
1262 
1263     @Override
1264     public String generateRtmpUri(GenerateRtmpUriRequest generateRtmpUriRequest) throws OSSException, ClientException {
1265         return liveChannelOperation.generateRtmpUri(generateRtmpUriRequest);
1266     }
1267 
1268     @Override
1269     public void createSymlink(String bucketName, String symLink, String targetObject)
1270             throws OSSException, ClientException {
1271         this.createSymlink(new CreateSymlinkRequest(bucketName, symLink, targetObject));
1272     }
1273 
1274     @Override
1275     public void createSymlink(CreateSymlinkRequest createSymlinkRequest) throws OSSException, ClientException {
1276         objectOperation.createSymlink(createSymlinkRequest);
1277     }
1278 
1279     @Override
1280     public OSSSymlink getSymlink(String bucketName, String symLink) throws OSSException, ClientException {
1281         return this.getSymlink(new GenericRequest(bucketName, symLink));
1282     }
1283 
1284     @Override
1285     public OSSSymlink getSymlink(GenericRequest genericRequest) throws OSSException, ClientException {
1286         return objectOperation.getSymlink(genericRequest);
1287     }
1288 
1289     @Override
1290     public GenericResult processObject(ProcessObjectRequest processObjectRequest) throws OSSException, ClientException {
1291         return this.objectOperation.processObject(processObjectRequest);
1292     }
1293 
1294     @Override
1295     public void setBucketRequestPayment(String bucketName, Payer payer) throws OSSException, ClientException {
1296         this.setBucketRequestPayment(new SetBucketRequestPaymentRequest(bucketName, payer));
1297     }
1298 
1299     @Override
1300     public void setBucketRequestPayment(SetBucketRequestPaymentRequest setBucketRequestPaymentRequest) throws OSSException, ClientException {
1301         this.bucketOperation.setBucketRequestPayment(setBucketRequestPaymentRequest);
1302     }
1303 
1304     @Override
1305     public GetBucketRequestPaymentResult getBucketRequestPayment(String bucketName) throws OSSException, ClientException {
1306         return this.getBucketRequestPayment(new GenericRequest(bucketName));
1307     }
1308 
1309     @Override
1310     public GetBucketRequestPaymentResult getBucketRequestPayment(GenericRequest genericRequest) throws OSSException, ClientException {
1311         return this.bucketOperation.getBucketRequestPayment(genericRequest);
1312     }
1313 
1314     @Override
1315     public void setBucketQosInfo(String bucketName, BucketQosInfo bucketQosInfo) throws OSSException, ClientException {
1316         this.setBucketQosInfo(new SetBucketQosInfoRequest(bucketName, bucketQosInfo));
1317     }
1318 
1319     @Override
1320     public void setBucketQosInfo(SetBucketQosInfoRequest setBucketQosInfoRequest) throws OSSException, ClientException {
1321         this.bucketOperation.setBucketQosInfo(setBucketQosInfoRequest);
1322     }
1323 
1324     @Override
1325     public BucketQosInfo getBucketQosInfo(String bucketName) throws OSSException, ClientException {
1326         return this.getBucketQosInfo(new GenericRequest(bucketName));
1327     }
1328 
1329     @Override
1330     public BucketQosInfo getBucketQosInfo(GenericRequest genericRequest) throws OSSException, ClientException {
1331         return this.bucketOperation.getBucketQosInfo(genericRequest);
1332     }
1333 
1334     @Override
1335     public void deleteBucketQosInfo(String bucketName) throws OSSException, ClientException {
1336         this.deleteBucketQosInfo(new GenericRequest(bucketName));
1337     }
1338 
1339     @Override
1340     public void deleteBucketQosInfo(GenericRequest genericRequest) throws OSSException, ClientException {
1341         this.bucketOperation.deleteBucketQosInfo(genericRequest);
1342     }
1343 
1344     @Override
1345     public UserQosInfo getUserQosInfo() throws OSSException, ClientException {
1346         return this.bucketOperation.getUserQosInfo();
1347     }
1348 
1349     @Override
1350     public SetAsyncFetchTaskResult setAsyncFetchTask(String bucketName,
1351                                                      AsyncFetchTaskConfiguration asyncFetchTaskConfiguration) throws OSSException, ClientException {
1352         return this.setAsyncFetchTask(new SetAsyncFetchTaskRequest(bucketName, asyncFetchTaskConfiguration));
1353     }
1354 
1355     @Override
1356     public SetAsyncFetchTaskResult setAsyncFetchTask(SetAsyncFetchTaskRequest setAsyncFetchTaskRequest)
1357             throws OSSException, ClientException {
1358         return this.bucketOperation.setAsyncFetchTask(setAsyncFetchTaskRequest);
1359     }
1360 
1361     @Override
1362     public GetAsyncFetchTaskResult getAsyncFetchTask(String bucketName, String taskId)
1363             throws OSSException, ClientException {
1364         return this.getAsyncFetchTask(new GetAsyncFetchTaskRequest(bucketName, taskId));
1365     }
1366 
1367     @Override
1368     public GetAsyncFetchTaskResult getAsyncFetchTask(GetAsyncFetchTaskRequest getAsyncFetchTaskRequest)
1369             throws OSSException, ClientException {
1370         return this.bucketOperation.getAsyncFetchTask(getAsyncFetchTaskRequest);
1371     }
1372 
1373 //    @Override
1374 //    public CreateVpcipResult createVpcip(CreateVpcipRequest createVpcipRequest) throws OSSException, ClientException {
1375 //        return bucketOperation.createVpcip(createVpcipRequest);
1376 //    }
1377 //
1378 //    @Override
1379 //    public List<Vpcip> listVpcip() throws OSSException, ClientException {
1380 //        return bucketOperation.listVpcip();
1381 //    }
1382 //
1383 //    @Override
1384 //    public void deleteVpcip(DeleteVpcipRequest deleteVpcipRequest) throws OSSException, ClientException {
1385 //        bucketOperation.deleteVpcip(deleteVpcipRequest);
1386 //    }
1387 //
1388 //    @Override
1389 //    public void createBucketVpcip(CreateBucketVpcipRequest createBucketVpcipRequest) throws OSSException, ClientException {
1390 //        bucketOperation.createBucketVpcip(createBucketVpcipRequest);
1391 //    }
1392 //
1393 //    @Override
1394 //    public void deleteBucketVpcip(DeleteBucketVpcipRequest deleteBucketVpcipRequest) throws OSSException, ClientException {
1395 //        bucketOperation.deleteBucketVpcip(deleteBucketVpcipRequest);
1396 //    }
1397 //
1398 //    @Override
1399 //    public List<VpcPolicy> getBucketVpcip(GenericRequest genericRequest) throws OSSException, ClientException {
1400 //        return bucketOperation.getBucketVpcip(genericRequest);
1401 //    }
1402 
1403     @Override
1404     public void createUdf(CreateUdfRequest createUdfRequest) throws OSSException, ClientException {
1405         throw new ClientException("Not supported.");
1406     }
1407 
1408     @Override
1409     public UdfInfo getUdfInfo(UdfGenericRequest genericRequest) throws OSSException, ClientException {
1410         throw new ClientException("Not supported.");
1411     }
1412 
1413     @Override
1414     public List<UdfInfo> listUdfs() throws OSSException, ClientException {
1415         throw new ClientException("Not supported.");
1416     }
1417 
1418     @Override
1419     public void deleteUdf(UdfGenericRequest genericRequest) throws OSSException, ClientException {
1420         throw new ClientException("Not supported.");
1421     }
1422 
1423     @Override
1424     public void uploadUdfImage(UploadUdfImageRequest uploadUdfImageRequest) throws OSSException, ClientException {
1425         throw new ClientException("Not supported.");
1426     }
1427 
1428     @Override
1429     public List<UdfImageInfo> getUdfImageInfo(UdfGenericRequest genericRequest) throws OSSException, ClientException {
1430         throw new ClientException("Not supported.");
1431     }
1432 
1433     @Override
1434     public void deleteUdfImage(UdfGenericRequest genericRequest) throws OSSException, ClientException {
1435         throw new ClientException("Not supported.");
1436     }
1437 
1438     @Override
1439     public void createUdfApplication(CreateUdfApplicationRequest createUdfApplicationRequest)
1440             throws OSSException, ClientException {
1441         throw new ClientException("Not supported.");
1442     }
1443 
1444     @Override
1445     public UdfApplicationInfo getUdfApplicationInfo(UdfGenericRequest genericRequest)
1446             throws OSSException, ClientException {
1447         throw new ClientException("Not supported.");
1448     }
1449 
1450     @Override
1451     public List<UdfApplicationInfo> listUdfApplications() throws OSSException, ClientException {
1452         throw new ClientException("Not supported.");
1453     }
1454 
1455     @Override
1456     public void deleteUdfApplication(UdfGenericRequest genericRequest) throws OSSException, ClientException {
1457         throw new ClientException("Not supported.");
1458     }
1459 
1460     @Override
1461     public void upgradeUdfApplication(UpgradeUdfApplicationRequest upgradeUdfApplicationRequest)
1462             throws OSSException, ClientException {
1463         throw new ClientException("Not supported.");
1464     }
1465 
1466     @Override
1467     public void resizeUdfApplication(ResizeUdfApplicationRequest resizeUdfApplicationRequest)
1468             throws OSSException, ClientException {
1469         throw new ClientException("Not supported.");
1470     }
1471 
1472     @Override
1473     public UdfApplicationLog getUdfApplicationLog(GetUdfApplicationLogRequest getUdfApplicationLogRequest)
1474             throws OSSException, ClientException {
1475         throw new ClientException("Not supported.");
1476     }
1477 
1478     @Override
1479     public void shutdown() {
1480         try {
1481             serviceClient.shutdown();
1482         } catch (Exception e) {
1483             logException("shutdown throw exception: ", e);
1484         }
1485     }
1486 
1487 }
重写OSS

2、操作工具类

 1 import java.io.*;
 2 import java.net.URL;
 3 import java.util.Calendar;
 4 
 5 public class AliyunOSSUtils {
 6 
 7     private  String endPoint;
 8 
 9     private  String accessKeyId;
10 
11     private  String accessKeySecret;
12 
13     private OSSClient ossClient;
14 
15     public AliyunOSSUtils(String endPoint,String accessKeyId,String accessKeySecret)
16     {
17         this.endPoint=endPoint;
18         this.accessKeyId=accessKeyId;
19         this.accessKeySecret=accessKeySecret;
20         // init OSSclient
21         ossClient=new OSSClient(endPoint,accessKeyId,accessKeySecret);
22     }
23     /**
24      * 上传文件
25      * @param bucketName OSS-bucketName
26      * @param objectName 上传对象名称包含文件夹名称,如 1.jpg,要上传到2020-02-25文件夹下,则值为 2020-02-25/1.jpg
27      * @param inputStream 需要上传文件的文件流
28      * */
29     public void putFile(String bucketName, String objectName,InputStream inputStream)
30     {
31         ossClient.putObject(bucketName, objectName, inputStream);
32         ossClient.shutdown();
33     }
34 
35     /**
36      * 获取临时文件地址
37      * @param bucketName OSS-bucketName
38      * @param objectName 文件地址 如有文件夹则拼接地址  2020-02-25/1.jpg
39      * @param time  链接生效时间 单位:分钟
40      * */
41     public URL getFilePath(String bucketName,String objectName,Integer time)
42     {
43         // 该链接生成的过期时间
44         Calendar calendar=Calendar.getInstance();
45         calendar.add(Calendar.MINUTE,time);
46         URL url=ossClient.generatePresignedUrl(bucketName,objectName,calendar.getTime());
47         ossClient.shutdown();
48         return url;
49     }
50 
51     /**
52      * 删除文件释放资源
53      * @param bucketName OSS-bucketName
54      * @param objectName  文件地址 如有文件夹则拼接地址  2020-02-25/1.jpg
55      * */
56     public void delFile(String bucketName,String objectName)
57     {
58         ossClient.deleteObject(bucketName,objectName);
59         ossClient.shutdown();
60     }
61 }
AliyunOSSUtils
原文地址:https://www.cnblogs.com/rolayblog/p/12365516.html