[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/gavinlwz/esp32_https_server/master/src/ResourceNode.cpp [Back]  [Original]

#include "ResourceNode.hpp"

namespace httpsserver {

ResourceNode::ResourceNode(const std::string path, const std::string method, const HTTPSCallbackFunction * callback, const std::string tag):
	_path(std::move(path)),
	_method(std::move(method)),
	_callback(callback),
	_tag(tag) {

	// Count the parameters
	_urlParamCount = 0;
	size_t idx = 0;
	while((idx = path.find("/*", idx)) != std::string::npos) {
		_urlParamCount+=1;
		// If we don't do this, the same index will be found again... and again... and again...
		idx+=1;
	};

	// Check if there are parameters
	if (_urlParamCount > 0) {
		// If there are parameters, store their indices
		_urlParamIdx = new size_t[_urlParamCount];
		for(int i = 0; i < _urlParamCount; i++) {
			_urlParamIdx[i] = path.find("/*", i==0 ? 0 : _urlParamIdx[i-1])+1;
		}
	} else {
		_urlParamIdx = NULL;
	}
}

ResourceNode::~ResourceNode() {
	if (_urlParamIdx != NULL) {
		delete[] _urlParamIdx;
	}
}

bool ResourceNode::hasUrlParameter() {
	return _urlParamCount > 0;
}

size_t ResourceNode::getParamIdx(uint8_t idx) {
	if (idx

Web Proxy Viewer  |  New URL  |  Original Page