Skip to content

Commit

Permalink
Merge branch 'release-2.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Adena Internet committed Feb 8, 2018
2 parents ee93f6d + 9fe2f01 commit a5dc78c
Show file tree
Hide file tree
Showing 26 changed files with 984 additions and 15 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "vleks/sdk",
"description": "A PHP client SDK for the Vleks.com API",
"version": "2.0.0",
"version": "2.1.0",
"type": "library",
"keywords": ["api", "sdk", "vleks", "vleks.com"],
"homepage": "https://www.vleks.com",
Expand Down
41 changes: 41 additions & 0 deletions examples/MockExample.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

#-------------------------------------------------------------------------------
# INCLUDE THE CONFIGURATION FILE
#
# This file contains some default environment configuration which are used to
# ensure your examples will run.
#-------------------------------------------------------------------------------

require 'config.php';

#-------------------------------------------------------------------------------
# SETUP CLIENT
#
# The Mock Client doesn't require credentials in order to function
#-------------------------------------------------------------------------------

$client = new Vleks\SDK\Mock();

#-------------------------------------------------------------------------------
# ACCEPT ORDERS
#-------------------------------------------------------------------------------

try {
$request = new Vleks\SDK\Requests\AcceptOrders(array(
'Order' => array(
array('OrderID' => '-- ORDER ID --')
)
));
$result = $client->acceptOrders($request);

if ($result->hasFeeds()) {
foreach ($result->getFeeds() as $feed) {
var_dump($feed->getRequestID());
}
}
} catch (Vleks\SDK\Exceptions\ClientException $clientException) {
var_dump($clientException->getMessage());
} catch (Vleks\SDK\Exceptions\ServiceException $serviceException) {
var_dump($serviceException->getMessage());
}
74 changes: 73 additions & 1 deletion src/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

class Client
{
const VERSION = '2.0.0';
const VERSION = '2.1.0';
const ENDPOINT = 'https://%s/api/vleks/2017-05/';
const MESSAGE_HEADERS = 'HEADERS';
const MESSAGE_BODY = 'BODY';
Expand Down Expand Up @@ -56,6 +56,25 @@ public function listProducts($request)
return $result;
}

/**
* Count Products
*
* @param Vleks\SDK\Requests\CountProducts $request
* @return Vleks\SDK\Results\CountProducts
*/
public function countProducts($request)
{
if (!$request instanceof Requests\CountProducts) {
$request = new Requests\CountProducts($request);
}

$response = $this->invoke($this->convertCountProductsRequest($request));
$result = Results\CountProducts::fromXML($response['ResponseBody']);
$result->setResponseHeaders($response['ResponseHeaders']);

return $result;
}

/**
* Insert/Update products
*
Expand Down Expand Up @@ -151,6 +170,25 @@ public function listOrders($request)
return $result;
}

/**
* Count Orders
*
* @param Vleks\SDK\Requests\CountOrders $request
* @return Vleks\SDK\Results\CountOrders
*/
public function countOrders($request)
{
if (!$request instanceof Requests\CountOrders) {
$request = new Requests\CountOrders($request);
}

$response = $this->invoke($this->convertCountOrdersRequest($request));
$result = Results\CountOrders::fromXML($response['ResponseBody']);
$result->setResponseHeaders($response['ResponseHeaders']);

return $result;
}

/**
* Reject Orders
*
Expand Down Expand Up @@ -269,6 +307,19 @@ public function addShipments($request)
# INFORMATION CONVERTION METHODS
############################################################################

private function convertCountProductsRequest($request)
{
$messageHeaders = array (
'Entity' => 'Product',
'Action' => 'Count'
);

return array(
self::MESSAGE_HEADERS => $messageHeaders,
self::MESSAGE_BODY => null
);
}

private function convertListProductsRequest($request)
{
$messageContent = array ();
Expand Down Expand Up @@ -369,6 +420,23 @@ private function convertFeedResultRequest($request)
);
}

private function convertCountOrdersRequest($request)
{
$messageHeaders = array (
'Entity' => 'Order',
'Action' => 'Count'
);

if ($request->hasPeriod()) {
$messageHeaders['Period'] = $request->getPeriod();
}

return array(
self::MESSAGE_HEADERS => $messageHeaders,
self::MESSAGE_BODY => null
);
}

private function convertListOrdersRequest($request)
{
$messageHeaders = array (
Expand All @@ -384,6 +452,10 @@ private function convertListOrdersRequest($request)
$messageHeaders['Offset'] = $request->getOffset();
}

if ($request->hasPeriod()) {
$messageHeaders['Period'] = $request->getPeriod();
}

return array(
self::MESSAGE_HEADERS => $messageHeaders,
self::MESSAGE_BODY => null
Expand Down
31 changes: 31 additions & 0 deletions src/Entities/Count.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php namespace Vleks\SDK\Entities;

use Vleks\SDK\Model;

class Count extends Model
{
public function __construct($data = null)
{
$this->fields = array (
'Result' => array ('value' => null, 'type' => 'int')
);

parent::__construct($data);
}

public function setResult ($value)
{
$this->fields['Result']['value'] = $value;
return $this;
}

public function getResult ()
{
return $this->fields['Result']['value'];
}

public function hasResult ()
{
return !is_null($this->fields['Result']['value']);
}
}
171 changes: 171 additions & 0 deletions src/Mock.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
<?php namespace Vleks\SDK;

use Vleks\SDK\Results;

class Mock
{
/**
* List available products
*
* @param Vleks\SDK\Requests\ListProducts $request
* @return Vleks\SDK\Results\ListProducts
*/
public function listProducts($request)
{
return Results\ListProducts::fromXML($this->invoke('listProducts'));
}

/**
* Insert/Update products
*
* @param Vleks\SDK\Requests\UpdateProducts $request
* @return Vleks\SDK\Results\FeedStatus
*/
public function updateProducts($request)
{
return Results\FeedStatus::fromXML($this->invoke('updateProducts'));
}

/**
* Delete products
*
* @param Vleks\SDK\Requests\DeleteProducts $request
* @return Vleks\SDK\Results\FeedStatus
*/
public function deleteProducts($request)
{
return Results\FeedStatus::fromXML($this->invoke('deleteProducts'));
}

/**
* Get statusses of requested feeds (changes)
*
* @param Vleks\SDK\Requests\FeedStatus $request
* @return Vleks\SDK\Results\FeedStatus
*/
public function getFeedStatus($request)
{
return Results\FeedStatus::fromXML($this->invoke('getFeedStatus'));
}

/**
* Get results of requested feeds (changes)
*
* @param Vleks\SDK\Requests\FeedResult $request
* @return Vleks\SDK\Results\FeedResult
*/
public function getFeedResult($request)
{
return Results\FeedResult::fromXML($this->invoke('getFeedResult'));
}

/**
* List Orders
*
* @param Vleks\SDK\Requests\ListOrders $request
* @return Vleks\SDK\Results\ListOrders
*/
public function listOrders($request)
{
return Results\ListOrders::fromXML($this->invoke('listOrders'));
}

/**
* Reject Orders
*
* @param Vleks\SDK\Requests\RejectOrders $request
* @param Vleks\SDK\Results\FeedStatus
*/
public function rejectOrders($request)
{
return Results\FeedStatus::fromXML($this->invoke('rejectOrders'));
}

/**
* Accept Orders
*
* @param Vleks\SDK\Requests\AcceptOrders $request
* @param Vleks\SDK\Results\FeedStatus
*/
public function acceptOrders($request)
{
return Results\FeedStatus::fromXML($this->invoke('acceptOrders'));
}

/**
* Cancel Orders
*
* @param Vleks\SDK\Requests\CancelOrders $request
* @param Vleks\SDK\Results\FeedStatus
*/
public function cancelOrders($request)
{
return Results\FeedStatus::fromXML($this->invoke('cancelOrders'));
}

/**
* Finish Orders
*
* @param Vleks\SDK\Requests\FinishOrders $request
* @param Vleks\SDK\Results\FeedStatus
*/
public function finishOrders($request)
{
return Results\FeedStatus::fromXML($this->invoke('finishOrders'));
}

/**
* List Shipments
*
* @param Vleks\SDK\Requests\ListShipments $request
* @return Vleks\SDK\Results\ListShipments
*/
public function listShipments($request)
{
return Results\ListShipments::fromXML($this->invoke('listShipments'));
}

/**
* Add Shipments
*
* @param Vleks\SDK\Requests\AddShipments $request
* @return Vleks\SDK\Results\FeedStatus
*/
public function addShipments($request)
{
return Results\FeedStatus::fromXML($this->invoke('addShipments'));
}

/**
* Count Products
*
* @param Vleks\SDK\Requests\CountProducts $request
* @return Vleks\SDK\Results\CountProducts
*/
public function countProducts($request)
{
return Results\CountProducts::fromXML($this->invoke('countProducts'));
}

/**
* Count Orders
*
* @param Vleks\SDK\Requests\CountOrders $request
* @return Vleks\SDK\Results\CountOrders
*/
public function countOrders($request)
{
return Results\CountOrders::fromXML($this->invoke('countOrders'));
}

/**
* Load required response files
*
* @param string $actionName
* @return string
*/
private function invoke($actionName)
{
return file_get_contents('Mock/' . $actionName . '.xml', true);
}
}
6 changes: 6 additions & 0 deletions src/Mock/acceptOrders.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<VleksResponse>
<Feed>
<RequestID>********-****-****-****-************</RequestID>
</Feed>
</VleksResponse>
6 changes: 6 additions & 0 deletions src/Mock/addShipments.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<VleksResponse>
<Feed>
<RequestID>********-****-****-****-************</RequestID>
</Feed>
</VleksResponse>
6 changes: 6 additions & 0 deletions src/Mock/cancelOrders.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<VleksResponse>
<Feed>
<RequestID>********-****-****-****-************</RequestID>
</Feed>
</VleksResponse>
Loading

0 comments on commit a5dc78c

Please sign in to comment.