void CgiParser::readMultipartData(WebRequest& request, const std::string type, ::int64_t len) { std::string boundary; if (!fishValue(type, boundary_e, boundary)) throw WException("Could not find a boundary for multipart data."); boundary = "--" + boundary; buflen_ = 0; left_ = len; spoolStream_ = 0; currentKey_.clear(); if (!parseBody(request, boundary)) return; for (;;) { if (!parseHead(request)) break; if (!parseBody(request,boundary)) break; } }
HtmlParser(const std::string &file_name) : _result(false) { std::string title; std::string body; Tree tr; html::ParserDom parser; parser.parse(getHtmlString(file_name)); tr = parser.getTree(); TreeIter it = tr.begin(); TreeIter end = tr.end(); _root_depth = tr.depth(it); while (it != end) { std::string shift = getShift(tr.depth(it)); if (not it->tagName().empty() && not it->isComment()) { if (it->isTag()) { if (it->tagName() == "head") { title = parseHead(tr, it); } if (it->tagName() == "body") { body = (b::format("<![CDATA[\n%s%s%s%s%s%s%s%s]]>") % shift % it->text() % "\n" % parseBody(tr, it) % shift % it->closingText() % "\n" % shift ).str(); } } } ++it; } b::format res = b::format( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<items>\n" " <snip1 type=\"contenttype\">\n" " <title type=\"field\">\n" " %s\n" " </title>\n" " <body type=\"field\">\n" " <value>\n" " %s\n" " </value>\n" " </body>\n" " </snip1>\n" "</items>\n" ) % title % body ; std::cout << res.str() << std::flush; _result = true; }
void HttpRequestParser::parse(const QString &raw) { Q_D(HttpRequestParser); clear(); d->vaild = (raw.startsWith("GET")); if (!d->vaild){ return; } auto httpInfoList = raw.split("\r\n"); parseHead(httpInfoList.takeFirst()); parseHeader(httpInfoList); }
void *NclStructureParser::parseNcl( DOMElement *parentElement, void *objGrandParent) { void *parentObject = NULL; DOMNodeList *elementNodeList; int i, size; DOMNode *node; void *elementObject = NULL; parentObject = createNcl(parentElement, objGrandParent); if (parentObject == NULL) { return NULL; } elementNodeList = parentElement->getChildNodes(); size = elementNodeList->getLength(); for (i = 0; i < size; i++) { node = elementNodeList->item(i); if (node->getNodeType()==DOMNode::ELEMENT_NODE && XMLString::compareIString(((DOMElement*)node)-> getTagName(), XMLString::transcode("head") )==0) { elementObject = parseHead((DOMElement*)node, parentObject);; if (elementObject != NULL) { addHeadToNcl(parentObject, elementObject); break; } } } for (i = 0; i < size; i++) { node = elementNodeList->item(i); if (node->getNodeType()==DOMNode::ELEMENT_NODE && XMLString::compareIString(((DOMElement*)node)-> getTagName(), XMLString::transcode("body") )==0) { elementObject = parseBody((DOMElement*)node, parentObject); if (elementObject != NULL) { posCompileBody((DOMElement*)node, elementObject); addBodyToNcl(parentObject, elementObject); break; } } } return parentObject; }
void parse(QIODevice* device) { QXmlStreamReader stream(device); parseHead(stream); while (!stream.atEnd()) { stream.readNextStartElement(); if (stream.name() == "Contents") { parseContents(stream); } } }
void Parser::parse() { parseHead(); if (!_parsed) { try { Object::ParsingContext context(object()); doParse(); _parsed = true; } catch (const ParsingException& exception) { handleParsingException(exception); } catch (const Object::ParsingContext::LockException&) { } } }
bool Parser::parseSome(int hint) { parseHead(); if (!_parsed) { try { Object::ParsingContext context(object()); if (doParseSome(hint)) { _parsed = true; } } catch (const ParsingException& exception) { handleParsingException(exception); } catch (const Object::ParsingContext::LockException&) { } } return _parsed; }
void KAsyncFetchObject::handleReadHead(KHttpRequest *rq,int got) { char *buf = hot; if (got<=0) { handleConnectError(rq,STATUS_GATEWAY_TIMEOUT,"cann't recv head from remote server"); return; } assert(hot); hot += got; switch(parseHead(rq,buf,got)){ case Parse_Success: client->isGood(); handleUpstreamRecvedHead(rq); break; case Parse_Failed: handleError(rq,STATUS_GATEWAY_TIMEOUT,"cann't parse upstream protocol"); break; case Parse_Continue: client->upstream_read(rq,resultUpstreamReadHead,bufferUpstreamReadHead); break; } }