Skip to content

Commit ac98b74

Browse files
committed
release Drip Connect 2.0.7
1 parent f246b7d commit ac98b74

22 files changed

+277
-148
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@
66
/vendor
77
/htdocs
88
node_modules
9+
devtools_m2/vendor
10+
devtools_m2/devbox.d

Api/ProductDetails.php

+9-10
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ class ProductDetails
2626
protected $responseFactory;
2727

2828
/**
29-
* @var \Magento\ConfigurableProduct\Model\Product\Type\Configurable
30-
*/
29+
* @var \Magento\ConfigurableProduct\Model\Product\Type\Configurable
30+
*/
3131
protected $configurable;
3232

3333
public function __construct(
@@ -56,11 +56,10 @@ public function showDetails($productId)
5656
$productImage = $product->getImage();
5757
if (!empty($productImage)) {
5858
$productImage = $this->catalogProductMediaConfigFactory->create()->getMediaUrl($productImage);
59-
}
60-
else {
61-
if ($product->getTypeId() != 'configurable'){
59+
} else {
60+
if ($product->getTypeId() != 'configurable') {
6261
$parentProductId = $this->getParentId($productId);
63-
if ($parentProductId){
62+
if ($parentProductId) {
6463
$parentProduct = $this->catalogProductFactory->create()->load($parentProductId);
6564
$productImage = $parentProduct->getImage();
6665
if (!empty($productImage)) {
@@ -84,9 +83,9 @@ public function showDetails($productId)
8483
private function getParentId($childId)
8584
{
8685
$parentConfigObject = $this->configurable->getParentIdsByChild($childId);
87-
if($parentConfigObject) {
88-
return $parentConfigObject[0];
89-
}
90-
return false;
86+
if ($parentConfigObject) {
87+
return $parentConfigObject[0];
88+
}
89+
return false;
9190
}
9291
}

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44

55
* Add changelog here.
66

7+
## 2.0.7
8+
9+
* Switch to Laminas HTTP Client: Replaced the existing HTTP client with Laminas for better compatibility and maintainability.
10+
* Code Style and Deprecation Fixes: Applied PHP code style improvements and resolved deprecation warnings to align with modern PHP standards.
11+
* Security Enhancement: Updated security settings to allow JavaScript loading from Drip while maintaining application security.
12+
713
## 2.0.6
814

915
* In extension's endpoint (drip/product/:id) fetch configurable product image url when child products don't have one assigned

Model/ApiCalls/Base.php

+41-20
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@
22

33
namespace Drip\Connect\Model\ApiCalls;
44

5-
use \Drip\Connect\Model\Restapi\RestapiAbstract;
5+
use Drip\Connect\Logger\Logger;
6+
use Magento\Framework\App\Config\ScopeConfigInterface;
7+
use Magento\Framework\App\Config\Storage\WriterInterface;
8+
use Magento\Framework\ArchiveFactory;
9+
use Magento\Framework\Filesystem\DirectoryList;
10+
use Magento\Store\Model\StoreManagerInterface;
11+
use Drip\Connect\Model\Http\ClientFactory;
12+
use Drip\Connect\Model\Configuration;
13+
use Laminas\Http\Response;
14+
use Laminas\Http\Client\Exception\ExceptionInterface;
615

716
/**
817
* Restapi base class
@@ -11,16 +20,16 @@ class Base extends RestapiAbstract
1120
{
1221

1322
/**
14-
* @var \Magento\Framework\App\Config\ScopeConfigInterface
23+
* @var ScopeConfigInterface
1524
*/
1625
protected $scopeConfig;
1726

1827
/**
19-
* @var \Drip\Connect\Model\Http\ClientFactory
28+
* @var ClientFactory
2029
*/
2130
protected $connectHttpClientFactory;
2231

23-
/** @var \Magento\Store\Model\StoreManagerInterface */
32+
/** @var StoreManagerInterface */
2433
protected $storeManager;
2534

2635
/**
@@ -37,14 +46,14 @@ class Base extends RestapiAbstract
3746
* @param String $v3 API version
3847
*/
3948
public function __construct(
40-
\Drip\Connect\Logger\Logger $logger,
41-
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
42-
\Magento\Framework\App\Config\Storage\WriterInterface $configWriter,
43-
\Magento\Framework\ArchiveFactory $archiveFactory,
44-
\Magento\Framework\Filesystem\DirectoryList $directory,
45-
\Magento\Store\Model\StoreManagerInterface $storeManager,
46-
\Drip\Connect\Model\Http\ClientFactory $connectHttpClientFactory,
47-
\Drip\Connect\Model\Configuration $config,
49+
Logger $logger,
50+
ScopeConfigInterface $scopeConfig,
51+
WriterInterface $configWriter,
52+
ArchiveFactory $archiveFactory,
53+
DirectoryList $directory,
54+
StoreManagerInterface $storeManager,
55+
ClientFactory $connectHttpClientFactory,
56+
Configuration $config,
4857
$endpoint,
4958
$v3 = false
5059
) {
@@ -55,17 +64,17 @@ public function __construct(
5564
$archiveFactory,
5665
$directory
5766
);
58-
/*
67+
/*
5968
* Since the Drip extension is sending data through the WooBase class
60-
* we are clearing this to prevent issues in other parts of the codebase.
69+
* we are clearing this to prevent issues in other parts of the codebase.
6170
*/
6271
}
6372

6473
/**
6574
* Call the API
6675
*
6776
* @param \Drip\Connect\Model\Restapi\Request $request
68-
* @throws \Zend_Http_Client_Exception
77+
* @throws ExceptionInterface
6978
*/
7079
protected function _callApi($request)
7180
{
@@ -76,39 +85,51 @@ protected function _callApi($request)
7685
$this->_httpClient->setParameterPost($request->getParametersPost());
7786
}
7887
if (!empty($request->getRawData())) {
79-
$this->_httpClient->setRawData($request->getRawData());
88+
$this->_httpClient->setRawBody($request->getRawData());
8089
}
8190

8291
$response = $this->_httpClient->request($request->getMethod());
8392

8493
$this->_lastRequestUrl = $this->_httpClient->getUri();
85-
$this->_lastRequest = $this->_httpClient->getLastRequest();
94+
$this->_lastRequest = $this->_httpClient->getRequest();
8695

8796
return $response;
8897
}
8998

9099
protected function _forceValidResponse($request)
91100
{
92-
return new \Zend_Http_Response(200, ["Content-type" => "application/json; charset=utf-8"], json_encode([
101+
$response = new Response();
102+
$response->setStatusCode(200);
103+
$response->getHeaders()->addHeaderLine("Content-Type", "application/json; charset=utf-8");
104+
$response->setContent(json_encode([
93105
"Status" => "OK",
94106
"Message" => "Forced Valid Response"
95107
]));
108+
return $response;
96109
}
97110

98111
protected function _forceInvalidResponse($request)
99112
{
100-
return new \Zend_Http_Response(200, ["Content-type" => "application/json; charset=utf-8"], json_encode([
113+
$response = new Response();
114+
$response->setStatusCode(200);
115+
$response->getHeaders()->addHeaderLine("Content-Type", "application/json; charset=utf-8");
116+
$response->setContent(json_encode([
101117
"Status" => "OK",
102118
"Message" => "Forced Invalid Response"
103119
]));
120+
return $response;
104121
}
105122

106123
protected function _forceError($request)
107124
{
108-
return new \Zend_Http_Response(500, ["Content-type" => "application/json; charset=utf-8"], json_encode([
125+
$response = new Response();
126+
$response->setStatusCode(500);
127+
$response->getHeaders()->addHeaderLine("Content-Type", "application/json; charset=utf-8");
128+
$response->setContent(json_encode([
109129
"Status" => "Error",
110130
"Message" => "Forced Error Message"
111131
]));
132+
return $response;
112133
}
113134

114135
/**

Model/ApiCalls/Helper/CreateUpdateSubscriber.php

+9-4
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,20 @@
22

33
namespace Drip\Connect\Model\ApiCalls\Helper;
44

5+
use \Drip\Connect\Model\ApiCalls\BaseFactory;
6+
use \Drip\Connect\Model\ApiCalls\Request\BaseFactory as RequestBaseFactory;
7+
use \Drip\Connect\Model\Configuration;
8+
use \Laminas\Http\Request;
9+
510
/**
611
* Create or update a subscriber.
712
*/
813
class CreateUpdateSubscriber extends \Drip\Connect\Model\ApiCalls\Helper
914
{
1015
public function __construct(
11-
\Drip\Connect\Model\ApiCalls\BaseFactory $connectApiCallsBaseFactory,
12-
\Drip\Connect\Model\ApiCalls\Request\BaseFactory $connectApiCallsRequestBaseFactory,
13-
\Drip\Connect\Model\Configuration $config,
16+
BaseFactory $connectApiCallsBaseFactory,
17+
RequestBaseFactory $connectApiCallsRequestBaseFactory,
18+
Configuration $config,
1419
$data = []
1520
) {
1621
$this->apiClient = $connectApiCallsBaseFactory->create([
@@ -25,7 +30,7 @@ public function __construct(
2530
];
2631

2732
$this->request = $connectApiCallsRequestBaseFactory->create()
28-
->setMethod(\Zend_Http_Client::POST)
33+
->setMethod(Request::METHOD_POST)
2934
->setRawData(json_encode($subscribersInfo));
3035
}
3136
}

Model/ApiCalls/Helper/GetProjectList.php

+13-5
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,25 @@
22

33
namespace Drip\Connect\Model\ApiCalls\Helper;
44

5+
use Drip\Connect\Model\ApiCalls\BaseFactory;
6+
use Drip\Connect\Model\ApiCalls\Request\BaseFactory as RequestBaseFactory;
7+
use Drip\Connect\Model\Configuration;
8+
use Laminas\Http\Request;
9+
510
/**
611
* Get project list helper
712
*
813
* @todo This class doesn't seem to be called from anywhere. Confirm that it is dead.
914
*/
10-
class GetProjectList extends \Drip\Connect\Model\ApiCalls\Helper
15+
class GetProjectList extends Helper
1116
{
17+
protected $apiClient;
18+
protected $request;
19+
1220
public function __construct(
13-
\Drip\Connect\Model\ApiCalls\BaseFactory $connectApiCallsBaseFactory,
14-
\Drip\Connect\Model\ApiCalls\Request\BaseFactory $connectApiCallsRequestBaseFactory,
15-
\Drip\Connect\Model\Configuration $config,
21+
BaseFactory $connectApiCallsBaseFactory,
22+
RequestBaseFactory $connectApiCallsRequestBaseFactory,
23+
Configuration $config,
1624
$data = []
1725
) {
1826
$this->apiClient = $connectApiCallsBaseFactory->create([
@@ -21,6 +29,6 @@ public function __construct(
2129
]);
2230

2331
$this->request = $connectApiCallsRequestBaseFactory->create()
24-
->setMethod(\Zend_Http_Client::GET);
32+
->setMethod(Request::METHOD_GET);
2533
}
2634
}

Model/ApiCalls/Helper/GetSubscriberList.php

+12-4
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,25 @@
22

33
namespace Drip\Connect\Model\ApiCalls\Helper;
44

5+
use Drip\Connect\Model\ApiCalls\BaseFactory;
6+
use Drip\Connect\Model\ApiCalls\Request\BaseFactory as RequestBaseFactory;
7+
use Drip\Connect\Model\Configuration;
8+
use Laminas\Http\Request;
9+
510
/**
611
* Get the subscriber list
712
*
813
* @todo This class doesn't seem to be called from anywhere. Confirm that it is dead.
914
*/
1015
class GetSubscriberList extends \Drip\Connect\Model\ApiCalls\Helper
1116
{
17+
protected $apiClient;
18+
protected $request;
19+
1220
public function __construct(
13-
\Drip\Connect\Model\ApiCalls\BaseFactory $connectApiCallsBaseFactory,
14-
\Drip\Connect\Model\ApiCalls\Request\BaseFactory $connectApiCallsRequestBaseFactory,
15-
\Drip\Connect\Model\Configuration $config,
21+
BaseFactory $connectApiCallsBaseFactory,
22+
RequestBaseFactory $connectApiCallsRequestBaseFactory,
23+
Configuration $config,
1624
$data = []
1725
) {
1826
$data = array_merge([
@@ -30,7 +38,7 @@ public function __construct(
3038
]);
3139

3240
$this->request = $connectApiCallsRequestBaseFactory->create()
33-
->setMethod(\Zend_Http_Client::GET)
41+
->setMethod(Request::METHOD_GET)
3442
->setParametersGet([
3543
'status' => $data['status'],
3644
'tags' => $data['tags'],

Model/ApiCalls/Helper/RecordAnEvent.php

+11-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
namespace Drip\Connect\Model\ApiCalls\Helper;
44

5+
use Drip\Connect\Model\ApiCalls\BaseFactory;
6+
use Drip\Connect\Model\ApiCalls\Request\BaseFactory as RequestBaseFactory;
7+
use Drip\Connect\Helper\Data;
8+
use Drip\Connect\Model\Configuration;
9+
use Laminas\Http\Request;
10+
511
/**
612
* Record a subscriber event
713
*/
@@ -19,10 +25,10 @@ class RecordAnEvent extends \Drip\Connect\Model\ApiCalls\Helper
1925
const EVENT_WISHLIST_REMOVE_PRODUCT = 'Removed item from wishlist';
2026

2127
public function __construct(
22-
\Drip\Connect\Model\ApiCalls\BaseFactory $connectApiCallsBaseFactory,
23-
\Drip\Connect\Model\ApiCalls\Request\BaseFactory $connectApiCallsRequestBaseFactory,
24-
\Drip\Connect\Helper\Data $connectHelper,
25-
\Drip\Connect\Model\Configuration $config,
28+
BaseFactory $connectApiCallsBaseFactory,
29+
RequestBaseFactory $connectApiCallsRequestBaseFactory,
30+
Data $connectHelper,
31+
Configuration $config,
2632
array $data
2733
) {
2834
$this->apiClient = $connectApiCallsBaseFactory->create([
@@ -43,7 +49,7 @@ public function __construct(
4349
];
4450

4551
$this->request = $connectApiCallsRequestBaseFactory->create()
46-
->setMethod(\Zend_Http_Client::POST)
52+
->setMethod(Request::METHOD_POST)
4753
->setRawData(json_encode($eventsInfo));
4854
}
4955
}

Model/ApiCalls/Helper/SendEventPayload.php

+12-6
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@
22

33
namespace Drip\Connect\Model\ApiCalls\Helper;
44

5+
use Drip\Connect\Model\ApiCalls\WooBaseFactory;
6+
use Drip\Connect\Model\ApiCalls\Request\BaseFactory;
7+
use Drip\Connect\Model\Configuration;
8+
use Laminas\Http\Request;
9+
510
/**
611
* Send payload for events
712
*/
813
class SendEventPayload extends \Drip\Connect\Model\ApiCalls\Helper
914
{
10-
/** @var \Drip\Connect\Model\Configuration */
15+
/** @var Configuration */
1116
protected $config;
1217

1318
public function __construct(
14-
\Drip\Connect\Model\ApiCalls\WooBaseFactory $connectApiCallsWooBaseFactory,
15-
\Drip\Connect\Model\ApiCalls\Request\BaseFactory $connectApiCallsRequestBaseFactory,
16-
\Drip\Connect\Model\Configuration $config,
19+
WooBaseFactory $connectApiCallsWooBaseFactory,
20+
BaseFactory $connectApiCallsRequestBaseFactory,
21+
Configuration $config,
1722
array $payload
1823
) {
1924
$this->config = $config;
@@ -24,7 +29,7 @@ public function __construct(
2429
]);
2530

2631
$this->request = $connectApiCallsRequestBaseFactory->create()
27-
->setMethod(\Zend_Http_Client::POST)
32+
->setMethod(Request::METHOD_POST)
2833
->setRawData(json_encode($payload));
2934
}
3035

@@ -33,11 +38,12 @@ private function integrationUrl()
3338
$accountId = $this->config->getAccountParam();
3439
$integrationParam = $this->config->getIntegrationToken();
3540
$endpoint = "https://external-production.woo.drip.sh";
41+
# $endpoint = "https://external-staging.woo.drip.sh";
3642

3743
if ($this->config->getTestMode()) {
3844
$endpoint = "http://mock:1080";
3945
}
4046

41-
return "${endpoint}/${accountId}/integrations/${integrationParam}/events";
47+
return "{$endpoint}/{$accountId}/integrations/{$integrationParam}/events";
4248
}
4349
}

0 commit comments

Comments
 (0)