< Summary

Information
Class: /home/wethinkcode/student_work/csharp/GroupProject/super-cool-group/weshare-qa/GeneratedApiCode/src/Applications.WeShare.Swagger/Client/ClientUtils.cs
Assembly: Default
File(s): /home/wethinkcode/student_work/csharp/GroupProject/super-cool-group/weshare-qa/GeneratedApiCode/src/Applications.WeShare.Swagger/Client/ClientUtils.cs
Line coverage
33%
Covered lines: 26
Uncovered lines: 52
Coverable lines: 78
Total lines: 204
Line coverage: 33.3%
Branch coverage
29%
Covered branches: 16
Total branches: 54
Branch coverage: 29.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

/home/wethinkcode/student_work/csharp/GroupProject/super-cool-group/weshare-qa/GeneratedApiCode/src/Applications.WeShare.Swagger/Client/ClientUtils.cs

#LineLine coverage
 1/*
 2 * WeShare API
 3 *
 4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 5 *
 6 * The version of the OpenAPI document: 1.0
 7 * Generated by: https://github.com/openapitools/openapi-generator.git
 8 */
 9
 10
 11using System;
 12using System.Collections;
 13using System.Globalization;
 14using System.IO;
 15using System.Linq;
 16using System.Text;
 17using System.Text.RegularExpressions;
 18
 19namespace Applications.WeShare.Swagger.Client
 20{
 21    /// <summary>
 22    /// Utility functions providing some benefit to API client consumers.
 23    /// </summary>
 24    public static class ClientUtils
 25    {
 26        /// <summary>
 27        /// Sanitize filename by removing the path
 28        /// </summary>
 29        /// <param name="filename">Filename</param>
 30        /// <returns>Filename</returns>
 31        public static string SanitizeFilename(string filename)
 032        {
 033            Match match = Regex.Match(filename, @".*[/\\](.*)$");
 034            return match.Success ? match.Groups[1].Value : filename;
 035        }
 36
 37        /// <summary>
 38        /// Convert params to key/value pairs.
 39        /// Use collectionFormat to properly format lists and collections.
 40        /// </summary>
 41        /// <param name="collectionFormat">The swagger-supported collection format, one of: csv, tsv, ssv, pipes, multi<
 42        /// <param name="name">Key name.</param>
 43        /// <param name="value">Value object.</param>
 44        /// <returns>A multimap of keys with 1..n associated values.</returns>
 45        public static Multimap<string, string> ParameterToMultiMap(string collectionFormat, string name, object value)
 046        {
 047            var parameters = new Multimap<string, string>();
 48
 049            if (value is ICollection collection && collectionFormat == "multi")
 050            {
 051                foreach (var item in collection)
 052                {
 053                    parameters.Add(name, ParameterToString(item));
 054                }
 055            }
 056            else if (value is IDictionary dictionary)
 057            {
 058                if(collectionFormat == "deepObject") {
 059                    foreach (DictionaryEntry entry in dictionary)
 060                    {
 061                        parameters.Add(name + "[" + entry.Key + "]", ParameterToString(entry.Value));
 062                    }
 063                }
 064                else {
 065                    foreach (DictionaryEntry entry in dictionary)
 066                    {
 067                        parameters.Add(entry.Key.ToString(), ParameterToString(entry.Value));
 068                    }
 069                }
 070            }
 71            else
 072            {
 073                parameters.Add(name, ParameterToString(value));
 074            }
 75
 076            return parameters;
 077        }
 78
 79        /// <summary>
 80        /// If parameter is DateTime, output in a formatted string (default ISO 8601), customizable with Configuration.D
 81        /// If parameter is a list, join the list with ",".
 82        /// Otherwise just return the string.
 83        /// </summary>
 84        /// <param name="obj">The parameter (header, path, query, form).</param>
 85        /// <param name="configuration">An optional configuration instance, providing formatting options used in process
 86        /// <returns>Formatted string.</returns>
 87        public static string ParameterToString(object obj, IReadableConfiguration configuration = null)
 12688        {
 12689            if (obj is DateTime dateTime)
 90                // Return a formatted date string - Can be customized with Configuration.DateTimeFormat
 91                // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o")
 92                // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
 93                // For example: 2009-06-15T13:45:30.0000000
 094                return dateTime.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat);
 12695            if (obj is DateTimeOffset dateTimeOffset)
 96                // Return a formatted date string - Can be customized with Configuration.DateTimeFormat
 97                // Defaults to an ISO 8601, using the known as a Round-trip date/time pattern ("o")
 98                // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
 99                // For example: 2009-06-15T13:45:30.0000000
 0100                return dateTimeOffset.ToString((configuration ?? GlobalConfiguration.Instance).DateTimeFormat);
 126101            if (obj is bool boolean)
 0102                return boolean ? "true" : "false";
 126103            if (obj is ICollection collection)
 0104                return string.Join(",", collection.Cast<object>());
 105
 126106            return Convert.ToString(obj, CultureInfo.InvariantCulture);
 126107        }
 108
 109        /// <summary>
 110        /// Serializes the given object when not null. Otherwise return null.
 111        /// </summary>
 112        /// <param name="obj">The object to serialize.</param>
 113        /// <returns>Serialized string.</returns>
 114        public static string Serialize(object obj)
 0115        {
 0116            return obj != null ? Newtonsoft.Json.JsonConvert.SerializeObject(obj) : null;
 0117        }
 118
 119        /// <summary>
 120        /// Encode string in base64 format.
 121        /// </summary>
 122        /// <param name="text">string to be encoded.</param>
 123        /// <returns>Encoded string.</returns>
 124        public static string Base64Encode(string text)
 0125        {
 0126            return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text));
 0127        }
 128
 129        /// <summary>
 130        /// Convert stream to byte array
 131        /// </summary>
 132        /// <param name="inputStream">Input stream to be converted</param>
 133        /// <returns>Byte array</returns>
 134        public static byte[] ReadAsBytes(Stream inputStream)
 0135        {
 0136            using (var ms = new MemoryStream())
 0137            {
 0138                inputStream.CopyTo(ms);
 0139                return ms.ToArray();
 140            }
 0141        }
 142
 143        /// <summary>
 144        /// Select the Content-Type header's value from the given content-type array:
 145        /// if JSON type exists in the given array, use it;
 146        /// otherwise use the first one defined in 'consumes'
 147        /// </summary>
 148        /// <param name="contentTypes">The Content-Type array to select from.</param>
 149        /// <returns>The Content-Type header to use.</returns>
 150        public static string SelectHeaderContentType(string[] contentTypes)
 34151        {
 34152            if (contentTypes.Length == 0)
 27153                return null;
 154
 28155            foreach (var contentType in contentTypes)
 7156            {
 7157                if (IsJsonMime(contentType))
 7158                    return contentType;
 0159            }
 160
 0161            return contentTypes[0]; // use the first content type specified in 'consumes'
 34162        }
 163
 164        /// <summary>
 165        /// Select the Accept header's value from the given accepts array:
 166        /// if JSON exists in the given array, use it;
 167        /// otherwise use all of them (joining into a string)
 168        /// </summary>
 169        /// <param name="accepts">The accepts array to select from.</param>
 170        /// <returns>The Accept header to use.</returns>
 171        public static string SelectHeaderAccept(string[] accepts)
 34172        {
 34173            if (accepts.Length == 0)
 2174                return null;
 175
 32176            if (accepts.Contains("application/json", StringComparer.OrdinalIgnoreCase))
 32177                return "application/json";
 178
 0179            return string.Join(",", accepts);
 34180        }
 181
 182        /// <summary>
 183        /// Provides a case-insensitive check that a provided content type is a known JSON-like content type.
 184        /// </summary>
 1185        public static readonly Regex JsonRegex = new Regex("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*
 186
 187        /// <summary>
 188        /// Check if the given MIME is a JSON MIME.
 189        /// JSON MIME examples:
 190        ///    application/json
 191        ///    application/json; charset=UTF8
 192        ///    APPLICATION/JSON
 193        ///    application/vnd.company+json
 194        /// </summary>
 195        /// <param name="mime">MIME</param>
 196        /// <returns>Returns True if MIME type is json.</returns>
 197        public static bool IsJsonMime(string mime)
 7198        {
 7199            if (string.IsNullOrWhiteSpace(mime)) return false;
 200
 7201            return JsonRegex.IsMatch(mime) || mime.Equals("application/json-patch+json");
 7202        }
 203    }
 204}