Skip to content

Commit a6ebbfa

Browse files
committed
Merge branch 'kikmak42-nodep' into nodependency-rc
2 parents 0cb5494 + fad864b commit a6ebbfa

23 files changed

+502
-217
lines changed

.gitmodules

-4
This file was deleted.

classmap.php

-181
Large diffs are not rendered by default.

composer.json

+1-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@
88
"require": {
99
"php": ">=5.6",
1010
"ext-curl": "*",
11-
"ext-json": "*",
12-
"ext-simplexml": "*",
13-
"ext-xmlwriter": "*",
14-
"goetas-webservices/xsd2php-runtime":"^0.2.2"
11+
"ext-json": "*"
1512
},
1613
"require-dev": {
1714
"phpunit/phpunit": "~4.0",

lib/net/authorize/api/controller/base/ApiOperationBase.php

+25-11
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
namespace net\authorize\api\controller\base;
33

44
use InvalidArgumentException;
5-
use JMS\Serializer\SerializerBuilder;
6-
use JMS\Serializer\handler\HandlerRegistryInterface;
7-
use GoetasWebservices\Xsd\XsdToPhpRuntime\Jms\Handler\BaseTypesHandler;
8-
use GoetasWebservices\Xsd\XsdToPhpRuntime\Jms\Handler\XmlSchemaDateHandler;
5+
// use JMS\Serializer\SerializerBuilder;
6+
// use JMS\Serializer\handler\HandlerRegistryInterface;
7+
// use GoetasWebservices\Xsd\XsdToPhpRuntime\Jms\Handler\BaseTypesHandler;
8+
// use GoetasWebservices\Xsd\XsdToPhpRuntime\Jms\Handler\XmlSchemaDateHandler;
99

1010
use \net\authorize\util\HttpClient;
1111
use \net\authorize\util\Helpers;
@@ -71,7 +71,7 @@ public function __construct(\net\authorize\api\contract\v1\AnetApiRequestType $r
7171
$this->apiResponseType = $responseType;
7272
$this->httpClient = new HttpClient;
7373

74-
$serializerBuilder = SerializerBuilder::create();
74+
/* $serializerBuilder = SerializerBuilder::create();
7575
$serializerBuilder->addMetadataDir( __DIR__ . '/../../yml/v1', 'net\authorize\api\contract\v1');//..\..\yml\v1\ //'/../lib/net/authorize/api/yml/v1'
7676
$serializerBuilder->configureHandlers(
7777
function (HandlerRegistryInterface $h)
@@ -83,7 +83,7 @@ function (HandlerRegistryInterface $h)
8383
$h->registerSubscribingHandler(new XmlSchemaDateHandler()); // XMLSchema date handling
8484
}
8585
);
86-
$this->serializer = $serializerBuilder->build();
86+
$this->serializer = $serializerBuilder->build();*/
8787
}
8888

8989
/**
@@ -111,23 +111,37 @@ public function execute($endPoint = \net\authorize\api\constants\ANetEnvironment
111111

112112
$this->apiRequest->setClientId("sdk-php-" . \net\authorize\api\constants\ANetEnvironment::VERSION);
113113

114-
$this->logger->info("Request Serialization Begin");
114+
$this->logger->info("Request Creation Begin");
115115
$this->logger->debug($this->apiRequest);
116-
$xmlRequest = $this->serializer->serialize($this->apiRequest, 'xml');
116+
// $xmlRequest = $this->serializer->serialize($this->apiRequest, 'xml');
117+
//$requestArray = [lcfirst((new \ReflectionClass($this->apiRequest))->getShortName()) => $this->apiRequest];
118+
119+
// $requestRoot = (new \net\authorize\api\contract\v1\Mapper)->getXmlName((new \ReflectionClass($this->apiRequest))->getName());
120+
// $requestRoot = (\net\authorize\api\contract\v1\Mapper::Instance())->getXmlName((new \ReflectionClass($this->apiRequest))->getName());
121+
$mapper = \net\authorize\util\Mapper::Instance();
122+
$requestRoot = $mapper->getXmlName((new \ReflectionClass($this->apiRequest))->getName());
123+
124+
$requestArray = [$requestRoot => $this->apiRequest];
117125

118-
$this->logger->info("Request Serialization End");
126+
$this->logger->info("Request Creation End");
119127
/*
120128
//$xmlRequest = '<?xml version="1.0" encoding="UTF-8"?> <ARBGetSubscriptionListRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> <name>4YJmeW7V77us</name> <transactionKey>4qHK9u63F753be4Z</transactionKey> </merchantAuthentication> <refId><![CDATA[ref1416999093]]></refId> <searchType><![CDATA[subscriptionActive]]></searchType> <sorting> <orderBy><![CDATA[firstName]]></orderBy> <orderDescending>false</orderDescending> </sorting> <paging> <limit>10</limit> <offset>1</offset> </paging> </ARBGetSubscriptionListRequest> ';
121129
*/
122130
$this->httpClient->setPostUrl( $endPoint);
123-
$xmlResponse = $this->httpClient->_sendRequest($xmlRequest);
131+
/*$xmlResponse = $this->httpClient->_sendRequest($xmlRequest);
124132
if ( null == $xmlResponse)
125133
{
126134
throw new \Exception( "Error getting valid response from api. Check log file for error details");
127135
}
128136
$this->logger->info("Response De-Serialization Begin");
129137
$this->apiResponse = $this->serializer->deserialize( $xmlResponse, $this->apiResponseType , 'xml');
130-
$this->logger->info("Response De-Serialization End");
138+
$this->logger->info("Response De-Serialization End");*/
139+
140+
$jsonResponse = $this->httpClient->_sendRequest(json_encode($requestArray));
141+
//decoding json and removing bom
142+
$response = json_decode( substr($jsonResponse,3), true);
143+
$this->apiResponse = new $this->apiResponseType();
144+
$this->apiResponse->set($response);
131145

132146
$this->afterExecute();
133147
}

lib/net/authorize/util/ANetSensitiveFields.php

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
namespace net\authorize\util;
33

4-
use JMS\Serializer\SerializerBuilder;
4+
55

66
define("ANET_SENSITIVE_XMLTAGS_JSON_FILE","AuthorizedNetSensitiveTagsConfig.json");
77
define("ANET_SENSITIVE_DATE_CONFIG_CLASS",'net\authorize\util\SensitiveDataConfigType');
@@ -15,7 +15,6 @@ private static function fetchFromConfigFiles(){
1515
if(!class_exists(ANET_SENSITIVE_DATE_CONFIG_CLASS))
1616
exit("Class (".ANET_SENSITIVE_DATE_CONFIG_CLASS.") doesn't exist; can't deserialize json; can't log. Exiting.");
1717

18-
$serializer = SerializerBuilder::create()->build();
1918

2019
$userConfigFilePath = ANET_SENSITIVE_XMLTAGS_JSON_FILE;
2120
$presentUserConfigFile = file_exists($userConfigFilePath);
@@ -27,7 +26,7 @@ private static function fetchFromConfigFiles(){
2726
//read list of tags (and associated regex-patterns and replacements) from .json file
2827
try{
2928
$jsonFileData=file_get_contents($userConfigFilePath);
30-
$sensitiveDataConfig = $serializer->deserialize($jsonFileData, ANET_SENSITIVE_DATE_CONFIG_CLASS, 'json');
29+
$sensitiveDataConfig = json_decode($jsonFileData);
3130

3231
$sensitiveTags = $sensitiveDataConfig->sensitiveTags;
3332
self::$sensitiveStringRegexes = $sensitiveDataConfig->sensitiveStringRegexes;
@@ -47,7 +46,7 @@ private static function fetchFromConfigFiles(){
4746
//read list of tags (and associated regex-patterns and replacements) from .json file
4847
try{
4948
$jsonFileData=file_get_contents($configFilePath);
50-
$sensitiveDataConfig = $serializer->deserialize($jsonFileData, ANET_SENSITIVE_DATE_CONFIG_CLASS, 'json');
49+
$sensitiveDataConfig = json_decode($jsonFileData);
5150

5251
$sensitiveTags = $sensitiveDataConfig->sensitiveTags;
5352
self::$sensitiveStringRegexes = $sensitiveDataConfig->sensitiveStringRegexes;

lib/net/authorize/util/HttpClient.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public function _sendRequest($xmlRequest)
8484
}
8585

8686
if (preg_match('/xml/',$post_url)) {
87-
curl_setopt($curl_request, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
87+
curl_setopt($curl_request, CURLOPT_HTTPHEADER, Array("Content-Type: text/json"));
8888
// file_put_contents($this->_log_file, "\nSending 'XML' Request type", FILE_APPEND);
8989
$this->logger->info("Sending 'XML' Request type");
9090
}

lib/net/authorize/util/Mapper.php

+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
<?php
2+
namespace net\authorize\util;
3+
4+
class Mapper{
5+
private $classes = array();
6+
// private $dir = __DIR__ . "/../../yml/v1/";
7+
8+
// private function __construct() {
9+
// $files = scandir($this->dir);
10+
// foreach ($files as $file) {
11+
// // echo "filename:" . $file . "\n";
12+
// // Elementing the ..
13+
// if($file != "." && $file != ".." ){
14+
// $value = Yaml::parseFile($this->dir.$file);
15+
// //var_dump($value);
16+
// //array_push($classes, $value);
17+
// //var_dump($classes);
18+
// //echo $value['net\authorize\api\contract\v1\ANetApiRequestType']['properties']['merchantAuthentication']['type']."\n";
19+
// $key = key($value);
20+
// $this->classes[$key] = $value[$key];
21+
// //break;
22+
// }
23+
// }
24+
// }
25+
private function __construct() {
26+
$this->classes = json_decode(file_get_contents(__DIR__ ."/classes.json"), true);
27+
}
28+
29+
public static function Instance()
30+
{
31+
static $inst = null;
32+
if ($inst === null) {
33+
$inst = new Mapper();
34+
}
35+
return $inst;
36+
}
37+
38+
// public function getClass(string $classname, string $property){
39+
40+
// if(isset($this->classes[$classname]['properties'][$property]['type'])){
41+
// return $this->classes[$classname]['properties'][$property]['type'];
42+
// }
43+
// else if ($property == "refId" || $property == "sessionToken" ){
44+
// return 'string';
45+
// }
46+
// else if ($property == "messages" ){
47+
// return 'net\authorize\api\contract\v1\MessagesType';
48+
// }
49+
// else{
50+
// echo "Error finding in YAML - ".$classname." ".$property."\n";
51+
// return 'string';
52+
// }
53+
// // return $this->classes[$classname]['properties'][$property]['type'];
54+
// }
55+
56+
public function getClass($class, $property){
57+
// make the first letter of property as lowercase as all properties are lowercase
58+
$property = lcfirst($property);
59+
60+
//echo "getClass calling : class - " . $class . " property - " . $property . "\n";
61+
$obj = new MapperObj;
62+
63+
if(isset($this->classes[$class]['properties'][$property]['type'])){
64+
$className = $this->classes[$class]['properties'][$property]['type'];
65+
if (stripos($className, "DateTime<'Y-m-d'>") !== false) {
66+
$className = 'Date';
67+
}
68+
else if (stripos($className, "DateTime") !== false) {
69+
$className = 'DateTime';
70+
}
71+
if(substr( $className, 0, 5 ) === "array") {
72+
$className = ltrim($className, 'array<');
73+
$className = rtrim($className, '>');
74+
$obj->isArray = true;
75+
76+
if(isset($this->classes[$class]['properties'][$property]['xml_list']['entry_name'])){
77+
// echo $file."\t\t\t\t\t\t\t\t\t";
78+
// echo $propKey." :: ".$prop['serialized_name']." - ".$prop['xml_list']['entry_name']." - ".$prop['xml_list']['inline'];
79+
// echo "\n";
80+
$obj->isInlineArray = $this->classes[$class]['properties'][$property]['xml_list']['inline'];
81+
$obj->arrayEntryname = $this->classes[$class]['properties'][$property]['xml_list']['entry_name'];
82+
}
83+
}
84+
$obj->className = $className;
85+
$obj->isCustomDefined = stripos($className, '\\') !== false;
86+
87+
return $obj;
88+
}
89+
else if(get_parent_class($class)){
90+
//echo "Checking parent class in YAML - ".get_parent_class($class)." -".$class." - ".$property."\n";
91+
return $this->getClass(get_parent_class($class), $property);
92+
}
93+
// else if ($property == "refId" || $property == "sessionToken" ){
94+
// return 'string';
95+
// }
96+
// else if ($property == "messages" ){
97+
//
98+
// $className = 'net\authorize\api\contract\v1\MessagesType';
99+
// $obj->className = $className;
100+
// $obj->isCustomDefined = stripos($className, '\\') !== false;
101+
//
102+
// return $obj;
103+
// }
104+
else{
105+
echo "Error finding in YAML - ".$class." - ".$property."\n";
106+
$obj = NULL;
107+
return $obj;
108+
}
109+
// return $this->classes[$classname]['properties'][$property]['type'];
110+
}
111+
112+
public function getXmlName($class){
113+
if(isset($this->classes[$class]['xml_root_name'])){
114+
return $this->classes[$class]['xml_root_name'];
115+
}
116+
}
117+
}
118+
//echo $classes['net\authorize\api\contract\v1\ANetApiRequestType']['properties']['merchantAuthentication']['type']."\n";
119+
120+
//$value = Yaml::parseFile('/*.yaml');
121+
122+
?>

lib/net/authorize/util/MapperGen.php

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<?php
2+
require 'vendor/autoload.php';
3+
4+
use Symfony\Component\Yaml\Yaml as YamlLib;
5+
6+
$classes = array();
7+
$dir = __DIR__ . "/../api/yml/v1/";
8+
$files = scandir($dir);
9+
foreach ($files as $file) {
10+
// echo "filename:" . $file . "\n";
11+
// Elementing the ..
12+
if($file != "." && $file != ".." ){
13+
$value = YamlLib::parseFile($dir.$file);
14+
//var_dump($value);
15+
//array_push($classes, $value);
16+
//var_dump($classes);
17+
//echo $value['net\authorize\api\contract\v1\ANetApiRequestType']['properties']['merchantAuthentication']['type']."\n";
18+
$key = key($value);
19+
$classes[$key] = $value[$key];
20+
//break;
21+
}
22+
}
23+
file_put_contents(__DIR__ ."/classes.json",json_encode($classes));
24+
# array.json => {"a":1,"b":2,"c":3,"d":4,"e":5}
25+
$classes2 = json_decode(file_get_contents(__DIR__ ."/classes.json"), true);
26+
//Validate the JSON
27+
if($classes === $classes2) # => true
28+
{
29+
echo "JSON Created out of XML Successfully! - ".__DIR__ ."/classes.json\n";
30+
}
31+
32+
// class MapperGen{
33+
// private $classes = array();
34+
// private $dir = __DIR__ . "/../../yml/v1/";
35+
36+
// private function __construct() {
37+
// $files = scandir($this->dir);
38+
// foreach ($files as $file) {
39+
// // echo "filename:" . $file . "\n";
40+
// // Elementing the ..
41+
// if($file != "." && $file != ".." ){
42+
// $value = Yaml::parseFile($this->dir.$file);
43+
// //var_dump($value);
44+
// //array_push($classes, $value);
45+
// //var_dump($classes);
46+
// //echo $value['net\authorize\api\contract\v1\ANetApiRequestType']['properties']['merchantAuthentication']['type']."\n";
47+
// $key = key($value);
48+
// $this->classes[$key] = $value[$key];
49+
// //break;
50+
// }
51+
// }
52+
// }
53+
54+
// public static function Instance()
55+
// {
56+
// static $inst = null;
57+
// if ($inst === null) {
58+
// $inst = new Mapper();
59+
// }
60+
// return $inst;
61+
// }
62+
63+
// public function generateFile(){
64+
// file_put_contents("array.json",json_encode($classes));
65+
// # array.json => {"a":1,"b":2,"c":3,"d":4,"e":5}
66+
// $classes2 = json_decode(file_get_contents('array.json'), true);
67+
// if($classes === $classes2) # => true
68+
// {
69+
// echo "All Good!";
70+
// }
71+
// }
72+
73+
?>

lib/net/authorize/util/MapperObj.php

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
namespace net\authorize\util;
3+
4+
class MapperObj{
5+
6+
public $isCustomDefined = false;
7+
8+
public $className = null;
9+
10+
public $isArray = false;
11+
12+
public $isInlineArray = false;
13+
14+
public $arrayEntryname = null;
15+
}
16+
//echo $classes['net\authorize\api\contract\v1\ANetApiRequestType']['properties']['merchantAuthentication']['type']."\n";
17+
18+
//$value = Yaml::parseFile('/*.yaml');
19+
20+
?>

lib/net/authorize/util/SensitiveDataConfigType.php

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
<?php
22
namespace net\authorize\util;
3-
use JMS\Serializer\Annotation\Type;
4-
use JMS\Serializer\Annotation\SerializedName;
53

6-
$type=new Type;
7-
$serializedName=new SerializedName(array("value"=>"Loading-SerializedName-Class"));
8-
//to do: use Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespace to auto load classes
4+
95

106
class SensitiveDataConfigType
117
{

lib/net/authorize/util/classes.json

+1
Large diffs are not rendered by default.

sample-code-php

-1
This file was deleted.

0 commit comments

Comments
 (0)