WeddingThankYou 1.0.0.0
결혼식 이후 감사 인사와 사진, 계좌 안내, 연락처를 모바일 페이지로 전달하는 감사장 서비스입니다.
로딩중...
검색중...
일치하는것 없음
MediaPolicy.cs
이 파일의 문서화 페이지로 가기
2
11public sealed class MediaPolicySettings
12{
22
32
42
61
79 {
80 var settings = new MediaPolicySettings();
81 settings.Normalize();
82 return settings;
83 }
84}
85
94public sealed class MediaTierPolicy
95{
104 public int ImageMaxCount { get; set; } = 200;
105
114 public int ImageOptimizedMaxStorageMb { get; set; } = 1024;
115
124 public int ImageOriginalMaxStorageMb { get; set; } = 0;
125
134 public int ImageMaxLongSidePx { get; set; } = 1920;
135
144 public string ImageOutputFormat { get; set; } = "WebP";
145
154 public int ImageQuality { get; set; } = 80;
155
164 public bool StripExif { get; set; } = true;
165
174 public bool KeepOriginalImages { get; set; } = false;
175
184 public int VideoMaxFileSizeMb { get; set; } = 50;
185
194 public int VideoMaxCount { get; set; } = 1;
195
204 public int VideoMaxStorageMb { get; set; } = 0;
205
214 public bool KeepOriginalVideos { get; set; } = false;
215
232 public static MediaTierPolicy CreateFreeDefault() => new()
233 {
234 ImageMaxCount = 200,
237 ImageMaxLongSidePx = 1920,
238 ImageOutputFormat = "WebP",
239 ImageQuality = 80,
240 StripExif = true,
241 KeepOriginalImages = false,
243 VideoMaxCount = 1,
245 KeepOriginalVideos = false
246 };
247
264 public static MediaTierPolicy CreatePremiumDefault() => new()
265 {
266 ImageMaxCount = 500,
269 ImageMaxLongSidePx = 2560,
270 ImageOutputFormat = "WebP",
271 ImageQuality = 85,
272 StripExif = true,
273 KeepOriginalImages = true,
274 VideoMaxFileSizeMb = 200,
275 VideoMaxCount = 6,
277 KeepOriginalVideos = true
278 };
279
296 public void Normalize(MediaTierPolicy fallback)
297 {
298 ImageMaxCount = Math.Max(0, ImageMaxCount);
301 ImageMaxLongSidePx = ImageMaxLongSidePx <= 0 ? fallback.ImageMaxLongSidePx : ImageMaxLongSidePx;
302 ImageOutputFormat = string.IsNullOrWhiteSpace(ImageOutputFormat) ? fallback.ImageOutputFormat : ImageOutputFormat.Trim();
303 ImageQuality = Math.Clamp(ImageQuality <= 0 ? fallback.ImageQuality : ImageQuality, 1, 100);
305 VideoMaxCount = Math.Max(0, VideoMaxCount);
307 }
308}
309
318public sealed class MediaPolicyOverride
319{
328 public int? ImageMaxCount { get; set; }
337 public int? ImageOptimizedMaxStorageMb { get; set; }
346 public int? ImageOriginalMaxStorageMb { get; set; }
355 public int? ImageMaxLongSidePx { get; set; }
364 public string? ImageOutputFormat { get; set; }
373 public int? ImageQuality { get; set; }
382 public bool? StripExif { get; set; }
391 public bool? KeepOriginalImages { get; set; }
400 public int? VideoMaxFileSizeMb { get; set; }
409 public int? VideoMaxCount { get; set; }
418 public int? VideoMaxStorageMb { get; set; }
427 public bool? KeepOriginalVideos { get; set; }
428
437 public bool IsEmpty =>
438 ImageMaxCount is null
441 && ImageMaxLongSidePx is null
442 && string.IsNullOrWhiteSpace(ImageOutputFormat)
443 && ImageQuality is null
444 && StripExif is null
445 && KeepOriginalImages is null
446 && VideoMaxFileSizeMb is null
447 && VideoMaxCount is null
448 && VideoMaxStorageMb is null
449 && KeepOriginalVideos is null;
450}
451
460public sealed class EffectiveMediaPolicy
461{
470 public int ImageMaxCount { get; init; }
479 public int ImageOptimizedMaxStorageMb { get; init; }
488 public int ImageOriginalMaxStorageMb { get; init; }
497 public int ImageMaxLongSidePx { get; init; }
506 public string ImageOutputFormat { get; init; } = "WebP";
515 public int ImageQuality { get; init; }
524 public bool StripExif { get; init; }
533 public bool KeepOriginalImages { get; init; }
542 public int VideoMaxFileSizeMb { get; init; }
551 public int VideoMaxCount { get; init; }
560 public int VideoMaxStorageMb { get; init; }
569 public bool KeepOriginalVideos { get; init; }
570
579 public long VideoMaxFileSizeBytes => VideoMaxFileSizeMb <= 0 ? long.MaxValue : VideoMaxFileSizeMb * 1024L * 1024L;
580
589 public long ImageOptimizedMaxStorageBytes => ImageOptimizedMaxStorageMb <= 0 ? long.MaxValue : ImageOptimizedMaxStorageMb * 1024L * 1024L;
590
599 public long VideoMaxStorageBytes => VideoMaxStorageMb <= 0 ? long.MaxValue : VideoMaxStorageMb * 1024L * 1024L;
600
649 public static EffectiveMediaPolicy From(MediaTierPolicy tier, MediaPolicyOverride? accountOverride, int? legacyVideoSizeMb, int? legacyVideoCount)
650 {
651 return new EffectiveMediaPolicy
652 {
653 ImageMaxCount = accountOverride?.ImageMaxCount ?? tier.ImageMaxCount,
657 ImageOutputFormat = string.IsNullOrWhiteSpace(accountOverride?.ImageOutputFormat)
658 ? tier.ImageOutputFormat
659 : accountOverride!.ImageOutputFormat!.Trim(),
660 ImageQuality = Math.Clamp(accountOverride?.ImageQuality ?? tier.ImageQuality, 1, 100),
661 StripExif = accountOverride?.StripExif ?? tier.StripExif,
663 VideoMaxFileSizeMb = accountOverride?.VideoMaxFileSizeMb ?? legacyVideoSizeMb ?? tier.VideoMaxFileSizeMb,
664 VideoMaxCount = accountOverride?.VideoMaxCount ?? legacyVideoCount ?? tier.VideoMaxCount,
665 VideoMaxStorageMb = accountOverride?.VideoMaxStorageMb ?? tier.VideoMaxStorageMb,
667 };
668 }
669}
static MediaPolicySettings CreateDefault()
void Normalize(MediaTierPolicy fallback)
static MediaTierPolicy CreateFreeDefault()
static MediaTierPolicy CreatePremiumDefault()
static EffectiveMediaPolicy From(MediaTierPolicy tier, MediaPolicyOverride? accountOverride, int? legacyVideoSizeMb, int? legacyVideoCount)