Initial commit

This commit is contained in:
gustavooth
2026-07-23 22:56:30 -03:00
commit 22a1006598
1816 changed files with 410742 additions and 0 deletions
@@ -0,0 +1,110 @@
<?php
namespace FluentCrm\App\Services\CrmMigrator\Api;
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly.
}
class MailerLite
{
protected $apiUrl = 'https://api.mailerlite.com/api/v2/';
protected $apiKey = null;
protected $apiSecret = null;
public function __construct($apiKey = null)
{
$this->apiKey = $apiKey;
}
public function default_options()
{
return [
'User-Agent' => 'MailerLite PHP SDK/2.0',
'X-MailerLite-ApiKey' => $this->apiKey,
'Content-Type' => 'application/json'
];
}
public function make_request($action, $options = array(), $method = 'GET')
{
$headers = $this->default_options();
$endpointUrl = $this->apiUrl . $action;
$args = [
'headers' => $headers
];
if ($options && $method == 'POST') {
$args['body'] = \json_encode($options);
} else if($method == 'GET' && $options) {
$endpointUrl = add_query_arg($options, $endpointUrl);
}
/* Execute request based on method. */
switch ($method) {
case 'POST':
$response = wp_remote_post($endpointUrl, $args);
break;
case 'GET':
$response = wp_remote_get($endpointUrl, $args);
break;
}
/* If WP_Error, die. Otherwise, return decoded JSON. */
if (is_wp_error($response)) {
return new \WP_Error('API_Error', $response->get_error_message());
} else if ($response && $response['response']['code'] >= 300) {
return new \WP_Error('API_Error', $response['response']['message']);
}
return json_decode($response['body'], true);
}
/**
* Test the provided API credentials.
*
* @access public
* @return bool
*/
public function auth_test()
{
return $this->make_request('groups', [], 'GET');
}
/**
* Get all Forms in the system.
*
* @access public
* @return array
*/
public function getGroups()
{
return $this->make_request('groups', array(), 'GET');
}
public function getGroupSubscribers($groupId, $args = [])
{
return $this->make_request('groups/' . $groupId . '/subscribers', $args, 'GET');
}
public function getContactCountByGroup($groupId)
{
$result = $this->make_request('groups/' . $groupId . '/subscribers/count', array(), 'GET');
if (is_wp_error($result)) {
return $result;
}
return $result['count'];
}
public function getCustomFields()
{
return $this->make_request('fields', array(), 'GET');
}
}