Exemplo n.º 1
0
int http_register_server(char * url, const ipaddr & svraddr, int server_type){
	char register_url[256] = {0};
	sprintf(register_url, "%s?ip=%s&port=%u&type_id=%d",
	url, 
	svraddr.ip,
	svraddr.port,
	server_type);
	
	char register_rsp[256] = {0};
	int ret = get_http_request(register_url, register_rsp, sizeof(register_rsp));
	if(ret < 0){
		log_out(log_error,"http_register_server:: get_http_request fail\n");
		return -1;
	}
	
	//{"code":0,"data":{"server_id":"10015"},"msg":"\u8bf7\u6c42\u6210\u529f"}
	cJSON * json = cJSON_Parse(register_rsp);
	if(!json){
		log_out(log_error, "http_register_server::invalid json\n");
		return -1;
	}
	
	cJSON * jscode = cJSON_GetObjectItem(json, "code");
	if(!jscode || jscode->type != cJSON_Number){
		log_out(log_error, "register_server::invalid code\n");
		cJSON_Delete(json);
		return -1;
	}
	
	if(jscode->valueint){
		log_out(log_error, "register_server::error(%d)\n", jscode->valueint);
		cJSON_Delete(json);
		return -1;
	}
	
	cJSON * jsdata = cJSON_GetObjectItem(json, "data");
	if(!jsdata){
		log_out(log_error, "register_server::invalid data\n");
		cJSON_Delete(json);
		return -1;
	}
	
	cJSON * jssvr = cJSON_GetObjectItem(jsdata, "server_id"); 
	if(!jssvr || jssvr->type != cJSON_String){
		log_out(log_error, "register_server::invalid server_id\n");
		cJSON_Delete(json);
		return -1;
	}
	

	int server_id =  atoi(jssvr->valuestring);
	cJSON_Delete(json);
	
	return server_id;	
}
Exemplo n.º 2
0
// The main printing driver.
int
main(int argc, char** argv)
{
	if (argc < 2) {
		usage(argv[0]);
		return -1;
	}
	
	// Web page input source.
	std::string input;
	if (argc == 2) {
		// Read from file.
		if (!parse_input_file(argv[1], input)) {
			std::cout << "Error: Unable to open file '" << argv[1] << "'\n";
			return 1;
		}	
	}
	else if (argc == 3) {
		// Fetch an http request.
		if (!get_http_request(argv[1], argv[2], input)) {
			std::cout << "Error: Unable to get path '" << argv[2] << "' from host '" << argv[1] << "'\n";
			return 1;
		}
	}
	
	// Build a token list.
	std::vector<std::string> token_list = webex::lexer::build_tokens(input);
	if (token_list.empty()) {
		std::cout << "Error: No token list generated.\n";
		return 2;
	}
	std::cout << "Token list generated.\n";

	// Parse the token list into a tree.
	webex::Source* tree = webex::parser::build_tree(token_list);
	if (!tree) {
		std::cout << "Error: No parse tree generated.\n";
		return 3;
	}
	std::cout << "Parse tree generated.\n";
	
	// Print the contents of the tree.
	webex::Tag_print printer(std::cout);
	printer.eval(tree);

	// Clean up.
	delete tree;

	return 0;
}
Exemplo n.º 3
0
//{"data":{"server":"127.0.0.1:29025"},"code":0,"message":"succ"}
int lbapp::get_dev_info(const char * sn, device_s & ds){
    
	char url[512] = {0};
	sprintf(url, "%s%s", m_devapi, sn);

	char buf[512] = {0};
	if(get_http_request(url, buf, sizeof(buf) -1) < 0){
		return -1;
	}

	cJSON * json = cJSON_Parse(buf);
	if(!json){
		return -1;
	}

	cJSON * jscod  = cJSON_GetObjectItem(json, "code");
	cJSON * jsdsc  = cJSON_GetObjectItem(json, "message");
	cJSON * jsdta  = cJSON_GetObjectItem(json, "data");

	if(!jscod || !jsdsc ||!jsdta){
		cJSON_Delete(json);
		log_out(log_debug, "get_dev_info::invalid json\n");
		return -1;
	}

	if(jscod->valueint){
		cJSON_Delete(json);
		return -1;
	}

	cJSON * jssvr  = cJSON_GetObjectItem(jsdta, "server");
	if(!jssvr || jssvr->type != cJSON_String){
		cJSON_Delete(json);
		return -1;
	}

	memset(&ds, 0, sizeof(ds));
	strncpy(ds.mgr, jssvr->valuestring, sizeof(ds.mgr));

	cJSON_Delete(json);
	return 0;
}
Exemplo n.º 4
0
int lbapp::get_request(char * url, char * buff, int buflen){
	return get_http_request(url, buff, buflen);
}