docs: public CreateMediaResourceResponse createMediaResource(
              String sourceBucket,
              String sourceKey,
              String title,
              String description,
              String transcodingPresetGroupName,
              int priority,
              String mode) {
          checkStringNotEmpty(sourceBucket, "sourceBucket should not be null or empty!");
          checkStringNotEmpty(sourceKey, "key should not be null or empty!");
  
          // check if the key exist
          ObjectMetadata metaData = bosClient.getObjectMetadata(sourceBucket, sourceKey);
          checkIsTrue(metaData != null && metaData.getContentLength() > 0,
                  "The object corresponding to [bucket] = " 
                  + sourceBucket + ", [key] = " + sourceKey + " doesn't exist.");
  
          // try get file extension
          String sourceExtension = null;
          sourceExtension = getFileExtension(sourceKey);
          // generate media Id
          GenerateMediaIdResponse generateMediaIdresponse;
          if (mode == null) {
              generateMediaIdresponse = applyMedia();
          } else {
              generateMediaIdresponse = applyMedia(mode);
          }
          String mediaId = generateMediaIdresponse.getMediaId();
          String targetBucket = generateMediaIdresponse.getSourceBucket();
          String targetKey = generateMediaIdresponse.getSourceKey();
  
          // copy to temp bucket
          bosClient.copyObject(sourceBucket, sourceKey, targetBucket, targetKey);
  
          // create mediaId
          InternalCreateMediaRequest request =
                  new InternalCreateMediaRequest()
                          .withMediaId(mediaId)
                          .withTitle(title)
                          .withDescription(description)
                          .withSourceExtension(sourceExtension)
                          .withTranscodingPresetGroupName(transcodingPresetGroupName)
                          .withPriority(priority);
          InternalCreateMediaResponse internalResponse = processMedia(request);
  
          CreateMediaResourceResponse response = new CreateMediaResourceResponse();
          response.setMediaId(internalResponse.getMediaId());
  
          return response;
      }