<commit_before>﻿/*
 * Copyright (C) Alibaba Cloud Computing
 * All rights reserved.
 * 
 * 版权所有 （C）阿里云计算有限公司
 */

using System;
using System.Collections.Generic;
using Aliyun.OSS.Util;

namespace Aliyun.OSS
{
    /// <summary>
    /// OSS中Object的元数据。
    /// <para>
    /// 包含了用户自定义的元数据，也包含了OSS发送的标准HTTP头(如Content-Length, ETag等）。
    /// </para>
    /// </summary>
    public class ObjectMetadata
    {      
        private readonly IDictionary<string, string> _userMetadata = 
            new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
        private readonly IDictionary<string, object> _metadata = 
            new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);

        /// <summary>
        /// 256位的Aes加密算法
        /// </summary>
        public const string Aes256ServerSideEncryption = "AES256";

        /// <summary>
        /// 获取用户自定义的元数据。
        /// </summary>
        /// <remarks>
        /// OSS内部保存用户自定义的元数据时，会以x-oss-meta-为请求头的前缀。
        /// 但用户通过该接口处理用户自定义元数据里，不需要加上前缀“x-oss-meta-”。
        /// 同时，元数据字典的键名是不区分大小写的，并且在从服务器端返回时会全部以小写形式返回，
        /// 即使在设置时给定了大写字母。比如键名为：MyUserMeta，通过GetObjectMetadata接口
        /// 返回时键名会变为：myusermeta。
        /// </remarks>
        public IDictionary<string, string> UserMetadata
        {
            get { return _userMetadata; }
        }

        /// <summary>
        /// 获取Last-Modified请求头的值，表示Object最后一次修改的时间。
        /// </summary>
        public DateTime LastModified
        {
            get
            {
                return _metadata.ContainsKey(HttpHeaders.LastModified)
                    ? (DateTime)_metadata[HttpHeaders.LastModified] : DateTime.MinValue;
            }
            internal set
            {
                _metadata[HttpHeaders.LastModified] = value;
            }
        }

        /// <summary>
        /// 获取Expires请求头，表示Object的过期时间。
        /// 如果Object没有定义过期时间，则返回null。
        /// </summary>
        public DateTime ExpirationTime
        {
            get
            {
                return _metadata.ContainsKey(HttpHeaders.Expires)
                     ? (DateTime)_metadata[HttpHeaders.Expires] : DateTime.MinValue;
            }
            internal set
            {
                _metadata[HttpHeaders.Expires] = value;
            }<commit_msg>set object meta data expirestime to public<commit_after>﻿/*
 * Copyright (C) Alibaba Cloud Computing
 * All rights reserved.
 * 
 * 版权所有 （C）阿里云计算有限公司
 */

using System;
using System.Collections.Generic;
using Aliyun.OSS.Util;

namespace Aliyun.OSS
{
    /// <summary>
    /// OSS中Object的元数据。
    /// <para>
    /// 包含了用户自定义的元数据，也包含了OSS发送的标准HTTP头(如Content-Length, ETag等）。
    /// </para>
    /// </summary>
    public class ObjectMetadata
    {      
        private readonly IDictionary<string, string> _userMetadata = 
            new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
        private readonly IDictionary<string, object> _metadata = 
            new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);

        /// <summary>
        /// 256位的Aes加密算法
        /// </summary>
        public const string Aes256ServerSideEncryption = "AES256";

        /// <summary>
        /// 获取用户自定义的元数据。
        /// </summary>
        /// <remarks>
        /// OSS内部保存用户自定义的元数据时，会以x-oss-meta-为请求头的前缀。
        /// 但用户通过该接口处理用户自定义元数据里，不需要加上前缀“x-oss-meta-”。
        /// 同时，元数据字典的键名是不区分大小写的，并且在从服务器端返回时会全部以小写形式返回，
        /// 即使在设置时给定了大写字母。比如键名为：MyUserMeta，通过GetObjectMetadata接口
        /// 返回时键名会变为：myusermeta。
        /// </remarks>
        public IDictionary<string, string> UserMetadata
        {
            get { return _userMetadata; }
        }

        /// <summary>
        /// 获取Last-Modified请求头的值，表示Object最后一次修改的时间。
        /// </summary>
        public DateTime LastModified
        {
            get
            {
                return _metadata.ContainsKey(HttpHeaders.LastModified)
                    ? (DateTime)_metadata[HttpHeaders.LastModified] : DateTime.MinValue;
            }
            internal set
            {
                _metadata[HttpHeaders.LastModified] = value;
            }
        }

        /// <summary>
        /// 获取Expires请求头，表示Object的过期时间。
        /// 如果Object没有定义过期时间，则返回null。
        /// </summary>
        public DateTime ExpirationTime
        {
            get
            {
                return _metadata.ContainsKey(HttpHeaders.Expires)
                     ? (DateTime)_metadata[HttpHeaders.Expires] : DateTime.MinValue;
            }
            set
            {
                _metadata[HttpHeaders.Expires] = value;
            }
{'fraction_non_alphanumeric': 0.11115935735996527, 'fraction_numerical': 0.0039079461571862786, 'mean_word_length': 1.6847319347319347, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3839408', 'n_tokens_mistral': 1583, 'n_tokens_neox': 1626, 'n_words': 207}