Beispiel #1
0
  /**
   * 用于签名的字符串
   *
   * @param bucket Bucket
   * @param key 文件key
   * @param contentMd5 内容的md5值
   * @param date 日期
   * @param request 请求对象
   * @return 用于签名的字符串
   */
  public static String strToSign(
      String bucket, String key, String contentMd5, String date, HttpRequest request) {
    String contentType = request.contentType();
    if (StrUtil.isBlank(contentType)) {
      contentType = "text/plain";
      request.contentType(contentType);
      log.warn("Content-Type header is empty, use default Content-Type: {}", contentType);
    }

    return StrUtil.builder()
        .append(request.method())
        .append("\n")
        .append(StrUtil.nullToEmpty(contentMd5))
        .append("\n")
        .append(contentType)
        .append("\n")
        .append(StrUtil.nullToEmpty(date))
        .append("\n")
        .append(canonicalizedUcloudHeaders(request))
        // canonicalizedUcloudHeaders尾部带一个换行符
        .append(canonicalizedResource(bucket, key))
        .toString();
  }