std::string OAuthPrivate::buildAuthHeader(const std::string & method, const std::string & url, Params data, const std::string & verifier){

	Params params;
	params.insert(std::pair<std::string, std::string>("oauth_consumer_key", consumerKey));
	params.insert(std::pair<std::string, std::string>("oauth_nonce", Helper::identifier(42)));
	//params.insert(std::pair<std::string, std::string>("oauth_nonce", "Qr2DJzLO3iZCRnqN7hRvJCX5VZFk62fh2Qrbx3Snzl"));
	params.insert(std::pair<std::string, std::string>("oauth_signature_method", "HMAC-SHA1"));
	params.insert(std::pair<std::string, std::string>("oauth_timestamp", NumberFormatter::format(Helper::timestamp())));
	//params.insert(std::pair<std::string, std::string>("oauth_timestamp", "1363740223"));

	params.insert(std::pair<std::string, std::string>("oauth_version", "1.0"));

    if(!verifier.empty()) 
    	params.insert(std::pair<std::string, std::string>("oauth_verifier", verifier));

    if(!oauthToken.empty())
    	params.insert(std::pair<std::string, std::string>("oauth_token", oauthToken));

    params.insert(data.begin(), data.end());
    params.insert(std::pair<std::string, std::string>("oauth_signature", signature(signingKey(consumerSecret, oauthTokenSecret), baseString(method, url, paramsString(params)))));

    std::string authStr;

    ParamsIterator it;
    for(it = params.begin(); it != params.end(); it++){
    	 std::string key = (*it).first;
    	 std::string val = (*it).second;

    	 authStr += URI(key).toString() + "=\"" + Helper::urlencode(val) + "\", ";
    }

    return authStr.substr(0, authStr.length() - 2);
}	
Exemple #2
0
void RootReqDispatcher::dispatch(const Poco::Net::HTTPServerRequest& procReq,
								 Poco::Net::HTTPServerResponse &out)
{
	using Poco::URI;
	using std::string;
	using std::vector;

	// Construyo una URI
	URI uri(procReq.getURI());

	// Obtengo los segmentos del path
	vector<string> pathSegs;
	uri.getPathSegments(pathSegs);
	if (pathSegs.size() == 0)
		pathSegs.push_back(""); // Por consistencia

	// Uso el primer segmento para determinar a donde despachar
	TDispatchMap::iterator itDisp = dispatchMap_.find(pathSegs[0]);
	
	// Si no encontré a donde mandarlo, es error
	if (itDisp == dispatchMap_.end())
	{
		pErrorReqProc_->process(URI("/error?code=404"), out);
		return;
	}

	// Lo mando a donde corresponda
	itDisp->second->process(procReq, out);
}
Exemple #3
0
	HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request)
	{
		std::string localPath;
		std::string uriPath = URI(request.getURI()).getPath();

		if (fileExists(request, localPath)) // request for a file
			return new FileRequestHandler(localPath);
		else if ((uriPath == "/html") || (uriPath == "/xml")) // request for data
			return new DataRequestHandler();
		else // sorry ...
			return new NotFoundRequestHandler();
	}
std::string OAuthPrivate::paramsString(Params params){

    std::string paramStr;

    ParamsIterator it;
    for(it = params.begin(); it != params.end(); it++){
    	std::string key = (*it).first;
    	std::string val = (*it).second;
        
        paramStr += URI(key).toString() + "=" + Helper::urlencode(val) + "&";
    }
    return paramStr.substr(0, paramStr.length() - 1);
}
std::string OAuthPrivate::signingKey(const std::string & consumerSecretKey, const std::string & oauthTokenSecretKey){
	return URI(consumerSecretKey).toString() + "&" + URI(oauthTokenSecretKey).toString();
}
	void HandleURI(const std::string& name, const std::string& value)
	{
		uri = URI(value);
	}