⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 url.cpp

📁 C++ web POSIX framewark
💻 CPP
字号:
#include "url.h"#include "worker_thread.h"using namespace std;using namespace boost;using namespace cppcms;url_parser::~url_parser(){}void url_parser::add(char const *exp,int id){	url_def url_def;		url_def.pattern=regex(exp);	url_def.type=url_def::ID;	url_def.id=id;	url_def.callback=NULL;	url_def.url=NULL;		patterns.push_back(url_def);}void url_parser::add(char const *exp,url_parser &url){	url_def url_def;		url_def.pattern=regex(exp);	url_def.type=url_def::URL;	url_def.id=0;	url_def.url=&url;		patterns.push_back(url_def);}void url_parser::add(char const *exp,callback_t callback){	url_def url_def;		url_def.pattern=regex(exp);	url_def.type=url_def::CALLBACK;	url_def.id=0;	url_def.callback=callback;	url_def.url=NULL;		patterns.push_back(url_def);}int url_parser::parse(string &query){	unsigned i;	for(i=0;i<patterns.size();i++) {		boost::regex &r=patterns[i].pattern;		string tmp;		if(boost::regex_match(query.c_str(),result,r)){			switch(patterns[i].type) {			case url_def::ID: 				return patterns[i].id;			case url_def::URL: 				tmp=result[1];				return patterns[i].url->parse(tmp);			case url_def::CALLBACK:				patterns[i].callback(	result[1],result[2],							result[3],result[4],							result[5],result[6],							result[7],result[8],							result[0]);				return 0;			}		}	}	return -1;}int url_parser::parse(){	string query;	if(worker){		query=worker->env->getPathInfo();	}	else {		return not_found;	}	return parse(query);}string url_parser::operator[](int i){	return result[i];}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -