Skip to content

Commit c89c21c

Browse files
committed
used serializer to read json data into a specific sdk class (SensitiveDataConfigType) rather than stdClass.
1 parent 27a28d6 commit c89c21c

4 files changed

Lines changed: 83 additions & 12 deletions

File tree

classmap.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@
223223
'net\authorize\util\LogFactory' => $libDir . 'net/authorize/util/LogFactory.php',
224224
'net\authorize\util\ANetSensitiveFields' => $libDir . 'net/authorize/util/ANetSensitiveFields.php',
225225
'net\authorize\util\SensitiveTag' => $libDir . 'net/authorize/util/SensitiveTag.php',
226-
226+
'net\authorize\util\SensitiveDataConfigType' => $libDir . 'net/authorize/util/SensitiveDataConfigType.php',
227227

228228
//constants
229229
'net\authorize\api\constants\ANetEnvironment' => $libDir . 'net/authorize/api/constants/ANetEnvironment.php',
@@ -251,7 +251,7 @@
251251
'net\authorize\api\contract\v1\AuthenticateTestRequest' => $libDir . 'net/authorize/api/contract/v1/AuthenticateTestRequest.php',
252252
'net\authorize\api\contract\v1\AuthenticateTestResponse' => $libDir . 'net/authorize/api/contract/v1/AuthenticateTestResponse.php',
253253
'net\authorize\api\contract\v1\BankAccountMaskedType' => $libDir . 'net/authorize/api/contract/v1/BankAccountMaskedType.php',
254-
'net\authorize\api\contract\v1\BankAccountType' => $libDir . 'net/authorize/api/contract/v1/Bank`AccountType.php',
254+
'net\authorize\api\contract\v1\BankAccountType' => $libDir . 'net/authorize/api/contract/v1/BankAccountType.php',
255255
'net\authorize\api\contract\v1\BatchDetailsType' => $libDir . 'net/authorize/api/contract/v1/BatchDetailsType.php',
256256
'net\authorize\api\contract\v1\BatchStatisticType' => $libDir . 'net/authorize/api/contract/v1/BatchStatisticType.php',
257257
'net\authorize\api\contract\v1\CardArtType' => $libDir . 'net/authorize/api/contract/v1/CardArtType.php',

lib/net/authorize/util/ANetSensitiveFields.php

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,62 @@
11
<?php
22
namespace net\authorize\util;
33

4+
use JMS\Serializer\SerializerBuilder;
5+
46
define("ANET_SENSITIVE_XMLTAGS_JSON_FILE","AuthorizedNetSensitiveTagsConfig.json");
7+
define("ANET_SENSITIVE_DATE_CONFIG_CLASS",'net\authorize\util\SensitiveDataConfigType');
58

69
class ANetSensitiveFields
710
{
811
private static $applySensitiveTags = NULL;
912
private static $sensitiveStringRegexes = NULL;
1013

1114
private static function fetchFromConfigFiles(){
12-
$configFilePath = dirname(__FILE__) . "/" . ANET_SENSITIVE_XMLTAGS_JSON_FILE;
15+
if(!class_exists(ANET_SENSITIVE_DATE_CONFIG_CLASS))
16+
exit("Class (".ANET_SENSITIVE_DATE_CONFIG_CLASS.") doesn't exist; can't deserialize json; can't log. Exiting.");
17+
18+
$serializer = SerializerBuilder::create()->build();
19+
1320
$userConfigFile = ANET_SENSITIVE_XMLTAGS_JSON_FILE;
21+
$configFilePath = dirname(__FILE__) . "/" . ANET_SENSITIVE_XMLTAGS_JSON_FILE;
22+
1423
$presentUserConfigFile = file_exists($userConfigFile);
24+
$useDefaultConfigFile = !$presentUserConfigFile;
1525
if ($presentUserConfigFile) { //client config for tags
16-
//read list of tags(and associate regex-patterns and replacements) from .json file
17-
$jsonFileObejct = json_decode(file_get_contents($userConfigFile));
18-
$sensitiveTags = $jsonFileObejct->sensitiveTags;
19-
self::$sensitiveStringRegexes = $jsonFileObejct->sensitiveStringRegexes;
26+
//read list of tags (and associated regex-patterns and replacements) from .json file
27+
$jsonFileData=file_get_contents($userConfigFile);
28+
$sensitiveDataConfig = $serializer->deserialize($jsonFileData, ANET_SENSITIVE_DATE_CONFIG_CLASS, 'json');
29+
30+
$sensitiveTags = $sensitiveDataConfig->sensitiveTags;
31+
self::$sensitiveStringRegexes = $sensitiveDataConfig->sensitiveStringRegexes;
32+
2033
if (json_last_error() === JSON_ERROR_NONE) {// JSON is valid
2134
}
2235
else{
2336
echo "ERROR: Invalid json in: " . $userConfigFile . " json_last_error_msg : " . json_last_error_msg();
24-
$presentUserConfigFile = false;
37+
$useDefaultConfigFile = true;
2538
}
2639
}
27-
if (!$presentUserConfigFile) { //default sdk config for tags
40+
41+
if ($useDefaultConfigFile) { //default sdk config for tags
2842
if(!file_exists($configFilePath)){
2943
exit("ERROR: No config file: " . $configFilePath);
3044
}
31-
$jsonFileObejct = json_decode(file_get_contents($configFilePath));
32-
$sensitiveTags = $jsonFileObejct->sensitiveTags;
33-
self::$sensitiveStringRegexes = $jsonFileObejct->sensitiveStringRegexes;
45+
46+
//read list of tags (and associated regex-patterns and replacements) from .json file
47+
$jsonFileData=file_get_contents($configFilePath);
48+
$sensitiveDataConfig = $serializer->deserialize($jsonFileData, ANET_SENSITIVE_DATE_CONFIG_CLASS, 'json');
49+
50+
$sensitiveTags = $sensitiveDataConfig->sensitiveTags;
51+
self::$sensitiveStringRegexes = $sensitiveDataConfig->sensitiveStringRegexes;
52+
3453
if (json_last_error() === JSON_ERROR_NONE) {
3554
}
3655
else{
3756
exit("ERROR: Invalid json in: " . $configFilePath . " json_last_error_msg : " . json_last_error_msg());
3857
}
3958
}
59+
4060
//Check for disableMask flag in case of client json.
4161
self::$applySensitiveTags = array();
4262
foreach($sensitiveTags as $sensitiveTag){
@@ -48,12 +68,14 @@ private static function fetchFromConfigFiles(){
4868
}
4969
}
5070
}
71+
5172
public static function getSensitiveStringRegexes(){
5273
if(NULL == self::$sensitiveStringRegexes) {
5374
self::fetchFromConfigFiles();
5475
}
5576
return self::$sensitiveStringRegexes;
5677
}
78+
5779
public static function getSensitiveXmlTags(){
5880
if(NULL == self::$applySensitiveTags) {
5981
self::fetchFromConfigFiles();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
namespace net\authorize\util;
3+
use JMS\Serializer\Annotation\Type;
4+
use JMS\Serializer\Annotation\SerializedName;
5+
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
9+
10+
class SensitiveDataConfigType
11+
{
12+
/**
13+
* @Type("array<net\authorize\util\SensitiveTag>")
14+
* @SerializedName("sensitiveTags")
15+
*/
16+
public $sensitiveTags;
17+
18+
/**
19+
* @Type("array<string>")
20+
* @SerializedName("sensitiveStringRegexes")
21+
*/
22+
public $sensitiveStringRegexes;
23+
}
24+
?>

lib/net/authorize/util/SensitiveTag.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,36 @@
11
<?php
22
namespace net\authorize\util;
3+
use JMS\Serializer\Annotation\Type;
4+
use JMS\Serializer\Annotation\SerializedName;
5+
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
39

410
class SensitiveTag
511
{
12+
/**
13+
* @Type("string")
14+
* @SerializedName("tagName")
15+
*/
616
public $tagName;
17+
18+
/**
19+
* @Type("string")
20+
* @SerializedName("pattern")
21+
*/
722
public $pattern;
23+
24+
/**
25+
* @Type("string")
26+
* @SerializedName("replacement")
27+
*/
828
public $replacement;
29+
30+
/**
31+
* @Type("boolean")
32+
* @SerializedName("disableMask")
33+
*/
934
public $disableMask;
1035

1136
public function __construct($tagName, $pattern="", $replace="",$disableMask = false){

0 commit comments

Comments
 (0)