Example
// Description: Clusterizer API usage example.
// Copyright: (C) 2015 EffectiveSoft Ltd. All Rights Reserved.
// Technical support: technical-support@effective-soft.com
// This example requires the libcurl and jsoncpp libraries.
#include <iostream>
#include "curl/curl.h"
#include "json/json.h"
using namespace std;
// libcurl write callback function
static int writer(char *data, size_t size, size_t nmemb,
std::string *writerData)
{
if (writerData == NULL)
return 0;
writerData->append(data, size*nmemb);
return size * nmemb;
}
// print concept tree
void printTree(Json::Value node, int height)
{
for(unsigned int i = 0; i < height; ++i) std::cout << "\t";
std::cout << node["text"].asString() << "\n";
node = node["children"];
height++;
for (unsigned int j = 0; j < node.size(); ++j)
{
printTree(node[j], height);
}
}
int main(int argc, char* argv[])
{
CURL *curl = NULL;
CURLcode res;
// sample text
char pszText[] = "Computer programming (often shortened to programming) is a process that leads from an original formulation of a computing problem to executable computer programs. ";
// returned data from Intellexer API
std::string results;
// libcurl connection initialization
curl = curl_easy_init();
if (curl == NULL)
{
std::cerr << "Failed to create CURL connection\n";
return EXIT_FAILURE;
}
struct curl_slist *headerlist = NULL;
if(curl)
{
// set the URL with parameters for POST request and specify API key for authorization purposes (change YourAPIKey to the Intellexer API key)
curl_easy_setopt(curl, CURLOPT_URL, "http://api.intellexer.com/clusterizeText?apikey=YourAPIKey&conceptsRestriction=10&fullTextTrees=true");
// set option to the callback function
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
// set option for writing received data
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &results);
// specify the POST data
headerlist = curl_slist_append(headerlist, "Content-Type: application/octet-stream");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, pszText);
// perform the request
res = curl_easy_perform(curl);
// error checking
if(res != CURLE_OK)
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << "\n";
else
{
// parse JSON results
Json::Value root;
Json::Reader reader;
bool isSuccess = reader.parse(results, root, false);
if (isSuccess)
{
// print concept tree
std::cout << "Concept tree: \n";
printTree(root["conceptTree"], 0);
}
else
{
std::cerr << "JSON parsing error\n";
return EXIT_FAILURE;
}
}
//cleanup
curl_easy_cleanup(curl);
}
//global cleanup
curl_global_cleanup();
return 0;
}
Output
Concept tree:
programming
computer programming
executable computer program
computing problem
original formulation
process