aliyun-net-sdk-core/Utils/ParameterHelper.cs (149 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
using System;
using System.Web;
using System.Text;
using System.Globalization;
using System.Security.Cryptography;
using System.Collections.Generic;
using Aliyun.Acs.Core.Http;
namespace Aliyun.Acs.Core.Utils
{
public class ParameterHelper
{
private const string ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
public static string FormatIso8601Date(DateTime date)
{
return date.ToUniversalTime()
.ToString(ISO8601_DATE_FORMAT, CultureInfo.CreateSpecificCulture("en-US"));
}
public static string GetRFC2616Date(DateTime datetime)
{
if (null == datetime)
{
datetime = DateTime.UtcNow;
}
return datetime.ToUniversalTime().GetDateTimeFormats('r')[0];
}
public static string Md5Sum(byte[] buff)
{
using (MD5 md5 = new MD5CryptoServiceProvider())
{
var output = md5.ComputeHash(buff);
return BitConverter.ToString(output).Replace("-", "");
}
}
public static string Md5SumAndBase64(byte[] buff)
{
using (MD5 md5 = new MD5CryptoServiceProvider())
{
var output = md5.ComputeHash(buff);
// string md5Str = BitConverter.ToString(output).Replace("-", "");
// System.Text.Encoding encode = System.Text.Encoding.ASCII;
// byte[] bytedata = System.Text.Encoding.ASCII.GetBytes(md5Str);
return Convert.ToBase64String(output, 0, output.Length);
}
}
public static string FormatTypeToString(FormatType? formatType)
{
if (FormatType.XML == formatType)
{
return "application/xml";
}
if (FormatType.JSON == formatType)
{
return "application/json";
}
if (FormatType.FORM == formatType)
{
return "application/x-www-form-urlencoded";
}
return "application/octet-stream";
}
public static FormatType? StingToFormatType(string format)
{
if (format.ToLower().Equals("application/xml") || format.ToLower().Equals("text/xml"))
{
return FormatType.XML;
}
if (format.ToLower().Equals("application/json"))
{
return FormatType.JSON;
}
if (format.ToLower().Equals("application/x-www-form-urlencoded"))
{
return FormatType.FORM;
}
return FormatType.RAW;
}
public static MethodType? StringToMethodType(string method)
{
method = method.ToUpper();
switch (method)
{
case "GET":
{
return MethodType.GET;
}
case "PUT":
{
return MethodType.PUT;
}
case "POST":
{
return MethodType.POST;
}
case "DELETE":
{
return MethodType.DELETE;
}
case "HEAD":
{
return MethodType.HEAD;
}
case "OPTIONS":
{
return MethodType.OPTIONS;
}
default:
{
return null;
}
}
}
public static byte[] GetFormData(Dictionary<string, string> parameters)
{
var result = new StringBuilder();
var first = true;
foreach (var entry in parameters)
{
if (string.IsNullOrEmpty(entry.Value))
{
continue;
}
if (first)
{
first = false;
}
else
{
result.Append("&");
}
result.Append(HttpUtility.UrlEncode(entry.Key));
result.Append("=");
result.Append(HttpUtility.UrlEncode(entry.Value));
}
return Encoding.UTF8.GetBytes(result.ToString());
}
public static string ValidateEnvNotNull(string obj, string envVariableName, string paramName, string message)
{
if (obj == null)
{
if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable(envVariableName)))
{
throw new ArgumentNullException(paramName, message);
}
else
{
return Environment.GetEnvironmentVariable(envVariableName);
}
}
return obj;
}
}
}