File "hustle-mailerlite-api.php"
Full Path: /home/londdqdw/public_html/06/wp-content/plugins/wordpress-popup/inc/providers/mailerlite/hustle-mailerlite-api.php
File size: 4.67 KB
MIME-type: text/x-php
Charset: utf-8
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
/**
* MailerLite API Helper
*
* @package Hustle
*/
if ( ! defined( 'ABSPATH' ) ) {
die();
}
if ( ! class_exists( 'Hustle_MailerLite_Api' ) ) :
/**
* Class Hustle_MailerLite_Api
*/
class Hustle_MailerLite_Api {
/**
* Api Key
*
* @var String
*/
protected $api_key;
/**
* End point
*
* @var String
*/
private $end_point = 'https://api.mailerlite.com/api/v2/';
/**
* Constructor
*
* @param string $_api_key Api key.
*/
public function __construct( $_api_key ) {
$this->api_key = $_api_key;
}
/**
* Perform API remote request
*
* @param String $path - relative api path to the $end_point.
* @param String $method - allowed methods are GET, POST, PUT, DELETE.
* @param String|Array $input - the post data.
*
* @return WP_Error|Array
*/
private function do_request( $path, $method, $input ) {
$called_url = $this->end_point . $path;
$ssl_verify = true;
if ( strtoupper( substr( PHP_OS, 0, 3 ) ) === 'WIN' ) {
// Windows only over-ride.
$ssl_verify = false;
}
$args = array(
'method' => $method,
'sslverify' => apply_filters( 'hustle_mailerlite_sslverify', $ssl_verify ),
'headers' => array(
'X-MailerLite-ApiKey' => $this->api_key,
'Content-Type' => 'application/json',
),
);
$args['body'] = $input;
$response = wp_remote_request( $called_url, $args );
$utils = Hustle_Provider_Utils::get_instance();
$utils->last_url_request = $called_url;
$utils->last_data_received = $response;
$utils->last_data_sent = $args;
$data = wp_remote_retrieve_body( $response );
if ( is_wp_error( $data ) ) {
return $data;
}
return json_decode( $data, true );
}
/**
* GET Request
*
* @param string $path Path.
* @param array $input Input.
* @return type
*/
private function get( $path, $input = array() ) {
return $this->do_request( $path, 'GET', $input );
}
/**
* PUT Http request
*
* @param string $path Path.
* @param array $input Input.
*/
private function put( $path, $input = array() ) {
return $this->do_request( $path, 'PUT', wp_json_encode( $input ) );
}
/**
* POST Http request
*
* @param string $path Path.
* @param array $input Input.
*/
private function post( $path, $input = array() ) {
return $this->do_request( $path, 'POST', wp_json_encode( $input ) );
}
/**
* DELETE Http request
*
* @param string $path Path.
* @param array $input Input.
*/
private function delete( $path, $input = array() ) {
return $this->do_request( $path, 'DELETE', $input );
}
/**
* List Groups
*
* @param int $offset Offset.
* @return Array|WP_Error
*/
public function list_groups( $offset = 0 ) {
return $this->get( 'groups?offset=' . intval( $offset ) );
}
/**
* Add Subscriber
*
* @param Integer $group_id - the group id.
* @param Array $subscriber_data - An array containing the keys email and fields(name,value).
* @param int $resubscribe Resubscribe.
*/
public function add_subscriber( $group_id, $subscriber_data, $resubscribe = 0 ) {
$subscriber_data['resubscribe'] = $resubscribe;
$path = 'groups/' . $group_id . '/subscribers';
$res = $this->post( $path, $subscriber_data );
return $res;
}
/**
* Update Subscriber
*
* @param string $email Email.
* @param Array $subscriber_data - An array containing the keys email and fields(name,value).
*/
public function update_subscriber( $email, $subscriber_data ) {
$path = 'subscribers/' . $email;
$res = $this->put( $path, $subscriber_data );
return $res;
}
/**
* Delete subscriber from the list
*
* @param string $list_id List ID.
* @param string $email Email.
*
* @return bool
*/
public function delete_email( $list_id, $email ) {
$endpoint = 'groups/' . $list_id . '/subscribers/' . $email;
$res = $this->delete( $endpoint );
return ! is_wp_error( $res );
}
/**
* Get Subscriber groups
*
* @param string $email Email.
*/
public function get_subscriber( $email ) {
$path = 'subscribers/' . $email . '/groups';
$res = $this->get( $path );
return $res;
}
/**
* Add custom field
*
* @param Array $field_data (title, type).
*/
public function add_custom_field( $field_data ) {
$path = 'fields';
$res = $this->post( $path, $field_data );
return $res;
}
/**
* Get custom field
*/
public function get_custom_field() {
$path = 'fields';
$res = $this->get( $path );
return $res;
}
}
endif;