예제 #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)
        {
            string        dirname    = session.RecordPath;
            StringBuilder uriBuilder = new StringBuilder(resource);

            ShippingApiRequest.SubstitueResourceParameters(request, uriBuilder);

            string fullPath = (dirname + uriBuilder.ToString().ToLower() + @"\")
                              .Replace('?', Path.DirectorySeparatorChar)
                              .Replace('&', Path.DirectorySeparatorChar)
                              .Replace('/', Path.DirectorySeparatorChar)
                              .Replace('=', '-');
            string fileName = "default";

            if (session == null)
            {
                session = Globals.DefaultSession;
            }

            foreach (var h in request.GetHeaders())
            {
                if (h.Item3.ToLower().Equals("authorization"))
                {
                    if (fileName.Equals("default"))
                    {
                        fileName = h.Item2.Substring(0, 8).ToLower();
                    }
                }
                if (h.Item1.Name.ToLower().Equals("x-pb-transactionid"))
                {
                    fileName = h.Item2.ToLower();
                }
            }
            fileName += request.RecordingSuffix;
            fileName += ".http";
            return(fullPath + Path.DirectorySeparatorChar + fileName);
        }
예제 #2
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");
        }