/// <summary>
        /// Gets the log.
        /// </summary>
        /// <param name="buildSpecifier">The build specifier.</param>
        /// <param name="sessionToken">The session token.</param>
        /// <returns>The log data.</returns>
        public string GetLog(IBuildSpecifier buildSpecifier, string sessionToken)
        {
            // Validate the arguments
            if (buildSpecifier == null)
            {
                throw new ArgumentNullException("buildSpecifier", "buildSpecifier is null.");
            }

            // Retrieve the server configuration - this is needed to check for compression
            var serverConfig = this.GetServerUrl(buildSpecifier.ProjectSpecifier.ServerSpecifier);
            var useCompression = serverConfig.TransferLogsCompressed;

            // Retrieve the actual log
            var response = GetCruiseManager(buildSpecifier, sessionToken)
                .GetLog(buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName, useCompression);

            if (useCompression)
            {
                // Uncompress the log
                var compressionService = new ZipCompressionService();
                response = compressionService.ExpandString(response);
            }

            return response;
        }
 public void ExpandStringExpandsAString()
 {
     var service = new ZipCompressionService();
     var inputString = "eJxNxEEKwCAMBMCvrPf6m34gtGICRsWs9PvtsTDMqRb4CILLegUHruFzlQhkPEaF70abreAWyvE7vbhUFbg=";
     var expected = "This is a string to compress - with multiple data, data, data!";
     var actual = service.ExpandString(inputString);
     Assert.AreEqual(expected, actual);
 }
 public void ExpandStringValidatesInput()
 {
     var service = new ZipCompressionService();
     var error = Assert.Throws<ArgumentNullException>(() =>
     {
         service.ExpandString(null);
     });
     Assert.AreEqual("value", error.ParamName);
 }