From 6528a4410452e7b0abd096340549ed100d0517e6 Mon Sep 17 00:00:00 2001
From: xuty <xty50337@hotmail.com>
Date: Sat, 14 Aug 2021 00:29:23 +0000
Subject: [PATCH] use rfc7231 time in CopyConditions

---
 lib/src/minio_models.dart |  5 +++--
 lib/src/utils.dart        | 11 +++++++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/src/minio_models.dart b/lib/src/minio_models.dart
index 3b9cc58..801ca1d 100644
--- a/lib/src/minio_models.dart
+++ b/lib/src/minio_models.dart
@@ -1,5 +1,6 @@
 import 'package:minio/models.dart';
 import 'package:minio/src/minio_errors.dart';
+import 'package:minio/src/utils.dart';
 import 'package:xml/xml.dart';
 
 import '../models.dart';
@@ -91,11 +92,11 @@ class CopyConditions {
   String? matchETagExcept;
 
   void setModified(DateTime date) {
-    modified = date.toUtc().toIso8601String();
+    modified = toRfc7231Time(date.toUtc());
   }
 
   void setUnmodified(DateTime date) {
-    unmodified = date.toUtc().toIso8601String();
+    unmodified = toRfc7231Time(date.toUtc());
   }
 
   void setMatchETag(String etag) {
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 8ae8e00..67fdde0 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -91,8 +91,15 @@ String trimDoubleQuote(String str) {
 }
 
 DateTime parseRfc7231Time(String time) {
-  final format = DateFormat('EEE, dd MMM yyyy hh:mm:ss zzz');
-  return format.parse(time);
+  final format = DateFormat('EEE, dd MMM yyyy HH:mm:ss');
+  final isUtc = time.endsWith('GMT');
+  return format.parse(time, isUtc);
+}
+
+String toRfc7231Time(DateTime time) {
+  final format = DateFormat('EEE, dd MMM yyyy HH:mm:ss');
+  final result = format.format(time);
+  return time.isUtc ? result + ' GMT' : result;
 }
 
 List<List<T>> groupList<T>(List<T> list, int maxMembers) {
-- 
GitLab