public IResponse Do()
        {
            ConditionalGetFingerprint serverFingerprint = GetServerFingerprint();
            ConditionalGetFingerprint clientFingerprint = fingerprintFactory.BuildFromRequest(request);

            if (serverFingerprint.Equals(clientFingerprint))
            {
                return(new NotModifiedResponse(serverFingerprint));
            }

            IAction   action   = actionFactory.Create(request);
            IResponse response = action.Execute(request);

            response.ServerFingerprint = serverFingerprint;
            return(response);
        }