Beispiel #1
0
const String SAX2AttributesImpl::getValue(const String & qName) const
{
  unsigned int  i;
  unsigned int  size = (unsigned int)attrs.size();

  for(i = 0; i < size; i++)
  {
    String lQName( Unmarshaller::newString( attrs[i].qname ) );
    if(qName == lQName)
    {
      String lValue( Unmarshaller::newString( attrs[i].value ) ); 
      return lValue;
    }
  }
  return "";
}
/*
    Generate a value given an integer, using formatting defined within this class.
    The formatting mainly applies if formatting as a string. For example, what is
    the number base? should a sign always be included? are leading zeros requried?
    The formatting could include properties related to other types. For example, generate
    an error if attempting to convert a negative integer to an unsigned integer.
*/
QVariant QEIntegerFormatting::formatValue( const long &integerValue, generic::generic_types valueType ) {
    switch( valueType ) {
        case generic::GENERIC_STRING :
        {
            QString string = QString::number( integerValue, radix);
            QVariant sValue( string );
            return sValue;
        }
        case generic::GENERIC_SHORT :
        case generic::GENERIC_LONG :
        {
            QVariant lValue( (qlonglong)integerValue );
            return lValue;
        }
        case generic::GENERIC_UNSIGNED_SHORT :
        case generic::GENERIC_UNSIGNED_CHAR :
        case generic::GENERIC_UNSIGNED_LONG :
        {
            qulonglong unsignedIntegerValue;
            ( integerValue < 0 ) ? unsignedIntegerValue=0 : unsignedIntegerValue=integerValue;
            QVariant ulValue( unsignedIntegerValue );
            return ulValue;
        }
        case generic::GENERIC_FLOAT :
        case generic::GENERIC_DOUBLE :
        {
            QVariant dValue( (double)integerValue );
            return dValue;
        }
        case generic::GENERIC_UNKNOWN :
        default :
        {
            //qDebug() << "QEIntegerFormatting::formatValue() Unknown value 'Generic' type: " << valueType;
            QVariant unknown;
            return unknown;
        }
    }
    //qDebug() << "QEIntegerFormatting::formatValue() Unknown value 'Generic' type: " << valueType;
    QVariant unknown;
    return unknown;
}
Beispiel #3
0
void FastCGITransport::onHeadersComplete() {
  m_requestURI = getRawHeader("REQUEST_URI");
  m_remoteHost = getRawHeader("REMOTE_HOST");
  m_remoteAddr = getRawHeader("REMOTE_ADDR");
  m_serverName = getRawHeader("SERVER_NAME");
  m_serverAddr = getRawHeader("SERVER_ADDR");
  m_extendedMethod = getRawHeader("REQUEST_METHOD");
  m_httpVersion = getRawHeader("HTTP_VERSION");
  m_documentRoot = getRawHeader("DOCUMENT_ROOT") + "/";

  try {
    int remote_port = std::stoi(getRawHeader("REMOTE_PORT"));
    if (remote_port < std::numeric_limits<decltype(m_remotePort)>::min() ||
        remote_port > std::numeric_limits<decltype(m_remotePort)>::max()) {
      m_remotePort = 0;
    }
    m_remotePort = remote_port;
  } catch (std::invalid_argument&) {
    m_remotePort = 0;
  } catch (std::out_of_range&) {
    m_remotePort = 0;
  }

  auto value = getRawHeader("HTTPS");
  if (!value.empty()) {
    std::string lValue(value);
    boost::to_lower(lValue);
    // IIS sets this value but sets it to off when SSL is off.
    if (lValue.compare("off") != 0) {
      setSSL();
    }
  }

  try {
    m_serverPort = std::stoi(getRawHeader("SERVER_PORT"));
  } catch (std::invalid_argument&) {
    m_serverPort = 0;
  } catch (std::out_of_range&) {
    m_serverPort = 0;
  }

  if (m_extendedMethod == "GET") {
    m_method = Method::GET;
  } else if (m_extendedMethod == "POST") {
    m_method = Method::POST;
  } else if (m_extendedMethod == "HEAD") {
    m_method = Method::HEAD;
  } else {
    m_method = Method::Unknown;
  }

  try {
    m_requestSize = std::stoi(getRawHeader("CONTENT_LENGTH"));
  } catch (std::invalid_argument&) {
    m_requestSize = 0;
  } catch (std::out_of_range&) {
    m_requestSize = 0;
  }

  std::string pathTranslated = getRawHeader("PATH_TRANSLATED");
  std::string documentRoot = getRawHeader("DOCUMENT_ROOT");
  // use PATH_TRANSLATED - DOCUMENT_ROOT if it is valid instead of SCRIPT_NAME
  // for mod_fastcgi support
  if (!pathTranslated.empty() && !documentRoot.empty() &&
      pathTranslated.find(documentRoot) == 0) {
    m_serverObject = pathTranslated.substr(documentRoot.length());
  } else {
    m_serverObject = getRawHeader("SCRIPT_NAME");
  }

  std::string queryString = getRawHeader("QUERY_STRING");
  if (!queryString.empty()) {
    m_serverObject += "?" + queryString;
  }

  m_connection->handleRequest(m_id);
}
/*
    Generate a value given a floating point number, using formatting defined within this class.
    The formatting mainly applies if formatting as a string. For example, was is
    the number base? should a sign always be included? are leading zeros requried?
    The formatting could include properties related to other types. For example, generate
    an error if attempting to convert a negative floating point number to an unsigned integer.
*/
QVariant QEFloatingFormatting::formatValue( const double &floatingValue, generic::generic_types valueType ) {
    switch( valueType ) {
        case generic::GENERIC_DOUBLE :
        case generic::GENERIC_FLOAT :
        {
            QVariant dValue( floatingValue );
            return dValue;
        }
        case generic::GENERIC_LONG :
        {
            qlonglong integerValue;
            if( floatingValue < (double)LONG_MIN )
                integerValue = LONG_MIN;
            else if( floatingValue > (double)LONG_MAX )
                integerValue = LONG_MAX;
            else
                integerValue = (qlonglong)floatingValue;

            QVariant lValue( integerValue );
            return lValue;
        }
        case generic::GENERIC_SHORT :
        {
            qlonglong integerValue;
            if( floatingValue < (double)SHRT_MIN )
                integerValue = SHRT_MIN;
            else if( floatingValue > (double)SHRT_MAX )
                integerValue = SHRT_MAX;
            else
                integerValue = (qlonglong)floatingValue;

            QVariant lValue( integerValue );
            return lValue;
        }
        case generic::GENERIC_UNSIGNED_LONG :
        {
            qulonglong unsignedIntegerValue;
            if( floatingValue < 0 )
                unsignedIntegerValue = 0;
            else if( floatingValue > (double)ULONG_MAX )
                unsignedIntegerValue = ULONG_MAX;
            else
                unsignedIntegerValue = (qulonglong)floatingValue;

            QVariant ulValue( unsignedIntegerValue );
            return ulValue;
        }
        case generic::GENERIC_UNSIGNED_SHORT :
        {
            qulonglong unsignedIntegerValue;
            if( floatingValue < 0 )
                unsignedIntegerValue = 0;
            else if( floatingValue > (double)USHRT_MAX )
                unsignedIntegerValue = USHRT_MAX;
            else
                unsignedIntegerValue = (qulonglong)floatingValue;

            QVariant ulValue( unsignedIntegerValue );
            return ulValue;
        }
        case generic::GENERIC_UNSIGNED_CHAR :
        {
            qulonglong unsignedIntegerValue;
            if( floatingValue < 0 )
                unsignedIntegerValue = 0;
            else if( floatingValue > (double)UCHAR_MAX )
                unsignedIntegerValue = UCHAR_MAX;
            else
                unsignedIntegerValue = (qulonglong)floatingValue;

            QVariant ulValue( unsignedIntegerValue );
            return ulValue;
        }
        case generic::GENERIC_STRING :
        {
            QString string = QString::number( floatingValue, getFormatChar(), precision );
            QVariant sValue( string );
            return sValue;
        }
        case generic::GENERIC_UNKNOWN :
        {
        }
        default :
        {
            //qDebug() << "QEFloatingFormatting::formatValue() Unknown value 'Generic' type: " << valueType;
            QVariant unknown;
            return unknown;
        }
    }
    //qDebug() << "QEFloatingFormatting::formatValue() Unknown value 'Generic' type: " << valueType;
    QVariant unknown;
    return unknown;
}