17 #if _RAKNET_SUPPORT_Rackspace==1 && _RAKNET_SUPPORT_TCPInterface==1 
   23 using namespace SLNet;
 
   38     if (idx == (
unsigned int)-1)
 
   44     if (idx != (
unsigned int)-1)
 
   54     if (index!=(
unsigned int)-1)
 
   67     RackspaceOperation ro;
 
   69     ro.isPendingAuthentication=
false;
 
   81 #if OPEN_SSL_CLIENT_SUPPORT==1 
   86         "GET /v1.0 HTTP/1.1\n" 
   90         ,_authenticationURL, _rackspaceCloudUsername, _apiAccessKey);
 
   91     tcpInterface->
Send(command.C_String(), (
unsigned int) command.GetLength(), ro.connectionAddress, 
false);
 
   94     return ro.connectionAddress;
 
  102             return "Success_200";
 
  104             return "Success_201";
 
  106             return "Success_202";
 
  108             return "Success_203";
 
  110             return "Success_204";
 
  112             return "Cloud_Servers_Fault_500";
 
  114             return "Service_Unavailable_503";
 
  116             return "Unauthorized_401";
 
  118             return "Bad_Request_400";
 
  120             return "Over_Limit_413";
 
  122             return "Bad_Media_Type_415";
 
  124             return "Item_Not_Found_404";
 
  126             return "Build_In_Progress_409";
 
  128             return "Resize_Not_Allowed_403";
 
  130             return "Connection_Closed_Without_Reponse";
 
  132             return "Unknown_Failure";
 
  134     return "Unknown event type (bug)";
 
  138     RackspaceOperation ro;
 
  140     ro.httpCommand=httpCommand;
 
  141     ro.operation=operation;
 
  144     if (ro.isPendingAuthentication==
false)
 
  163         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  164         "<server xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"%s\" imageId=\"%s\" flavorId=\"%s\">" 
  178         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  179         "<server xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\"" 
  183     if (newPassword.
IsEmpty()==
false)
 
  207         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  208         "<reboot xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" type=\"%s\"" 
  217         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  218         "<rebuild xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" imageId=\"%s\"" 
  227         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  228         "<resize xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" flavorId=\"%s\"" 
  237         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  238         "<confirmResize xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" " 
  245         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  246         "<revertResize xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" " 
  265         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  266         "<image xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"%s\" serverId=\"%s\"" 
  291         "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  292         "<sharedIpGroup xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"%s\">", name.
C_String());
 
  293         if (optionalServerId.
IsEmpty()==
false)
 
  295         xml+=
"</sharedIpGroup>";
 
  312     unsigned int i, operationsIndex;
 
  316         if (
operations[operationsIndex].isPendingAuthentication==
false && 
operations[operationsIndex].connectionAddress==systemAddress)
 
  318             RackspaceOperation ro = 
operations[operationsIndex];
 
  322             const char *packetData = packetDataString.
C_String();
 
  324             char resultCodeStr[32];
 
  329             result=strstr((
char*) packetData, 
"HTTP/1.1 ");
 
  332                 result+=strlen(
"HTTP/1.1 ");
 
  333                 for (i=0; i < 
sizeof(resultCodeStr)-1 && result[i] && result[i]>=
'0' && result[i]<=
'9'; i++)
 
  334                     resultCodeStr[i]=result[i];
 
  336                 resultCodeInt=atoi(resultCodeStr);
 
  338                 switch (resultCodeInt)
 
  381                             if (
operations[operationsIndex].isPendingAuthentication==
true)
 
  383                                 operations[operationsIndex].isPendingAuthentication=
false;
 
  400                         eventCallbacks[i]->OnAuthenticationResult(rackspaceEventType, (
const char*) packetData);
 
  407                         eventCallbacks[i]->OnListServersResult(rackspaceEventType, (
const char*) packetData);
 
  413                         eventCallbacks[i]->OnListServersWithDetailsResult(rackspaceEventType, (
const char*) packetData);
 
  419                         eventCallbacks[i]->OnCreateServerResult(rackspaceEventType, (
const char*) packetData);
 
  426                         eventCallbacks[i]->OnGetServerDetails(rackspaceEventType, (
const char*) packetData);
 
  432                         eventCallbacks[i]->OnUpdateServerNameOrPassword(rackspaceEventType, (
const char*) packetData);
 
  438                         eventCallbacks[i]->OnDeleteServer(rackspaceEventType, (
const char*) packetData);
 
  444                         eventCallbacks[i]->OnListServerAddresses(rackspaceEventType, (
const char*) packetData);
 
  450                         eventCallbacks[i]->OnShareServerAddress(rackspaceEventType, (
const char*) packetData);
 
  456                         eventCallbacks[i]->OnDeleteServerAddress(rackspaceEventType, (
const char*) packetData);
 
  462                         eventCallbacks[i]->OnRebootServer(rackspaceEventType, (
const char*) packetData);
 
  468                         eventCallbacks[i]->OnRebuildServer(rackspaceEventType, (
const char*) packetData);
 
  474                         eventCallbacks[i]->OnResizeServer(rackspaceEventType, (
const char*) packetData);
 
  480                         eventCallbacks[i]->OnConfirmResizedServer(rackspaceEventType, (
const char*) packetData);
 
  486                         eventCallbacks[i]->OnRevertResizedServer(rackspaceEventType, (
const char*) packetData);
 
  494                         eventCallbacks[i]->OnListFlavorsResult(rackspaceEventType, (
const char*) packetData);
 
  500                         eventCallbacks[i]->OnGetFlavorDetailsResult(rackspaceEventType, (
const char*) packetData);
 
  506                         eventCallbacks[i]->OnListImagesResult(rackspaceEventType, (
const char*) packetData);
 
  512                         eventCallbacks[i]->OnCreateImageResult(rackspaceEventType, (
const char*) packetData);
 
  518                         eventCallbacks[i]->OnGetImageDetailsResult(rackspaceEventType, (
const char*) packetData);
 
  524                         eventCallbacks[i]->OnDeleteImageResult(rackspaceEventType, (
const char*) packetData);
 
  530                         eventCallbacks[i]->OnListSharedIPGroups(rackspaceEventType, (
const char*) packetData);
 
  536                         eventCallbacks[i]->OnListSharedIPGroupsWithDetails(rackspaceEventType, (
const char*) packetData);
 
  542                         eventCallbacks[i]->OnCreateSharedIPGroup(rackspaceEventType, (
const char*) packetData);
 
  548                         eventCallbacks[i]->OnGetSharedIPGroupDetails(rackspaceEventType, (
const char*) packetData);
 
  554                         eventCallbacks[i]->OnDeleteSharedIPGroup(rackspaceEventType, (
const char*) packetData);
 
  570     unsigned int operationsIndex;
 
  571     for (operationsIndex=0; operationsIndex < 
operations.
Size(); operationsIndex++)
 
  585         "%s %s/%s HTTP/1.1\n" 
  587         "Content-Type: application/xml\n" 
  588         "Content-Length: %i\n" 
  589         "Accept: application/xml\n" 
  590         "X-Auth-Token: %s\n",
 
  595     if (ro.xml.IsEmpty()==
false)
 
  606     tcpInterface->
Send(command.C_String(), (
unsigned int) command.GetLength(), ro.connectionAddress, 
false);
 
  613     char *result, *resultEnd;
 
  615     result=strstr((
char*) data, stringStart);
 
  622     result+=strlen(stringStart);
 
  631     while (*resultEnd && (*resultEnd!=
'\r') && (*resultEnd!=
'\n') )
 
  633     output.
Truncate((
unsigned int) (resultEnd-result));
 
  649 #if OPEN_SSL_CLIENT_SUPPORT==1 
  673     return (
unsigned int) -1;