<?php
/**
* User: Robin
* Date: 2014-12-03
* Time: 09:40 AM
* @author RAM
*/
namespace API\Rest\ResellerAPI\Documentation;
// RAM: Example calls for all methods
/**
* getSession
*/
echo "<div style='font-weight: bold;'>getSession</div>";
$args = array();
$args["strUserName"] = "RCP_CONTROL_PANEL_LOGIN";
$args["strPassword"] = "RCP_CONTROL_PANEL_PASS";
$result = CurlFunction($args, "getSession");
var_dump($result);
/**
* checkSession
*/
echo "<div style='font-weight: bold;'>checkSession</div>";
$args = array();
$args["strSessionId"] = $result->object->strSessionId;
$result = CurlFunction($args, "checkSession");
var_dump($result);
$session = $result->object->strSessionId;
/**
* getProvinces
*/
echo "<div style='font-weight: bold;'>getProvinces</div>";
$args = array();
$args["strSessionId"] = $session;
$result = CurlFunction($args, "getProvinces");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* getAllClients
*/
echo "<div style='font-weight: bold;'>getAllClients</div>";
$args = array();
$args["strSessionId"] = $session;
$result = CurlFunction($args, "getAllClients");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* getClientById
*/
echo "<div style='font-weight: bold;'>getClientById</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidClientId"] = '3c8d4c6a-be9a-11e4-bb6a-28d244200550';
$result = CurlFunction($args, "getClientById");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* createClient
*/
/*
echo "<div style='font-weight: bold;'>createClient</div>";
$args = array();
$args["strSessionId"] = $session;
$args["strName"] = "rs_api_TestUser TestMiddleName";
$args["strLastName"] = "TestLastName";
$args["strCell"] = "083 264 4665";
$id = "";
for ($i = 0; $i < 13; $i++)
{
$id .= rand(0, 9);
}
$args["strIdNumber"] = $id;
$args["strCompanyName"] = "Microsoft";
$args["strAddress"] = "5 Some Street";
$args["strSuburb"] = "Some Area";
$args["strCity"] = "Some City";
$args["strEmail"] = "someemail@somedomain.co.za";
$args["strHomeTel"] = "041 3661546";
$args["strWorkTel"] = "041 3115486";
$args["intProvinceId"] = 1;
$args["intPostalCode"] = 6070;
$result = CurlFunction($args, "createClient");
var_dump($result);
*/
/**
* getProducts
*/
echo "<div style='font-weight: bold;'>getProducts</div>";
$args = array();
$args["strSessionId"] = $session;
$result = CurlFunction($args, "getProducts");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* getServicesByClient
*/
echo "<div style='font-weight: bold;'>getServicesByClient</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidClientId"] = '3c8d4c6a-be9a-11e4-bb6a-28d244200550';
$result = CurlFunction($args, "getServicesByClient");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* getAllUnassignedSimServices
*/
echo "<div style='font-weight: bold;'>getAllUnassignedSimServices</div>";
$args = array();
$args["strSessionId"] = $session;
$result = CurlFunction($args, "getAllUnassignedSimServices");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* getServiceById
*/
echo "<div style='font-weight: bold;'>getServiceById</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '38d66070-c0ed-11e4-bfb7-28d244200550';
$result = CurlFunction($args, "getServiceById");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* getServiceSessionDetailsById
*/
echo "<div style='font-weight: bold;'>getServiceSessionDetailsById</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '38d66070-c0ed-11e4-bfb7-28d244200550';
$result = CurlFunction($args, "getServiceSessionDetailsById");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* getServiceUsageDetailsById
*/
echo "<div style='font-weight: bold;'>getServiceUsageDetailsById</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '38d66070-c0ed-11e4-bfb7-28d244200550';
$result = CurlFunction($args, "getServiceUsageDetailsById");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* createService
*
* ADSL
*/
/*
echo "<div style='font-weight: bold;'>createService ADSL</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidClientId"] = '3c8d4c6a-be9a-11e4-bb6a-28d244200550';
$args["guidProductId"] = '752b5310-be97-11e4-bb6a-28d244200550';
$args["intQuantity"] = '2';
$args["strUsername"] = 'MyUsername';
$args["strDateStart"] = date("Y:m:d H:i:s");
$result = CurlFunction($args, "createService");
echo '<pre>';
var_dump($result);
echo '</pre>';
*/
/**
* createService
*
* LINE
*/
/*
echo "<div style='font-weight: bold;'>createService LINE</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidClientId"] = '3c8d4c6a-be9a-11e4-bb6a-28d244200550';
$args["guidProductId"] = '752c2c44-be97-11e4-bb6a-28d244200550';
$args["strLineNumber"] = '041 354 1564';
$args["strOwnerName"] = 'Francis Drake';
$args["strAddress"] = '5 Sale Street';
$args["strSuburb"] = 'Newton Park';
$args["strCity"] = 'Port Elizabeth';
$args["intPostalCode"] = '6070';
$args["intIsTransfer"] = '0';
$result = CurlFunction($args, "createService");
echo '<pre>';
var_dump($result);
echo '</pre>';
*/
/**
* createService
*
* MOBILE
*/
/*
echo "<div style='font-weight: bold;'>createService MOBILE</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidClientId"] = '3c8d4c6a-be9a-11e4-bb6a-28d244200550';
$args["guidProductId"] = '752ce60f-be97-11e4-bb6a-28d244200550';
$args["guidMobileServiceId"] = '36d12e33-c7ec-11e4-8385-28d244200550';
$args["strDateStart"] = date("Y:m:d H:i:s");
$result = CurlFunction($args, "createService");
echo '<pre>';
var_dump($result);
echo '</pre>';
*/
/**
* funcServiceChanges
*/
echo "<div style='font-weight: bold;'>funcServiceChanges</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '3f5e43f9-c644-11e4-bf06-68f72804dc1e';
$args["guidProductId"] = '3ea95a50-c644-11e4-bf06-68f72804dc1e';
$args["intQuantity"] = '5';
$args["strDateStart"] = '2015-03-13';
$result = CurlFunction($args, "funcServiceChanges");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* funcTopups
*/
echo "<div style='font-weight: bold;'>funcTopups</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '3f5e3339-c644-11e4-bf06-68f72804dc1e';
$args["guidProductId"] = '3ea95a50-c644-11e4-bf06-68f72804dc1e';
$args["intQuantity"] = '5';
$result = CurlFunction($args, "funcTopups");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* funcCheckLine
*/
echo "<div style='font-weight: bold;'>funcCheckLine</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = 'ea0485ca-c259-11e4-9319-002590383a96';
$result = CurlFunction($args, "funcCheckLine");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* funcFixLine
*/
echo "<div style='font-weight: bold;'>funcFixLine</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = 'ea0485ca-c259-11e4-9319-002590383a96';
$result = CurlFunction($args, "funcFixLine");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* funcPod
*/
echo "<div style='font-weight: bold;'>funcPod</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '3f5e42ce-c644-11e4-bf06-68f72804dc1e';
$result = CurlFunction($args, "funcPod");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* funcSuspend
*/
echo "<div style='font-weight: bold;'>funcSuspend</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '3f5e42ce-c644-11e4-bf06-68f72804dc1e';
$result = CurlFunction($args, "funcSuspend");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* funcPasswordReset
*/
echo "<div style='font-weight: bold;'>funcPasswordReset</div>";
$args = array();
$args["strSessionId"] = $session;
$args["guidServiceId"] = '3f5e65b9-c644-11e4-bf06-68f72804dc1e';
$result = CurlFunction($args, "funcPasswordReset");
echo '<pre>';
var_dump($result);
echo '</pre>';
/**
* Curl wrapper function for accessing and testing all of the reseller API methods
*
* @param $d
* @param $curlcall
* @param string $verb
* @return Response
*/
function CurlFunction($d, $curlcall, $verb = "")
{
$Username = "ResellerAdmin";
$Password = "jFbd5lg7Djfbn48idmlf4Kd";
$curl = new Curl();
$response = new Response();
/*
$cookieFile = "cookies.txt";
if(!file_exists($cookieFile)) {
$fh = fopen($cookieFile, "w");
fwrite($fh, "");
fclose($fh);
}
$curl->setOpt(CURLOPT_COOKIEFILE, "cookies.txt");
$curl->setOpt(CURLOPT_COOKIEJAR, "cookies.txt");
$curl->setOpt(CURLOPT_COOKIESESSION, true);
$curl->setOpt(CURLOPT_HEADER, true);
*/
/**
* All objects returned with:
*
* intCode ( HTTP Status code )
* strStatus ( HTTP Status )
* strMessage ( Extra information; Can be null )
*/
switch ($curlcall)
{
/**
* Authenticate and get a GUID for remainder of API session
*
* @param array $d array("strUserName", "strPassword")
*
* @return object json encoded with:
*
* object(stdClass)[4]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'strSessionId' => string '27F11AE2-BCC0-EA8C-0F7E-6D6332017955' (length=36)
*
*/
case "getSession":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getSession.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Check if GUID still valid
*
* @param array $d array("strSessionId")
*
* @return object json encoded with:
*
* object(stdClass)[7]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'strSessionId' => string '1C4BBAEF-024C-8FC4-DE28-9693A8965902' (length=36)
*
*/
case "checkSession":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/checkSession.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get list of provinces we have on our system and their ids
*
* @param array $d array("strSessionId")
*
* @return object json encoded with:
*
* object(stdClass)[6]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrProvinces' =>
object(stdClass)[8]
public '0' =>
object(stdClass)[9]
public 'intProvinceId' => string '1' (length=1)
public 'strName' => string 'Eastern Cape' (length=12)
public '1' =>
object(stdClass)[10]
public 'intProvinceId' => string '2' (length=1)
public 'strName' => string 'Free State' (length=10)
* etc.
*
*/
case "getProvinces":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getProvinces.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get details of all clients
*
* @param array $d array("strSessionId")
*
* @return object json encoded with:
*
* object(stdClass)[4]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrClients' =>
object(stdClass)[18]
public '0' =>
object(stdClass)[19]
public 'guidClientId' => string '3d384623-be9a-11e4-bb6a-28d244200550' (length=36)
public 'strName' => string 'First' (length=5)
public 'strLastName' => string 'Client' (length=6)
public 'strCell' => string '083 267 2584' (length=12)
public 'strIdNumber' => string '8110225012087' (length=13)
public 'strAddress' => string '16 SomeStreet' (length=12)
public 'strSuburb' => string 'Some Suburb' (length=14)
public 'strCity' => string 'Port Elizabeth' (length=14)
public 'strEmail' => string 'someonone@somewhere.co.za' (length=16)
public 'strHomeTel' => null
public 'strWorkTel' => null
public 'intProvinceId' => string '1' (length=1)
public 'intPostalCode' => string '6070' (length=4)
public '1' =>
object(stdClass)[20]
* etc.
*
*/
case "getAllClients":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getAllClients.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get details of specific client
*
* @param array $d array("strSessionId", "guidClientId")
*
* @return object json encoded with:
*
* object(stdClass)[4]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrClients' =>
object(stdClass)[18]
public '0' =>
object(stdClass)[19]
public 'guidClientId' => string '3d384623-be9a-11e4-bb6a-28d244200550' (length=36)
public 'strName' => string 'First' (length=5)
public 'strLastName' => string 'Client' (length=6)
public 'strCell' => string '083 267 2584' (length=12)
public 'strIdNumber' => string '8110225012087' (length=13)
public 'strAddress' => string '16 SomeStreet' (length=12)
public 'strSuburb' => string 'Some Suburb' (length=14)
public 'strCity' => string 'Port Elizabeth' (length=14)
public 'strEmail' => string 'someonone@somewhere.co.za' (length=16)
public 'strHomeTel' => null
public 'strWorkTel' => null
public 'intProvinceId' => string '1' (length=1)
public 'intPostalCode' => string '6070' (length=4)
*
*/
case "getClientById":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getClientById.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Create new client
*
* @param array $d array("strSessionId",
"strName",
"strLastName",
"strCell",
"strIdNumber",
"strCompanyName",
"strAddress",
"strSuburb",
"strCity",
"strEmail",
"strHomeTel",
"strWorkTel",
"intProvinceId",
"intPostalCode")
*
* @return object json encoded with:
*
* object(stdClass)[143]
public 'intCode' => int 201
public 'strStatus' => string 'Created' (length=7)
public 'strMessage' => null
public 'guidClientId' => string 'c92278f2-cd5e-11e4-b090-28d244200550' (length=36)
public 'strUsername' => string 'TJS319' (length=6)
public 'strPassword' => string 'd9cljbUA' (length=8)
*
*/
case "createClient":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/createClient.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->put($Url, $d);
break;
}
/**
* Get all available reseller products
*
* @param array $d array("strSessionId")
*
* @return object json encoded with:
*
* object(stdClass)[8]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrProducts' =>
object(stdClass)[17]
public '0' =>
object(stdClass)[16]
public 'guidProductId' => string '752b51a5-be97-11e4-bb6a-28d244200550' (length=4)
public 'strName' => string 'ADSL SAIX' (length=9)
public '1' =>
object(stdClass)[15]
public 'guidProductId' => string '752b5258-be97-11e4-bb6a-28d244200550' (length=4)
public 'strName' => string 'ADSL SAIX Unshaped' (length=18)
public '2' =>
* etc.
*
*/
case "getProducts":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getProducts.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get all services for specified client
*
* @param array $d array("strSessionId", "guidClientId")
*
* @return object json encoded with:
*
* object(stdClass)[17]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrServices' =>
object(stdClass)[16]
public '0' =>
object(stdClass)[4]
public 'guidServiceId' => string '56352fea-bf96-11e4-9b72-28d244200550' (length=36)
public 'strDescription' => string '27514793245@yourmobile' (length=22)
public 'guidProductId' => string '752ce7fb-be97-11e4-bb6a-28d244200550' (length=36)
public 'intSuspendReasonId' => string '1' (length=1)
public 'intCurrentQuantity' => string '1' (length=1)
public 'intQuantity' => string '1' (length=1)
public 'strDateEnd' => null
public '1' =>
object(stdClass)[46]
public 'guidServiceId' => string '56353072-bf96-11e4-9b72-28d244200550' (length=36)
public 'strDescription' => string '27514793245@yourmobile' (length=22)
public 'guidProductId' => string '752ce7fb-be97-11e4-bb6a-28d244200550' (length=36)
public 'intSuspendReasonId' => string '1' (length=1)
public 'intCurrentQuantity' => string '1' (length=1)
* etc.
*
*/
case "getServicesByClient":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getServicesByClient.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get all unassigned SIM services
*
* @param array $d array("strSessionId")
*
* @return object json encoded with:
*
* object(stdClass)[43]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrServices' =>
object(stdClass)[45]
public '0' =>
object(stdClass)[44]
public 'guidServiceId' => string '3a4870d4-c0ed-11e4-bfb7-28d244200550' (length=36)
public 'strDescription' => string '2551884322 / 27514793245' (length=24)
public 'guidProductId' => string '752caba0-be97-11e4-bb6a-28d244200550' (length=36)
public 'strDateEnd' => null
public '1' =>
object(stdClass)[7]
public 'guidServiceId' => string '3a486ff6-c0ed-11e4-bfb7-28d244200550' (length=36)
* etc.
*
*/
case "getAllUnassignedSimServices":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getAllUnassignedSimServices.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get service details by id
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
*
* object(stdClass)[16]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrServices' =>
object(stdClass)[59]
public '0' =>
object(stdClass)[58]
public 'guidServiceId' => string '3a487248-c0ed-11e4-bfb7-28d244200550' (length=36)
public 'strDescription' => string '27514793245' (length=11)
public 'guidProductId' => string '752caba0-be97-11e4-bb6a-28d244200550' (length=36)
public 'intSuspendReasonId' => null
public 'intCurrentQuantity' => string '1' (length=1)
public 'intQuantity' => string '1' (length=1)
public 'strDateEnd' => null
*
*/
case "getServiceById":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getServiceById.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get the session details of a connection/data related service. i.e. ADSL and mobile connections
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
*
*object(stdClass)[109]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrSessions' =>
object(stdClass)[17]
public '0' =>
object(stdClass)[110]
public 'strUsername' => string 'SYS74838@zxcvz' (length=16)
public 'strNasPort' => string '2015826083' (length=10)
public 'strNASIPAddress' => string '196.43.47.14' (length=12)
public 'strPhoneNumber' => string '0411548969' (length=10)
public 'strStartTime' => string '2015-02-26 16:56:50' (length=19)
public 'strStopTime' => string '2015-03-01 14:22:57' (length=19)
public 'strDuration' => string '69h 26m' (length=7)
public 'strTerminateCause' => string 'Session-Timeout' (length=15)
public 'strFramedIP' => string '105.518.7.518' (length=13)
public 'intUploadMB' => string '102.366' (length=7)
public 'intDownloadMB' => string '1421.199' (length=8)
public 'intTotalMB' => string '1523.565' (length=8)
public '1' =>
object(stdClass)[111]
public 'strUsername' => string 'SYS74838@zxcvz' (length=16)
public 'strNasPort' => string '2015826083' (length=10)
public 'strNASIPAddress' => string '184.43.57.14' (length=12)
* etc.
*
*/
case "getServiceSessionDetailsById":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getServiceSessionDetailsById.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Get the daily usage details breakdown for the current month of a connection/data related service. i.e. ADSL and mobile connections
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
*
*object(stdClass)[4]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'strAccountStartDate' => string '2014-11-01' (length=10)
public 'strDate' => string 'Mar 2015' (length=8)
public 'intTotal' => float 2099.74453258
public 'intTotalUp' => float 338.34212875
public 'intTotalDown' => float 1761.40240384
public 'arrUsage' =>
object(stdClass)[18]
public '1' =>
object(stdClass)[144]
public 'intTotal' => int 343
public 'intUp' => int 77
public 'intDown' => int 266
public '2' =>
object(stdClass)[116]
public 'intTotal' => int 674
public 'intUp' => int 87
* etc.
*
*/
case "getServiceUsageDetailsById":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/getServiceUsageDetailsById.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
* Create a new ADSL, Mobile, or DSL Line service
*
* @param array $d array("strSessionId", "guidClientId", "guidProductId") etc etc
*
* @return object json encoded with:
*
* object(stdClass)[17]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'arrServices' =>
object(stdClass)[109]
public '0' =>
object(stdClass)[108]
public 'guidServiceId' => string '1bbe29b6-c743-11e4-95d8-28d244200550' (length=36)
*
* etc.
*
public 'decBalance' => float 1056.28
*
*/
case "createService":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/createService.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->put($Url, $d);
break;
}
/**
*
*
* @param array $d array("strSessionId", "guidServiceId", "guidProductId", "intQuantity", "strDateStart")
*
* @return object json encoded with:
*
* object(stdClass)[106]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
*
*/
case "funcServiceChanges":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/funcServiceChanges.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->put($Url, $d);
break;
}
/**
*
*
* @param array $d array("strSessionId", "guidServiceId", "guidProductId", "intQuantity")
*
* @return object json encoded with:
*
* object(stdClass)[146]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
*
*
*/
case "funcTopups":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/funcTopups.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->put($Url, $d);
break;
}
/**
*
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
* object(stdClass)[146]
public 'intCode' => int 200
public 'strStatus' => string 'Accepted' (length=8)
public 'strMessage' => string 'Successful POD's:1 Failed POD's:0 OK' (length=34)
*
*/
case "funcPod":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/funcPod.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
*
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
* object(stdClass)[146]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
*
*/
case "funcSuspend":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/funcSuspend.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
*
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
*
* object(stdClass)#146 (3) {
["intCode"]=>
int(200)
["strStatus"]=>
string(2) "OK"
["strMessage"]=>
NULL
*
*/
case "funcFixLine":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/funcFixLine.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
*
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
* public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'strDownloadCurrentSpeed' => string '10239 kbps'
public 'strDownloadInterference' => string '12.2 dB'
public 'strDownloadNoiseRatio' => string '12.7 dB'
public 'strUploadCurrentSpeed' => string '1021 kbps'
public 'strUploadInterference' => string '16.9 dB'
public 'strUploadNoiseRatio' => string '12.3 dB'
*
*/
case "funcCheckLine":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/funcCheckLine.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
/**
*
*
* @param array $d array("strSessionId", "guidServiceId")
*
* @return object json encoded with:
*
* object(stdClass)[104]
public 'intCode' => int 200
public 'strStatus' => string 'OK' (length=2)
public 'strMessage' => null
public 'strPassword' => string 'gsd5d1UsHCq' (length=10)
*
*/
case "funcPasswordReset":
{
$Url = "https://apitest.axxess.co.za/" . "calls/rsapi/funcPasswordReset.json";
$curl->setBasicAuthentication($Username, $Password);
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$curl->setOpt(CURLOPT_SSL_VERIFYHOST,2);
$curl->get($Url, $d);
break;
}
default:
{
$response->intCode = 500;
$response->message = "NADA Requested, missing required data or REST Call is not valid!";
}
}
$response->curl = $curl;
if ($curl->error)
{
$response->intCode = $curl->error_code;
}
else
{
$response->json = $curl->response;
$result = json_decode($curl->response);
if (null === $result)
{
$response->intCode = 500;
$response->message = "Too many nested arrays or error decoding.";
}
else
{
$response->intCode = $result->intCode;
$response->message = isset($result->message) ? $result->message : null;
$response->object = $result;
}
}
if ($response->intCode != 200)
{
$response->hasError = true;
}
$curl->close();
return $response;
}
class Response
{
public $intCode;
public $hasError = false;
public $message;
public $curl;
public $json;
public $object;
}
/**
* Class Curl
*
* A handle for curl calls and some helper functions
*/
class Curl
{
// TODO: set this.
const USER_AGENT = 'YOUR COMPANY NAME OR SOMETHING PERSONALLY IDENTIFIABLE';
private $_cookies = array();
private $_headers = array();
private $_options = array();
private $_multi_parent = false;
private $_multi_child = false;
private $_before_send = null;
private $_success = null;
private $_error = null;
private $_complete = null;
public $curl;
public $curls;
public $error = false;
public $error_code = 0;
public $error_message = null;
public $curl_error = false;
public $curl_error_code = 0;
public $curl_error_message = null;
public $http_error = false;
public $http_status_code = 0;
public $http_error_message = null;
public $request_headers = null;
public $response_headers = null;
public $response = null;
/**
* @throws \ErrorException
*/
public function __construct()
{
if (!extension_loaded('curl')) {
throw new \ErrorException('cURL library is has not been loaded');
}
$this->curl = curl_init();
$this->setUserAgent(self::USER_AGENT);
$this->setOpt(CURLINFO_HEADER_OUT, true);
$this->setOpt(CURLOPT_HEADER, true);
$this->setOpt(CURLOPT_RETURNTRANSFER, true);
}
/**
* @param $url_mixed
* @param array $data
* @return int|mixed
* @throws \ErrorException
*/
public function get($url_mixed, $data = array())
{
if (is_array($url_mixed)) {
$curl_multi = curl_multi_init();
$this->_multi_parent = true;
$this->curls = array();
foreach ($url_mixed as $url) {
$curl = new Curl();
$curl->_multi_child = true;
$curl->setOpt(CURLOPT_URL, $this->_buildURL($url, $data), $curl->curl);
$curl->setOpt(CURLOPT_HTTPGET, true);
$this->_call($this->_before_send, $curl);
$this->curls[] = $curl;
$curlm_error_code = curl_multi_add_handle($curl_multi, $curl->curl);
if (!($curlm_error_code === CURLM_OK)) {
throw new \ErrorException('cURL multi add handle error: ' .
curl_multi_strerror($curlm_error_code));
}
}
foreach ($this->curls as $ch) {
foreach ($this->_options as $key => $value) {
$ch->setOpt($key, $value);
}
}
do {
$status = curl_multi_exec($curl_multi, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);
foreach ($this->curls as $ch) {
$this->exec($ch);
}
} else {
$this->setopt(CURLOPT_URL, $this->_buildURL($url_mixed, $data));
$this->setopt(CURLOPT_HTTPGET, true);
return $this->exec();
}
}
/**
* @param $url
* @param array $data
* @return int|mixed
*/
public function post($url, $data = array())
{
$this->setOpt(CURLOPT_URL, $this->_buildURL($url));
$this->setOpt(CURLOPT_POST, true);
$this->setOpt(CURLOPT_POSTFIELDS, $this->_postfields($data));
return $this->exec();
}
/**
* @param $url
* @param array $data
* @return int|mixed
*/
public function put($url, $data = array())
{
$this->setOpt(CURLOPT_URL, $url);
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'PUT');
$this->setOpt(CURLOPT_POSTFIELDS, http_build_query($data));
return $this->exec();
}
/**
* @param $url
* @param array $data
* @return int|mixed
*/
public function patch($url, $data = array())
{
$this->setOpt(CURLOPT_URL, $this->_buildURL($url));
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'PATCH');
$this->setOpt(CURLOPT_POSTFIELDS, $data);
return $this->exec();
}
/**
* @param $url
* @param array $data
* @return int|mixed
*/
public function delete($url, $data = array())
{
$this->setOpt(CURLOPT_URL, $this->_buildURL($url, $data));
$this->setOpt(CURLOPT_CUSTOMREQUEST, 'DELETE');
return $this->exec();
}
/**
* @param $username
* @param $password
*/
public function setBasicAuthentication($username, $password)
{
$this->setOpt(CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$this->setOpt(CURLOPT_USERPWD, $username . ':' . $password);
}
/**
* @param $key
* @param $value
*/
public function setHeader($key, $value)
{
$this->_headers[$key] = $key . ': ' . $value;
$this->setOpt(CURLOPT_HTTPHEADER, array_values($this->_headers));
}
/**
* @param $user_agent
*/
public function setUserAgent($user_agent)
{
$this->setOpt(CURLOPT_USERAGENT, $user_agent);
}
/**
* @param $referrer
*/
public function setReferrer($referrer)
{
$this->setOpt(CURLOPT_REFERER, $referrer);
}
/**
* @param $key
* @param $value
*/
public function setCookie($key, $value)
{
$this->_cookies[$key] = $value;
$this->setOpt(CURLOPT_COOKIE, http_build_query($this->_cookies, '', '; '));
}
/**
* @param $cookie_file
*/
public function setCookieFile($cookie_file)
{
$this->setOpt(CURLOPT_COOKIEFILE, $cookie_file);
}
/**
* @param $cookie_jar
*/
public function setCookieJar($cookie_jar)
{
$this->setOpt(CURLOPT_COOKIEJAR, $cookie_jar);
}
/**
* @param $option
* @param $value
* @param null $_ch
* @return bool
*/
public function setOpt($option, $value, $_ch = null)
{
$ch = is_null($_ch) ? $this->curl : $_ch;
$required_options = array(
CURLINFO_HEADER_OUT => 'CURLINFO_HEADER_OUT',
CURLOPT_HEADER => 'CURLOPT_HEADER',
CURLOPT_RETURNTRANSFER => 'CURLOPT_RETURNTRANSFER',
);
if (in_array($option, array_keys($required_options), true) && !($value === true)) {
trigger_error($required_options[$option] . ' is a required option', E_USER_WARNING);
}
$this->_options[$option] = $value;
return curl_setopt($ch, $option, $value);
}
/**
* @param bool $on
*/
public function verbose($on = true)
{
$this->setOpt(CURLOPT_VERBOSE, $on);
}
/**
*
*/
public function close()
{
if ($this->_multi_parent) {
foreach ($this->curls as $curl) {
curl_close($curl->curl);
}
}
if (is_resource($this->curl)) {
curl_close($this->curl);
}
}
/**
* @param $function
*/
public function beforeSend($function)
{
$this->_before_send = $function;
}
/**
* @param $callback
*/
public function success($callback)
{
$this->_success = $callback;
}
/**
* @param $callback
*/
public function error($callback)
{
$this->_error = $callback;
}
/**
* @param $callback
*/
public function complete($callback)
{
$this->_complete = $callback;
}
/**
* @param $url
* @param array $data
* @return string
*/
private function _buildURL($url, $data = array())
{
return $url . (empty($data) ? '' : '?' . http_build_query($data));
}
/**
* @param $data
* @return array|string
*/
private function _postfields($data)
{
if (is_array($data)) {
if (is_array_multidim($data)) {
$data = http_build_multi_query($data);
} else {
foreach ($data as $key => $value) {
if (is_array($value) && empty($value)) {
$data[$key] = '';
}
}
}
}
return $data;
}
/**
* @param null $_ch
* @return int|mixed
*/
protected function exec($_ch = null)
{
$ch = is_null($_ch) ? $this : $_ch;
if ($ch->_multi_child) {
$ch->response = curl_multi_getcontent($ch->curl);
} else {
$ch->response = curl_exec($ch->curl);
}
$ch->curl_error_code = curl_errno($ch->curl);
$ch->curl_error_message = curl_error($ch->curl);
$ch->curl_error = !($ch->curl_error_code === 0);
$ch->http_status_code = curl_getinfo($ch->curl, CURLINFO_HTTP_CODE);
$ch->http_error = in_array(floor($ch->http_status_code / 100), array(4, 5));
$ch->error = $ch->curl_error || $ch->http_error;
$ch->error_code = $ch->error ? ($ch->curl_error ? $ch->curl_error_code : $ch->http_status_code) : 0;
$ch->request_headers = preg_split('/\r\n/', curl_getinfo($ch->curl, CURLINFO_HEADER_OUT), null, PREG_SPLIT_NO_EMPTY);
$ch->response_headers = '';
if (!(strpos($ch->response, "\r\n\r\n") === false)) {
list($response_header, $ch->response) = explode("\r\n\r\n", $ch->response, 2);
if ($response_header === 'HTTP/1.1 100 Continue') {
list($response_header, $ch->response) = explode("\r\n\r\n", $ch->response, 2);
}
$ch->response_headers = preg_split('/\r\n/', $response_header, null, PREG_SPLIT_NO_EMPTY);
}
$ch->http_error_message = $ch->error ? (isset($ch->response_headers['0']) ? $ch->response_headers['0'] : '') : '';
$ch->error_message = $ch->curl_error ? $ch->curl_error_message : $ch->http_error_message;
if (!$ch->error) {
$ch->_call($this->_success, $ch);
} else {
$ch->_call($this->_error, $ch);
}
$ch->_call($this->_complete, $ch);
return $ch->error_code;
}
/**
* @param $function
*/
private function _call($function)
{
if (is_callable($function)) {
$args = func_get_args();
array_shift($args);
call_user_func_array($function, $args);
}
}
/**
*
*/
public function __destruct()
{
$this->close();
}
}
/**
* @param $array
* @return bool
*/
function is_array_assoc($array)
{
return (bool)count(array_filter(array_keys($array), 'is_string'));
}
/**
* @param $array
* @return bool
*/
function is_array_multidim($array)
{
if (!is_array($array)) {
return false;
}
return !(count($array) === count($array, COUNT_RECURSIVE));
}
/**
* @param $data
* @param null $key
* @return string
*/
function http_build_multi_query($data, $key = null)
{
$query = array();
if (empty($data)) {
return $key . '=';
}
$is_array_assoc = is_array_assoc($data);
foreach ($data as $k => $value) {
if (is_string($value) || is_numeric($value)) {
$brackets = $is_array_assoc ? '[' . $k . ']' : '[]';
$query[] = urlencode(is_null($key) ? $k : $key . $brackets) . '=' . rawurlencode($value);
} else if (is_array($value)) {
$nested = is_null($key) ? $k : $key . '[' . $k . ']';
$query[] = http_build_multi_query($value, $nested);
}
}
return implode('&', $query);
}