Get Amazon Alexa information about a website.
#include <CkRestW.h>
#include <CkAuthAwsW.h>
#include <CkStringBuilderW.h>
#include <CkXmlW.h>
void ChilkatSample(void)
{
CkRestW rest;
bool success;
// Provide AWS credentials for the REST call.
CkAuthAwsW authAws;
authAws.put_AccessKey(L"AWS_ACCESS_KEY");
authAws.put_SecretKey(L"AWS_SECRET_KEY");
authAws.put_ServiceName(L"awis");
authAws.put_Region(L"us-west-1");
rest.SetAuthAws(authAws);
success = rest.Connect(L"awis.us-west-1.amazonaws.com",443,true,true);
if (success != true) {
wprintf(L"%s\n",rest.lastErrorText());
return;
}
rest.AddQueryParam(L"Action",L"UrlInfo");
rest.AddQueryParam(L"ResponseGroup",L"Rank");
rest.AddQueryParam(L"Url",L"yahoo.com");
CkStringBuilderW sbXml;
success = rest.FullRequestNoBodySb(L"GET",L"/api",sbXml);
if (success != true) {
wprintf(L"%s\n",rest.lastErrorText());
return;
}
if (rest.get_ResponseStatusCode() != 200) {
wprintf(L"Received error response code: %d\n",rest.get_ResponseStatusCode());
wprintf(L"Response body:\n");
wprintf(L"%s\n",sbXml.getAsString());
return;
}
CkXmlW xml;
xml.LoadSb(sbXml,true);
// The following code parses the XML response.
// A sample XML response is shown below the sample code.
const wchar_t *aws_UrlInfoResponse_xmlns_aws = 0;
const wchar_t *aws_Response_xmlns_aws = 0;
const wchar_t *tagPath = 0;
const wchar_t *aws_RequestId = 0;
int i;
int count_i;
const wchar_t *aws_Name = 0;
const wchar_t *aws_Value = 0;
const wchar_t *aws_DataUrl_type = 0;
const wchar_t *aws_DataUrl = 0;
int aws_Rank;
const wchar_t *aws_ResponseStatus_xmlns_aws = 0;
const wchar_t *aws_StatusCode = 0;
aws_UrlInfoResponse_xmlns_aws = xml.getAttrValue(L"xmlns:aws");
aws_Response_xmlns_aws = xml.chilkatPath(L"aws:Response|(xmlns:aws)");
aws_RequestId = xml.getChildContent(L"aws:Response|aws:OperationRequest|aws:RequestId");
i = 0;
count_i = xml.NumChildrenHavingTag(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:Request|aws:Arguments|aws:Argument");
while (i < count_i) {
xml.put_I(i);
aws_Name = xml.getChildContent(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:Request|aws:Arguments|aws:Argument[i]|aws:Name");
aws_Value = xml.getChildContent(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:Request|aws:Arguments|aws:Argument[i]|aws:Value");
i = i + 1;
}
aws_DataUrl_type = xml.chilkatPath(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:TrafficData|aws:DataUrl|(type)");
aws_DataUrl = xml.getChildContent(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:TrafficData|aws:DataUrl");
aws_Rank = xml.GetChildIntValue(L"aws:Response|aws:UrlInfoResult|aws:Alexa|aws:TrafficData|aws:Rank");
aws_ResponseStatus_xmlns_aws = xml.chilkatPath(L"aws:Response|aws:ResponseStatus|(xmlns:aws)");
aws_StatusCode = xml.getChildContent(L"aws:Response|aws:ResponseStatus|aws:StatusCode");
wprintf(L"Example Completed.\n");
}
<?xml version="1.0" encoding="utf-8" ?>
<aws:UrlInfoResponse xmlns:aws="http://awis.amazonaws.com/doc/2005-10-05">
<aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11">
<aws:OperationRequest>
<aws:RequestId>7688d02e-2247-11e8-9c21-d97222e4a948</aws:RequestId>
</aws:OperationRequest>
<aws:UrlInfoResult>
<aws:Alexa>
<aws:Request>
<aws:Arguments>
<aws:Argument>
<aws:Name>url</aws:Name>
<aws:Value>yahoo.com</aws:Value>
</aws:Argument>
<aws:Argument>
<aws:Name>responsegroup</aws:Name>
<aws:Value>Rank</aws:Value>
</aws:Argument>
</aws:Arguments>
</aws:Request>
<aws:TrafficData>
<aws:DataUrl type="canonical">yahoo.com/</aws:DataUrl>
<aws:Rank>7</aws:Rank>
</aws:TrafficData>
</aws:Alexa>
</aws:UrlInfoResult>
<aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/">
<aws:StatusCode>Success</aws:StatusCode>
</aws:ResponseStatus>
</aws:Response>
</aws:UrlInfoResponse>