Beispiel #1
0
        /// <summary>
        /// Full path to the recording file
        /// </summary>
        /// <param name="request"></param>
        /// <param name="resource"></param>
        /// <param name="session"></param>
        /// <returns></returns>
        public static string RecordingFullPath(IShippingApiRequest request, string resource, ISession session)
        {
#pragma warning disable CS0618
            var dirname = session.RecordPath;
#pragma warning restore CS0618
            var uriBuilder = new StringBuilder(resource);
            ShippingApiRequest.SubstitueResourceParameters(request, uriBuilder);
            var pathBuilder   = new StringBuilder("/");
            var uriComponents = uriBuilder.ToString().Split('/');
            for (int i = 1; i < Math.Min(3, uriComponents.Length); i++)
            {
                pathBuilder.Append(uriComponents[i]);
                pathBuilder.Append(Path.DirectorySeparatorChar);
            }
            var fileNameBuilder = new StringBuilder();
            for (int i = 3; i < uriComponents.Length; i++)
            {
                fileNameBuilder.Append(uriComponents[i]);
                fileNameBuilder.Append('_');
            }
            var    s        = fileNameBuilder.ToString().ToLower();
            string fileName = "";
            if (s.Length > 0)
            {
                fileName = s.Substring(0, s.Length - 1)
                           .Replace('?', '-')
                           .Replace('&', '-')
                           .Replace('=', '.');
            }

            // At this point
            // dirname is base directory
            // pathBuilder.ToString() is the relative path based on 2 levels of uri path
            // fileName is the name built from the remaining uri path and any parameters
            return(dirname + pathBuilder.ToString() + fileName + request.RecordingSuffix + ".txt");
        }