Version Notes
Stable version.
Download this release
Release Info
Developer | Digital Pianism |
Extension | DigitalPianism_CampaignMonitor |
Version | 0.7.0 |
Comparing to | |
See all releases |
Version 0.7.0
- app/code/community/DigitalPianism/CampaignMonitor/Block/Linkedattributes.php +100 -0
- app/code/community/DigitalPianism/CampaignMonitor/Helper/Data.php +120 -0
- app/code/community/DigitalPianism/CampaignMonitor/Model/Customer/Observer.php +127 -0
- app/code/community/DigitalPianism/CampaignMonitor/controllers/AdminhookController.php +57 -0
- app/code/community/DigitalPianism/CampaignMonitor/controllers/HookController.php +86 -0
- app/code/community/DigitalPianism/CampaignMonitor/controllers/UnsubscribeController.php +76 -0
- app/code/community/DigitalPianism/CampaignMonitor/etc/config.xml +75 -0
- app/code/community/DigitalPianism/CampaignMonitor/etc/system.xml +47 -0
- app/design/adminhtml/default/default/template/digitalpianism/campaignmonitor/system/config/form/field/array_dropdown.phtml +157 -0
- app/etc/modules/DigitalPianism_CampaignMonitor.xml +9 -0
- lib/createsend/.gitignore +6 -0
- lib/createsend/.travis.yml +8 -0
- lib/createsend/HISTORY.md +151 -0
- lib/createsend/LICENSE +48 -0
- lib/createsend/README.md +140 -0
- lib/createsend/RELEASE.md +42 -0
- lib/createsend/class/base_classes.php +287 -0
- lib/createsend/class/cacert.pem +3849 -0
- lib/createsend/class/log.php +19 -0
- lib/createsend/class/serialisation.php +129 -0
- lib/createsend/class/services_json.php +782 -0
- lib/createsend/class/transport.php +332 -0
- lib/createsend/composer.json +34 -0
- lib/createsend/composer.lock +57 -0
- lib/createsend/csrest_administrators.php +108 -0
- lib/createsend/csrest_campaigns.php +439 -0
- lib/createsend/csrest_clients.php +450 -0
- lib/createsend/csrest_general.php +229 -0
- lib/createsend/csrest_lists.php +587 -0
- lib/createsend/csrest_people.php +125 -0
- lib/createsend/csrest_segments.php +194 -0
- lib/createsend/csrest_subscribers.php +231 -0
- lib/createsend/csrest_templates.php +118 -0
- lib/createsend/samples/campaign/create.php +29 -0
- lib/createsend/samples/campaign/create_from_template.php +99 -0
- lib/createsend/samples/campaign/delete.php +18 -0
- lib/createsend/samples/campaign/get_bounces.php +20 -0
- lib/createsend/samples/campaign/get_clicks.php +20 -0
- lib/createsend/samples/campaign/get_email_client_usage.php +19 -0
- lib/createsend/samples/campaign/get_lists_and_segments.php +19 -0
- lib/createsend/samples/campaign/get_opens.php +20 -0
- lib/createsend/samples/campaign/get_recipients.php +20 -0
- lib/createsend/samples/campaign/get_spam.php +20 -0
- lib/createsend/samples/campaign/get_summary.php +19 -0
- lib/createsend/samples/campaign/get_unsubscribes.php +20 -0
- lib/createsend/samples/campaign/send.php +22 -0
- lib/createsend/samples/campaign/send_preview.php +21 -0
- lib/createsend/samples/campaign/unschedule.php +19 -0
- lib/createsend/samples/client/create.php +23 -0
- lib/createsend/samples/client/delete.php +19 -0
- lib/createsend/samples/client/get.php +19 -0
- lib/createsend/samples/client/get_campaigns.php +22 -0
- lib/createsend/samples/client/get_drafts.php +22 -0
- lib/createsend/samples/client/get_lists.php +22 -0
- lib/createsend/samples/client/get_lists_for_email.php +24 -0
- lib/createsend/samples/client/get_scheduled.php +22 -0
- lib/createsend/samples/client/get_segments.php +22 -0
- lib/createsend/samples/client/get_suppressionlist.php +23 -0
- lib/createsend/samples/client/get_templates.php +22 -0
- lib/createsend/samples/client/set_basics.php +23 -0
- lib/createsend/samples/client/set_monthly_billing.php +24 -0
- lib/createsend/samples/client/set_payg_billing.php +36 -0
- lib/createsend/samples/client/suppress.php +24 -0
- lib/createsend/samples/client/transfer_credits.php +25 -0
- lib/createsend/samples/client/unsuppress.php +19 -0
- lib/createsend/samples/get_apikey.php +17 -0
- lib/createsend/samples/get_billing_details.php +21 -0
- lib/createsend/samples/get_clients.php +22 -0
- lib/createsend/samples/get_countries.php +21 -0
- lib/createsend/samples/get_systemdate.php +20 -0
- lib/createsend/samples/get_timezones.php +21 -0
- lib/createsend/samples/list/activate_webhook.php +19 -0
- lib/createsend/samples/list/create.php +25 -0
- lib/createsend/samples/list/create_custom_field.php +34 -0
- lib/createsend/samples/list/create_webhook.php +33 -0
- lib/createsend/samples/list/deactivate_webhook.php +19 -0
- lib/createsend/samples/list/delete.php +19 -0
- lib/createsend/samples/list/delete_custom_field.php +19 -0
- lib/createsend/samples/list/delete_webhook.php +19 -0
- lib/createsend/samples/list/get.php +20 -0
- lib/createsend/samples/list/get_active_subscribers.php +22 -0
- lib/createsend/samples/list/get_bounced_subscribers.php +22 -0
- lib/createsend/samples/list/get_custom_fields.php +20 -0
- lib/createsend/samples/list/get_deleted_subscribers.php +22 -0
- lib/createsend/samples/list/get_segments.php +20 -0
- lib/createsend/samples/list/get_stats.php +20 -0
- lib/createsend/samples/list/get_unconfirmed_subscribers.php +22 -0
- lib/createsend/samples/list/get_unsubscribed_subscribers.php +22 -0
- lib/createsend/samples/list/get_webhooks.php +20 -0
- lib/createsend/samples/list/list_webhook_receiver.php +31 -0
- lib/createsend/samples/list/test_webhook.php +19 -0
- lib/createsend/samples/list/update.php +27 -0
- lib/createsend/samples/list/update_custom_field.php +25 -0
- lib/createsend/samples/list/update_field_options.php +20 -0
- lib/createsend/samples/segment/add_rule.php +22 -0
- lib/createsend/samples/segment/clear_rules.php +19 -0
- lib/createsend/samples/segment/create.php +31 -0
- lib/createsend/samples/segment/delete.php +20 -0
- lib/createsend/samples/segment/get.php +20 -0
- lib/createsend/samples/segment/get_subscribers.php +22 -0
- lib/createsend/samples/segment/update.php +31 -0
- lib/createsend/samples/subscriber/add.php +40 -0
- lib/createsend/samples/subscriber/delete.php +18 -0
- lib/createsend/samples/subscriber/get.php +19 -0
- lib/createsend/samples/subscriber/get_history.php +19 -0
- lib/createsend/samples/subscriber/import.php +77 -0
- lib/createsend/samples/subscriber/unsubscribe.php +18 -0
- lib/createsend/samples/subscriber/update.php +28 -0
- lib/createsend/samples/template/create.php +23 -0
- lib/createsend/samples/template/delete.php +19 -0
- lib/createsend/samples/template/get.php +20 -0
- lib/createsend/samples/template/update.php +23 -0
- lib/createsend/tests/all_tests.php +21 -0
- lib/createsend/tests/class_tests/response_tests.php +943 -0
- lib/createsend/tests/class_tests/transport_test.php +211 -0
- lib/createsend/tests/csrest_administrators_test.php +119 -0
- lib/createsend/tests/csrest_campaigns_test.php +371 -0
- lib/createsend/tests/csrest_clients_test.php +275 -0
- lib/createsend/tests/csrest_lists_test.php +485 -0
- lib/createsend/tests/csrest_people_test.php +122 -0
- lib/createsend/tests/csrest_segments_test.php +143 -0
- lib/createsend/tests/csrest_subscribers_test.php +217 -0
- lib/createsend/tests/csrest_template_test.php +89 -0
- lib/createsend/tests/csrest_test.php +295 -0
- lib/createsend/tests/responses/active_subscribers.json +74 -0
- lib/createsend/tests/responses/add_subscriber.json +1 -0
- lib/createsend/tests/responses/apikey.json +3 -0
- lib/createsend/tests/responses/bounced_subscribers.json +19 -0
- lib/createsend/tests/responses/campaign_bounces.json +25 -0
- lib/createsend/tests/responses/campaign_clicks.json +50 -0
- lib/createsend/tests/responses/campaign_listsandsegments.json +15 -0
- lib/createsend/tests/responses/campaign_opens.json +71 -0
- lib/createsend/tests/responses/campaign_recipients.json +91 -0
- lib/createsend/tests/responses/campaign_spam.json +16 -0
- lib/createsend/tests/responses/campaign_summary.json +15 -0
- lib/createsend/tests/responses/campaign_unsubscribes.json +17 -0
- lib/createsend/tests/responses/campaigns.json +26 -0
- lib/createsend/tests/responses/client_details.json +20 -0
- lib/createsend/tests/responses/clients.json +10 -0
- lib/createsend/tests/responses/countries.json +11 -0
- lib/createsend/tests/responses/create_campaign.json +1 -0
- lib/createsend/tests/responses/create_client.json +1 -0
- lib/createsend/tests/responses/create_custom_field.json +1 -0
- lib/createsend/tests/responses/create_list.json +1 -0
- lib/createsend/tests/responses/create_list_webhook.json +1 -0
- lib/createsend/tests/responses/create_segment.json +1 -0
- lib/createsend/tests/responses/create_template.json +1 -0
- lib/createsend/tests/responses/custom_api_error.json +4 -0
- lib/createsend/tests/responses/custom_fields.json +23 -0
- lib/createsend/tests/responses/deleted_subscribers.json +74 -0
- lib/createsend/tests/responses/drafts.json +24 -0
- lib/createsend/tests/responses/import_subscribers.json +7 -0
- lib/createsend/tests/responses/import_subscribers_partial_success.json +17 -0
- lib/createsend/tests/responses/list_details.json +8 -0
- lib/createsend/tests/responses/list_stats.json +26 -0
- lib/createsend/tests/responses/list_webhooks.json +21 -0
- lib/createsend/tests/responses/lists.json +10 -0
- lib/createsend/tests/responses/listsforemail.json +14 -0
- lib/createsend/tests/responses/scheduled.json +28 -0
- lib/createsend/tests/responses/segment_details.json +20 -0
- lib/createsend/tests/responses/segment_subscribers.json +25 -0
- lib/createsend/tests/responses/segments.json +12 -0
- lib/createsend/tests/responses/subscriber_details.json +21 -0
- lib/createsend/tests/responses/subscriber_history.json +45 -0
- lib/createsend/tests/responses/suppressionlist.json +41 -0
- lib/createsend/tests/responses/systemdate.json +3 -0
- lib/createsend/tests/responses/template_details.json +6 -0
- lib/createsend/tests/responses/templates.json +14 -0
- lib/createsend/tests/responses/timezones.json +9 -0
- lib/createsend/tests/responses/unsubscribed_subscribers.json +51 -0
- package.xml +22 -0
app/code/community/DigitalPianism/CampaignMonitor/Block/Linkedattributes.php
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class DigitalPianism_CampaignMonitor_Block_Linkedattributes extends Mage_Adminhtml_Block_System_Config_Form_Field_Array_Abstract
|
3 |
+
{
|
4 |
+
protected $magentoOptions;
|
5 |
+
|
6 |
+
public function __construct()
|
7 |
+
{
|
8 |
+
$this->addColumn('magento', array(
|
9 |
+
'label' => Mage::helper('adminhtml')->__('Magento customer attribute'),
|
10 |
+
'size' => 28,
|
11 |
+
));
|
12 |
+
$this->addColumn('campaignmonitor', array(
|
13 |
+
'label' => Mage::helper('adminhtml')->__('Campaign Monitor custom field personalization tag'),
|
14 |
+
'size' => 28
|
15 |
+
));
|
16 |
+
$this->_addAfter = false;
|
17 |
+
$this->_addButtonLabel = Mage::helper('adminhtml')->__('Add linked attribute');
|
18 |
+
|
19 |
+
parent::__construct();
|
20 |
+
$this->setTemplate('digitalpianism/campaignmonitor/system/config/form/field/array_dropdown.phtml');
|
21 |
+
|
22 |
+
// customer options
|
23 |
+
$magentoAttributes = Mage::getModel('customer/customer')->getAttributes();
|
24 |
+
$this->magentoOptions = array();
|
25 |
+
foreach(array_keys($magentoAttributes) as $att)
|
26 |
+
{
|
27 |
+
if($att != 'entity_type_id'
|
28 |
+
and $att != 'entity_id'
|
29 |
+
and $att != 'attribute_set_id'
|
30 |
+
and $att != 'password_hash'
|
31 |
+
and $att != 'increment_id'
|
32 |
+
and $att != 'updated_at'
|
33 |
+
and $att != 'created_at'
|
34 |
+
and $att != 'email'
|
35 |
+
and $att != 'default_billing'
|
36 |
+
and $att != 'default_shipping')
|
37 |
+
{
|
38 |
+
// give nicer names to the attributes we're translating
|
39 |
+
// from IDs to values
|
40 |
+
if($att == 'store_id')
|
41 |
+
$name = 'Store';
|
42 |
+
else if($att == 'group_id')
|
43 |
+
$name = 'Customer Group';
|
44 |
+
else if($att == 'website_id')
|
45 |
+
$name = 'Website';
|
46 |
+
else $name = $att;
|
47 |
+
|
48 |
+
$this->magentoOptions[$att] = $name;
|
49 |
+
}
|
50 |
+
}
|
51 |
+
asort($this->magentoOptions);
|
52 |
+
// address options
|
53 |
+
$this->magentoOptions['DIGITALPIANISM-billing-firstname'] = 'Billing Address: First name';
|
54 |
+
$this->magentoOptions['DIGITALPIANISM-billing-lastname'] = 'Billing Address: Last name';
|
55 |
+
$this->magentoOptions['DIGITALPIANISM-billing-company'] = 'Billing Address: Company';
|
56 |
+
$this->magentoOptions['DIGITALPIANISM-billing-telephone'] = 'Billing Address: Phone';
|
57 |
+
$this->magentoOptions['DIGITALPIANISM-billing-fax'] = 'Billing Address: Fax';
|
58 |
+
$this->magentoOptions['DIGITALPIANISM-billing-street'] = 'Billing Address: Street';
|
59 |
+
$this->magentoOptions['DIGITALPIANISM-billing-city'] = 'Billing Address: City';
|
60 |
+
$this->magentoOptions['DIGITALPIANISM-billing-region'] = 'Billing Address: State/Province';
|
61 |
+
$this->magentoOptions['DIGITALPIANISM-billing-postcode'] = 'Billing Address: Zip/Postal Code';
|
62 |
+
$this->magentoOptions['DIGITALPIANISM-billing-country_id'] = 'Billing Address: Country';
|
63 |
+
|
64 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-firstname'] = 'Shipping Address: First name';
|
65 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-lastname'] = 'Shipping Address: Last name';
|
66 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-company'] = 'Shipping Address: Company';
|
67 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-telephone'] = 'Shipping Address: Phone';
|
68 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-fax'] = 'Shipping Address: Fax';
|
69 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-street'] = 'Shipping Address: Street';
|
70 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-city'] = 'Shipping Address: City';
|
71 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-region'] = 'Shipping Address: State/Province';
|
72 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-postcode'] = 'Shipping Address: Zip/Postal Code';
|
73 |
+
$this->magentoOptions['DIGITALPIANISM-shipping-country_id'] = 'Shipping Address: Country';
|
74 |
+
}
|
75 |
+
|
76 |
+
protected function _renderCellTemplate($columnName)
|
77 |
+
{
|
78 |
+
if (empty($this->_columns[$columnName])) {
|
79 |
+
throw new Exception('Wrong column name specified.');
|
80 |
+
}
|
81 |
+
$column = $this->_columns[$columnName];
|
82 |
+
$inputName = $this->getElement()->getName() . '[#{_id}][' . $columnName . ']';
|
83 |
+
|
84 |
+
if($columnName == 'magento')
|
85 |
+
{
|
86 |
+
$rendered = '<select name="'.$inputName.'">';
|
87 |
+
foreach($this->magentoOptions as $att => $name)
|
88 |
+
{
|
89 |
+
$rendered .= '<option value="'.$att.'">'.$name.'</option>';
|
90 |
+
}
|
91 |
+
$rendered .= '</select>';
|
92 |
+
}
|
93 |
+
else
|
94 |
+
{
|
95 |
+
return '<input type="text" name="' . $inputName . '" value="#{' . $columnName . '}" ' . ($column['size'] ? 'size="' . $column['size'] . '"' : '') . '/>';
|
96 |
+
}
|
97 |
+
|
98 |
+
return $rendered;
|
99 |
+
}
|
100 |
+
}
|
app/code/community/DigitalPianism/CampaignMonitor/Helper/Data.php
ADDED
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once MAGENTO_ROOT . "/lib/createsend/csrest_lists.php";
|
3 |
+
|
4 |
+
class DigitalPianism_CampaignMonitor_Helper_Data extends Mage_Core_Helper_Abstract
|
5 |
+
{
|
6 |
+
protected $logFileName = 'factoryx_campaignmonitor.log';
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Log data
|
10 |
+
* @param string|object|array data to log
|
11 |
+
*/
|
12 |
+
public function log($data)
|
13 |
+
{
|
14 |
+
Mage::log($data, null, $this->logFileName);
|
15 |
+
}
|
16 |
+
|
17 |
+
public function getApiKey()
|
18 |
+
{
|
19 |
+
return trim(Mage::getStoreConfig('newsletter/campaignmonitor/api_key'));
|
20 |
+
}
|
21 |
+
|
22 |
+
public function getListId()
|
23 |
+
{
|
24 |
+
return trim(Mage::getStoreConfig('newsletter/campaignmonitor/list_id'));
|
25 |
+
}
|
26 |
+
|
27 |
+
// get array of linked attributes from the config settings and
|
28 |
+
// populate it
|
29 |
+
public static function generateCustomFields($customer)
|
30 |
+
{
|
31 |
+
$linkedAttributes = @unserialize(Mage::getStoreConfig('newsletter/campaignmonitor/m_to_cm_attributes',
|
32 |
+
Mage::app()->getStore()->getStoreId()));
|
33 |
+
$customFields = array();
|
34 |
+
if(!empty($linkedAttributes))
|
35 |
+
{
|
36 |
+
$customerData = $customer->getData();
|
37 |
+
foreach($linkedAttributes as $la)
|
38 |
+
{
|
39 |
+
$magentoAtt = $la['magento'];
|
40 |
+
$cmAtt = $la['campaignmonitor'];
|
41 |
+
|
42 |
+
// try and translate IDs to names where possible
|
43 |
+
if($magentoAtt == 'group_id')
|
44 |
+
{
|
45 |
+
$d = Mage::getModel('customer/group')->load($customer->getGroupId())->getData();
|
46 |
+
if(array_key_exists('customer_group_code', $d))
|
47 |
+
{
|
48 |
+
$customFields[] = array("Key" => $cmAtt, "Value" => $d['customer_group_code']);
|
49 |
+
}
|
50 |
+
}
|
51 |
+
else if($magentoAtt == 'website_id')
|
52 |
+
{
|
53 |
+
$d = Mage::getModel('core/website')->load($customer->getWebsiteId())->getData();
|
54 |
+
if(array_key_exists('name', $d))
|
55 |
+
{
|
56 |
+
$customFields[] = array("Key" => $cmAtt, "Value" => $d['name']);
|
57 |
+
}
|
58 |
+
}
|
59 |
+
else if($magentoAtt == 'store_id')
|
60 |
+
{
|
61 |
+
$d = Mage::getModel('core/store')->load($customer->getStoreId())->getData();
|
62 |
+
if(array_key_exists('name', $d))
|
63 |
+
{
|
64 |
+
$customFields[] = array("Key" => $cmAtt, "Value" => $d['name']);
|
65 |
+
}
|
66 |
+
}
|
67 |
+
else if(strncmp('DIGITALPIANISM', $magentoAtt, 6) == 0)
|
68 |
+
{
|
69 |
+
$d = false;
|
70 |
+
// 15 == strlen('DIGITALPIANISM-billing-')
|
71 |
+
if(strncmp('DIGITALPIANISM-billing', $magentoAtt, 14) == 0)
|
72 |
+
{
|
73 |
+
$d = $customer->getDefaultBillingAddress();
|
74 |
+
if($d)
|
75 |
+
{
|
76 |
+
$d = $d->getData();
|
77 |
+
$addressAtt = substr($magentoAtt, 15, strlen($magentoAtt));
|
78 |
+
}
|
79 |
+
}
|
80 |
+
// 16 == strlen('DIGITALPIANISM-shipping-')
|
81 |
+
else
|
82 |
+
{
|
83 |
+
$d = $customer->getDefaultShippingAddress();
|
84 |
+
if($d)
|
85 |
+
{
|
86 |
+
$d = $d->getData();
|
87 |
+
$addressAtt = substr($magentoAtt, 16, strlen($magentoAtt));
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
if($d and $addressAtt == 'country_id')
|
92 |
+
{
|
93 |
+
if(array_key_exists('country_id', $d))
|
94 |
+
{
|
95 |
+
$country = Mage::getModel('directory/country')->load($d['country_id']);
|
96 |
+
$customFields[] = array("Key" , $d=> $cmAtt, "Value" => $country->getName());
|
97 |
+
}
|
98 |
+
}
|
99 |
+
else if($d)
|
100 |
+
{
|
101 |
+
if(array_key_exists($addressAtt, $d))
|
102 |
+
{
|
103 |
+
$customFields[] = array("Key" => $cmAtt, "Value" => $d[$addressAtt]);
|
104 |
+
}
|
105 |
+
}
|
106 |
+
}
|
107 |
+
else
|
108 |
+
{
|
109 |
+
if(array_key_exists($magentoAtt, $customerData))
|
110 |
+
{
|
111 |
+
$customFields[] = array("Key" => $cmAtt, "Value" => $customerData[$magentoAtt]);
|
112 |
+
}
|
113 |
+
}
|
114 |
+
}
|
115 |
+
}
|
116 |
+
|
117 |
+
return $customFields;
|
118 |
+
}
|
119 |
+
|
120 |
+
}
|
app/code/community/DigitalPianism/CampaignMonitor/Model/Customer/Observer.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once MAGENTO_ROOT . "/lib/createsend/csrest_subscribers.php";
|
3 |
+
|
4 |
+
class DigitalPianism_CampaignMonitor_Model_Customer_Observer
|
5 |
+
{
|
6 |
+
public function check_subscription_status($observer)
|
7 |
+
{
|
8 |
+
|
9 |
+
$event = $observer->getEvent();
|
10 |
+
$customer = $event->getCustomer();
|
11 |
+
|
12 |
+
$apiKey = Mage::helper('campaignmonitor')->getApiKey();
|
13 |
+
$listID = Mage::helper('campaignmonitor')->getListId();
|
14 |
+
|
15 |
+
$name = $customer->getFirstname() . " " . $customer->getLastname();
|
16 |
+
$newEmail = $customer->getEmail();
|
17 |
+
$subscribed = $customer->getIsSubscribed();
|
18 |
+
|
19 |
+
$oldEmail = Mage::getModel('customer/customer')->load($customer->getId())->getEmail();
|
20 |
+
|
21 |
+
if (empty($oldEmail)) return;
|
22 |
+
// if subscribed is NULL (i.e. because the form didn't set it one way
|
23 |
+
// or the other), get the existing value from the database
|
24 |
+
if($subscribed === NULL)
|
25 |
+
{
|
26 |
+
$subscribed = Mage::getModel('newsletter/subscriber')->loadByCustomer($customer)->isSubscribed();
|
27 |
+
}
|
28 |
+
|
29 |
+
//print "Name: $name, New email: $newEmail, Subscribed: $subscribed, Old email: $oldEmail<br />\n";
|
30 |
+
|
31 |
+
if($apiKey && $listID)
|
32 |
+
{
|
33 |
+
$customFields = Mage::helper('campaignmonitor')->generateCustomFields($customer);
|
34 |
+
|
35 |
+
try
|
36 |
+
{
|
37 |
+
$client = new CS_REST_Subscribers($listID,$apiKey);
|
38 |
+
}
|
39 |
+
catch(Exception $e)
|
40 |
+
{
|
41 |
+
Mage::helper('campaignmonitor')->log("Error connecting to CampaignMonitor server: ".$e->getMessage());
|
42 |
+
return;
|
43 |
+
}
|
44 |
+
|
45 |
+
if($subscribed)
|
46 |
+
{
|
47 |
+
/* If the customer:
|
48 |
+
|
49 |
+
1) Already exists (i.e. has an old email address)
|
50 |
+
2) Has changed their email address
|
51 |
+
|
52 |
+
unsubscribe their old address. */
|
53 |
+
if ($oldEmail && $newEmail != $oldEmail)
|
54 |
+
{
|
55 |
+
Mage::helper('campaignmonitor')->log("Unsubscribing old email address: $oldEmail");
|
56 |
+
try
|
57 |
+
{
|
58 |
+
$result = $client->unsubscribe($oldEmail);
|
59 |
+
}
|
60 |
+
catch(Exception $e)
|
61 |
+
{
|
62 |
+
Mage::helper('campaignmonitor')->log("Error in SOAP call: ".$e->getMessage());
|
63 |
+
return;
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
// Using 'add and resubscribe' rather than just 'add', otherwise
|
68 |
+
// somebody who unsubscribes and resubscribes won't be put back
|
69 |
+
// on the active list
|
70 |
+
Mage::helper('campaignmonitor')->log("Subscribing new email address: $newEmail");
|
71 |
+
try
|
72 |
+
{
|
73 |
+
$result = $client->add(array(
|
74 |
+
"EmailAddress" => $newEmail,
|
75 |
+
"Name" => $name,
|
76 |
+
"CustomFields" => $customFields,
|
77 |
+
"Resubscribe" => true));
|
78 |
+
}
|
79 |
+
catch(Exception $e)
|
80 |
+
{
|
81 |
+
Mage::helper('campaignmonitor')->log("Error in SOAP call: ".$e->getMessage());
|
82 |
+
return;
|
83 |
+
}
|
84 |
+
}
|
85 |
+
else
|
86 |
+
{
|
87 |
+
Mage::helper('campaignmonitor')->log("Unsubscribing: $oldEmail");
|
88 |
+
|
89 |
+
try
|
90 |
+
{
|
91 |
+
$result = $client->unsubscribe($oldEmail);
|
92 |
+
}
|
93 |
+
catch(Exception $e)
|
94 |
+
{
|
95 |
+
Mage::helper('campaignmonitor')->log("Error in SOAP call: ".$e->getMessage());
|
96 |
+
return;
|
97 |
+
}
|
98 |
+
}
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
public function customer_deleted($observer)
|
103 |
+
{
|
104 |
+
$event = $observer->getEvent();
|
105 |
+
$customer = $event->getCustomer();
|
106 |
+
|
107 |
+
$apiKey = Mage::helper('campaignmonitor')->getApiKey();
|
108 |
+
$listID = Mage::helper('campaignmonitor')->getListId();
|
109 |
+
|
110 |
+
$email = $customer->getEmail();
|
111 |
+
|
112 |
+
if($apiKey && $listID)
|
113 |
+
{
|
114 |
+
Mage::helper('campaignmonitor')->log("Customer deleted, unsubscribing: $email");
|
115 |
+
try
|
116 |
+
{
|
117 |
+
$client = new CS_REST_Subscribers($listID,$apiKey);
|
118 |
+
$result = $client->unsubscribe($email);
|
119 |
+
}
|
120 |
+
catch(Exception $e)
|
121 |
+
{
|
122 |
+
Mage::helper('campaignmonitor')->log("Error in SOAP call: ".$e->getMessage());
|
123 |
+
return;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
}
|
127 |
+
}
|
app/code/community/DigitalPianism/CampaignMonitor/controllers/AdminhookController.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once MAGENTO_ROOT . "/lib/createsend/csrest_subscribers.php";
|
3 |
+
include_once Mage::getModuleDir('controllers','Mage_Newsletter').DS."SubscriberController.php";
|
4 |
+
|
5 |
+
class DigitalPianism_CampaignMonitor_ManageController extends Mage_Newsletter_SubscriberController
|
6 |
+
{
|
7 |
+
public function massUnsubscribeAction()
|
8 |
+
{
|
9 |
+
Mage::helper('campaignmonitor')->log("massUnsubscribeAction");
|
10 |
+
|
11 |
+
$subscribersIds = $this->getRequest()->getParam('subscriber');
|
12 |
+
if (!is_array($subscribersIds)) {
|
13 |
+
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
|
14 |
+
$this->_redirect('*/*/index');
|
15 |
+
}
|
16 |
+
else {
|
17 |
+
try {
|
18 |
+
$apiKey = Mage::helper('campaignmonitor')->getApiKey();
|
19 |
+
$listID = Mage::helper('campaignmonitor')->getListId();
|
20 |
+
|
21 |
+
try
|
22 |
+
{
|
23 |
+
$client = new CS_REST_Subscribers($listID,$apiKey);
|
24 |
+
}
|
25 |
+
catch(Exception $e)
|
26 |
+
{
|
27 |
+
Mage::helper('campaignmonitor')->log("Error connecting to CampaignMonitor server: ".$e->getMessage());
|
28 |
+
$session->addException($e, $this->__('There was a problem with the subscription'));
|
29 |
+
$this->_redirectReferer();
|
30 |
+
}
|
31 |
+
|
32 |
+
foreach ($subscribersIds as $subscriberId)
|
33 |
+
{
|
34 |
+
$subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
|
35 |
+
$email = $subscriber->getEmail();
|
36 |
+
Mage::helper('campaignmonitor')->log($this->__("Unsubscribing: %s", $email));
|
37 |
+
|
38 |
+
try
|
39 |
+
{
|
40 |
+
$result = $client->unsubscribe($email);
|
41 |
+
}
|
42 |
+
catch (Exception $e)
|
43 |
+
{
|
44 |
+
Mage::helper('campaignmonitor')->log("Error in CampaignMonitor SOAP call: ".$e->getMessage());
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
+
catch (Exception $e)
|
49 |
+
{
|
50 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
parent::massUnsubscribeAction();
|
55 |
+
}
|
56 |
+
}
|
57 |
+
?>
|
app/code/community/DigitalPianism/CampaignMonitor/controllers/HookController.php
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once MAGENTO_ROOT . "/lib/createsend/csrest_subscribers.php";
|
3 |
+
include_once Mage::getModuleDir('controllers','Mage_Newsletter').DS."SubscriberController.php";
|
4 |
+
|
5 |
+
class DigitalPianism_CampaignMonitor_HookController extends Mage_Newsletter_SubscriberController
|
6 |
+
{
|
7 |
+
public function newAction()
|
8 |
+
{
|
9 |
+
if ($this->getRequest()->isPost() && $this->getRequest()->getPost('email'))
|
10 |
+
{
|
11 |
+
$session = Mage::getSingleton('core/session');
|
12 |
+
$email = (string)$this->getRequest()->getPost('email');
|
13 |
+
|
14 |
+
Mage::log("Fontis_CampaignMonitor: Adding newsletter subscription via frontend 'Sign up' block for $email");
|
15 |
+
|
16 |
+
$apiKey = Mage::helper('campaignmonitor')->getApiKey();
|
17 |
+
$listID = Mage::helper('campaignmonitor')->getListId();
|
18 |
+
|
19 |
+
if($apiKey && $listID)
|
20 |
+
{
|
21 |
+
try
|
22 |
+
{
|
23 |
+
$client = new CS_REST_Subscribers($listID,$apiKey);
|
24 |
+
}
|
25 |
+
catch(Exception $e)
|
26 |
+
{
|
27 |
+
Mage::helper('campaignmonitor')->log("Error connecting to CampaignMonitor server: ".$e->getMessage());
|
28 |
+
$session->addException($e, $this->__('There was a problem with the subscription'));
|
29 |
+
$this->_redirectReferer();
|
30 |
+
}
|
31 |
+
|
32 |
+
// if a user is logged in, fill in the Campaign Monitor custom
|
33 |
+
// attributes with the data for the logged-in user
|
34 |
+
$customerHelper = Mage::helper('customer');
|
35 |
+
|
36 |
+
if($customerHelper->isLoggedIn())
|
37 |
+
{
|
38 |
+
$customer = $customerHelper->getCustomer();
|
39 |
+
$name = $customer->getFirstname() . " " . $customer->getLastname();
|
40 |
+
$customFields = DigitalPianism_CampaignMonitor_Model_Customer_Observer::generateCustomFields($customer);
|
41 |
+
|
42 |
+
try
|
43 |
+
{
|
44 |
+
$result = $client->add(array(
|
45 |
+
"EmailAddress" => $email,
|
46 |
+
"Name" => $name,
|
47 |
+
"CustomFields" => $customFields,
|
48 |
+
"Resubscribe" => true // if the subscriber is already unsubscried - subscribe again!
|
49 |
+
));
|
50 |
+
}
|
51 |
+
catch(Exception $e)
|
52 |
+
{
|
53 |
+
Mage::helper('campaignmonitor')->log("Error in CampaignMonitor SOAP call: ".$e->getMessage());
|
54 |
+
$session->addException($e, $this->__('There was a problem with the subscription'));
|
55 |
+
$this->_redirectReferer();
|
56 |
+
}
|
57 |
+
}
|
58 |
+
else
|
59 |
+
{
|
60 |
+
// otherwise if nobody's logged in, ignore the custom
|
61 |
+
// attributes and just set the name to '(Guest)'
|
62 |
+
try
|
63 |
+
{
|
64 |
+
$result = $client->add(array(
|
65 |
+
"EmailAddress" => $email,
|
66 |
+
"Name" => "(Guest)",
|
67 |
+
"Resubscribe" => true // if the subscriber is already unsubscried - subscribe again!
|
68 |
+
));
|
69 |
+
}
|
70 |
+
catch (Exception $e)
|
71 |
+
{
|
72 |
+
Mage::helper('campaignmonitor')->log("Error in CampaignMonitor SOAP call: ".$e->getMessage());
|
73 |
+
$session->addException($e, $this->__('There was a problem with the subscription'));
|
74 |
+
$this->_redirectReferer();
|
75 |
+
}
|
76 |
+
}
|
77 |
+
}
|
78 |
+
else
|
79 |
+
{
|
80 |
+
Mage::helper('campaignmonitor')->log("Error: Campaign Monitor API key and/or list ID not set in Magento Newsletter options.");
|
81 |
+
}
|
82 |
+
}
|
83 |
+
|
84 |
+
parent::newAction();
|
85 |
+
}
|
86 |
+
}
|
app/code/community/DigitalPianism/CampaignMonitor/controllers/UnsubscribeController.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once MAGENTO_ROOT . "/lib/createsend/csrest_subscribers.php";
|
3 |
+
|
4 |
+
class DigitalPianism_CampaignMonitor_UnsubscribeController extends Mage_Core_Controller_Front_Action
|
5 |
+
{
|
6 |
+
public function indexAction()
|
7 |
+
{
|
8 |
+
// Don't do anything if we didn't get the email parameter
|
9 |
+
if(isset($_GET['email']))
|
10 |
+
{
|
11 |
+
$email = $_GET['email'];
|
12 |
+
|
13 |
+
// Get the CampaignMonitor credentials
|
14 |
+
$apiKey = Mage::helper('campaignmonitor')->getApiKey();
|
15 |
+
$listID = Mage::helper('campaignmonitor')->getListId();
|
16 |
+
|
17 |
+
// Check that the email address actually is unsubscribed in Campaign Monitor.
|
18 |
+
if($apiKey && $listID)
|
19 |
+
{
|
20 |
+
// Retrieve the subscriber
|
21 |
+
try
|
22 |
+
{
|
23 |
+
$client = new CS_REST_Subscribers($listID,$apiKey);
|
24 |
+
$result = $client->get($email);
|
25 |
+
}
|
26 |
+
catch (Exception $e)
|
27 |
+
{
|
28 |
+
Mage::helper('campaignmonitor')->log(sprintf("Error in SOAP call: %s", $e->getMessage()));
|
29 |
+
$session->addException($e, $this->__('There was a problem with the unsubscription'));
|
30 |
+
$this->_redirectReferer();
|
31 |
+
}
|
32 |
+
|
33 |
+
// Get the subscription state
|
34 |
+
$state = "";
|
35 |
+
try
|
36 |
+
{
|
37 |
+
if($result->was_successful() && isset($result->response->State))
|
38 |
+
{
|
39 |
+
$state = $result->response->State;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
catch(Exception $e)
|
43 |
+
{
|
44 |
+
Mage::helper('campaignmonitor')->log(sprintf("Error in SOAP call: %s", $e->getMessage()));
|
45 |
+
$session->addException($e, $this->__('There was a problem with the unsubscription'));
|
46 |
+
$this->_redirectReferer();
|
47 |
+
}
|
48 |
+
|
49 |
+
// If we are unsubscribed in Campaign Monitor, mark us as
|
50 |
+
// unsubscribed in Magento.
|
51 |
+
if($state == "Unsubscribed")
|
52 |
+
{
|
53 |
+
try
|
54 |
+
{
|
55 |
+
Mage::helper('campaignmonitor')->log($this->__('Unsubscribing %s from Magento',$email));
|
56 |
+
|
57 |
+
$unsubscribe = Mage::getModel('newsletter/subscriber')
|
58 |
+
->loadByEmail($email)
|
59 |
+
->unsubscribe();
|
60 |
+
Mage::getSingleton('customer/session')->addSuccess($this->__('You were successfully unsubscribed'));
|
61 |
+
}
|
62 |
+
catch (Exception $e)
|
63 |
+
{
|
64 |
+
Mage::helper('campaignmonitor')->log(sprintf("%s", $e->getMessage()));
|
65 |
+
Mage::getSingleton('customer/session')->addError($this->__('There was an error while saving your subscription details'));
|
66 |
+
}
|
67 |
+
}
|
68 |
+
else
|
69 |
+
{
|
70 |
+
Mage::helper('campaignmonitor')->log($this->__("Not unsubscribing %s, not unsubscribed in Campaign Monitor",$email));
|
71 |
+
}
|
72 |
+
}
|
73 |
+
}
|
74 |
+
}
|
75 |
+
}
|
76 |
+
?>
|
app/code/community/DigitalPianism/CampaignMonitor/etc/config.xml
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
|
4 |
+
<modules>
|
5 |
+
<DigitalPianism_CampaignMonitor>
|
6 |
+
<version>0.7.0</version>
|
7 |
+
</DigitalPianism_CampaignMonitor>
|
8 |
+
</modules>
|
9 |
+
|
10 |
+
<frontend>
|
11 |
+
<routers>
|
12 |
+
<!-- Declare frontend name -->
|
13 |
+
<campaignmonitor>
|
14 |
+
<use>standard</use>
|
15 |
+
<args>
|
16 |
+
<module>DigitalPianism_CampaignMonitor</module>
|
17 |
+
<frontName>campaignmonitor</frontName>
|
18 |
+
</args>
|
19 |
+
</campaignmonitor>
|
20 |
+
</routers>
|
21 |
+
</frontend>
|
22 |
+
|
23 |
+
<global>
|
24 |
+
|
25 |
+
<!-- Rewrite the save action of the frontend newsletter management page -->
|
26 |
+
<rewrite>
|
27 |
+
<digitalpianism_campaignmonitor_new>
|
28 |
+
<from><![CDATA[#^/newsletter/subscriber#]]></from>
|
29 |
+
<to>/campaignmonitor/hook</to>
|
30 |
+
</digitalpianism_campaignmonitor_new>
|
31 |
+
<digitalpianism_campaignmonitor_admin>
|
32 |
+
<from><![CDATA[#^/admin/newsletter_subscriber/massUnsubscribe#]]></from>
|
33 |
+
<to>/campaignmonitor/adminhook</to>
|
34 |
+
</digitalpianism_campaignmonitor_admin>
|
35 |
+
</rewrite>
|
36 |
+
|
37 |
+
<helpers>
|
38 |
+
<!-- Declare module helpers -->
|
39 |
+
<campaignmonitor>
|
40 |
+
<class>DigitalPianism_CampaignMonitor_Helper</class>
|
41 |
+
</campaignmonitor>
|
42 |
+
</helpers>
|
43 |
+
|
44 |
+
<models>
|
45 |
+
<!-- Declare module models -->
|
46 |
+
<campaignmonitor>
|
47 |
+
<class>DigitalPianism_CampaignMonitor_Model</class>
|
48 |
+
</campaignmonitor>
|
49 |
+
</models>
|
50 |
+
|
51 |
+
<!-- Observer events -->
|
52 |
+
<events>
|
53 |
+
<customer_save_before>
|
54 |
+
<observers>
|
55 |
+
<digitalpianism_campaignmonitor_observer>
|
56 |
+
<type>singleton</type>
|
57 |
+
<class>campaignmonitor/customer_observer</class>
|
58 |
+
<method>check_subscription_status</method>
|
59 |
+
</digitalpianism_campaignmonitor_observer>
|
60 |
+
</observers>
|
61 |
+
</customer_save_before>
|
62 |
+
<customer_delete_before>
|
63 |
+
<observers>
|
64 |
+
<digitalpianism_campaignmonitor_observer_2>
|
65 |
+
<type>singleton</type>
|
66 |
+
<class>campaignmonitor/customer_observer</class>
|
67 |
+
<method>customer_deleted</method>
|
68 |
+
</digitalpianism_campaignmonitor_observer_2>
|
69 |
+
</observers>
|
70 |
+
</customer_delete_before>
|
71 |
+
</events>
|
72 |
+
|
73 |
+
</global>
|
74 |
+
|
75 |
+
</config>
|
app/code/community/DigitalPianism/CampaignMonitor/etc/system.xml
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<sections>
|
4 |
+
<newsletter>
|
5 |
+
<groups>
|
6 |
+
<campaignmonitor translate="label">
|
7 |
+
<label>Campaign Monitor Settings</label>
|
8 |
+
<frontend_type>text</frontend_type>
|
9 |
+
<sort_order>1</sort_order>
|
10 |
+
<show_in_default>1</show_in_default>
|
11 |
+
<show_in_website>1</show_in_website>
|
12 |
+
<show_in_store>1</show_in_store>
|
13 |
+
<fields>
|
14 |
+
<api_key translate="label">
|
15 |
+
<label>API Key</label>
|
16 |
+
<frontend_type>text</frontend_type>
|
17 |
+
<sort_order>1</sort_order>
|
18 |
+
<show_in_default>1</show_in_default>
|
19 |
+
<show_in_website>1</show_in_website>
|
20 |
+
<show_in_store>1</show_in_store>
|
21 |
+
<comment>This can be found on your Account Settings page in Campaign Monitor.</comment>
|
22 |
+
</api_key>
|
23 |
+
<list_id translate="label">
|
24 |
+
<label>API List ID</label>
|
25 |
+
<frontend_type>text</frontend_type>
|
26 |
+
<sort_order>2</sort_order>
|
27 |
+
<show_in_default>1</show_in_default>
|
28 |
+
<show_in_website>1</show_in_website>
|
29 |
+
<show_in_store>1</show_in_store>
|
30 |
+
<comment>Magento users who subscribe/unsubscribe to the newsletter will be added/removed from this Campaign Monitor email list.</comment>
|
31 |
+
</list_id>
|
32 |
+
<m_to_cm_attributes translate="comment">
|
33 |
+
<label>Mapping betweens form, models and CM</label>
|
34 |
+
<frontend_model>digitalPianism_campaignMonitor_block_linkedattributes</frontend_model>
|
35 |
+
<backend_model>adminhtml/system_config_backend_serialized_array</backend_model>
|
36 |
+
<sort_order>5</sort_order>
|
37 |
+
<show_in_default>1</show_in_default>
|
38 |
+
<show_in_website>1</show_in_website>
|
39 |
+
<show_in_store>1</show_in_store>
|
40 |
+
<comment>Campaign monitor is giving different "Key" in setting data and getting data</comment>
|
41 |
+
</m_to_cm_attributes>
|
42 |
+
</fields>
|
43 |
+
</campaignmonitor>
|
44 |
+
</groups>
|
45 |
+
</newsletter>
|
46 |
+
</sections>
|
47 |
+
</config>
|
app/design/adminhtml/default/default/template/digitalpianism/campaignmonitor/system/config/form/field/array_dropdown.phtml
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$_htmlId = $this->getHtmlId() ? $this->getHtmlId() : '_' . uniqid();
|
3 |
+
|
4 |
+
$_colspan = 2;
|
5 |
+
if (!$this->_addAfter) {
|
6 |
+
$_colspan -= 1;
|
7 |
+
}
|
8 |
+
$_colspan = $_colspan > 1 ? 'colspan="' . $_colspan . '"' : '';
|
9 |
+
?>
|
10 |
+
|
11 |
+
<div class="grid" id="grid<?php echo $_htmlId ?>">
|
12 |
+
<table cellpadding="0" cellspacing="0" class="border">
|
13 |
+
<tbody>
|
14 |
+
|
15 |
+
<tr class="headings" id="headings<?php echo $_htmlId ?>">
|
16 |
+
<?php foreach ($this->_columns as $columnName => $column):?>
|
17 |
+
<th><?php echo $column['label'] ?></th>
|
18 |
+
<?php endforeach;?>
|
19 |
+
<th <?php echo $_colspan?>></th>
|
20 |
+
</tr>
|
21 |
+
|
22 |
+
<tr id="addRow<?php echo $_htmlId ?>">
|
23 |
+
<td colspan="<?php echo count($this->_columns) ?>"></td>
|
24 |
+
<td <?php echo $_colspan?>>
|
25 |
+
<button style="" onclick="" class="scalable add" type="button" id="addToEndBtn<?php echo $_htmlId ?>">
|
26 |
+
<span><?php echo $this->_addButtonLabel ?></span>
|
27 |
+
</button>
|
28 |
+
</td>
|
29 |
+
</tr>
|
30 |
+
|
31 |
+
</tbody>
|
32 |
+
</table>
|
33 |
+
<input type="hidden" name="<?php echo $this->getElement()->getName() ?>[__empty]" value="" />
|
34 |
+
</div>
|
35 |
+
<div id="empty<?php echo $_htmlId ?>">
|
36 |
+
<button style="" onclick="" class="scalable add" type="button" id="emptyAddBtn<?php echo $_htmlId ?>">
|
37 |
+
<span><?php echo $this->_addButtonLabel ?></span>
|
38 |
+
</button>
|
39 |
+
</div>
|
40 |
+
|
41 |
+
<script type="text/javascript">
|
42 |
+
// <!--
|
43 |
+
// create row creator
|
44 |
+
var arrayRow<?php echo $_htmlId ?> = {
|
45 |
+
// define row prototypeJS template
|
46 |
+
template : new Template(
|
47 |
+
'<tr id="#{_id}">'
|
48 |
+
<?php foreach ($this->_columns as $columnName => $column):?>
|
49 |
+
+'<td class="#{_id}-<?php echo $columnName?>">'
|
50 |
+
+'<?php echo $this->_renderCellTemplate($columnName)?>'
|
51 |
+
+'</td>'
|
52 |
+
<?php endforeach;?>
|
53 |
+
<?php if ($this->_addAfter):?>
|
54 |
+
+'<td><button onclick="" class="scalable add" type="button" id="addAfterBtn#{_id}"><span><?php echo Mage::helper('adminhtml')->__('Add after') ?></span></button></td>'
|
55 |
+
<?php endif;?>
|
56 |
+
+'<td><button onclick="arrayRow<?php echo $_htmlId ?>.del(\'#{_id}\')" class="scalable delete" type="button"><span><?php echo Mage::helper('adminhtml')->__('Delete') ?></span></button></td>'
|
57 |
+
+'</tr>'
|
58 |
+
),
|
59 |
+
|
60 |
+
rowsCount : 0,
|
61 |
+
|
62 |
+
add : function(templateData, insertAfterId)
|
63 |
+
{
|
64 |
+
// generate default template data
|
65 |
+
if ('' == templateData) {
|
66 |
+
var d = new Date();
|
67 |
+
var templateData = {
|
68 |
+
<?php foreach ($this->_columns as $columnName => $column):?>
|
69 |
+
<?php echo $columnName ?> : '',
|
70 |
+
<?php endforeach;?>
|
71 |
+
_id : '_' + d.getTime() + '_' + d.getMilliseconds()
|
72 |
+
};
|
73 |
+
}
|
74 |
+
|
75 |
+
// insert before last row
|
76 |
+
if ('' == insertAfterId) {
|
77 |
+
new Insertion.Before(
|
78 |
+
$('addRow<?php echo $_htmlId ?>'),
|
79 |
+
this.template.evaluate(templateData)
|
80 |
+
);
|
81 |
+
}
|
82 |
+
// insert after specified row
|
83 |
+
else {
|
84 |
+
new Insertion.After(
|
85 |
+
$(insertAfterId),
|
86 |
+
this.template.evaluate(templateData)
|
87 |
+
);
|
88 |
+
}
|
89 |
+
// set the selected drop-down list item
|
90 |
+
<?php foreach ($this->_columns as $columnName => $column):?>
|
91 |
+
var options = $$('td.' + templateData._id + '-' + '<?php echo $columnName?>' + ' option')
|
92 |
+
for(var index = 0; index < options.length; ++index)
|
93 |
+
{
|
94 |
+
var option = options[index]
|
95 |
+
if(option.getAttribute('value') == templateData.<?php echo $columnName?>)
|
96 |
+
{
|
97 |
+
option.selected = true
|
98 |
+
}
|
99 |
+
}
|
100 |
+
<?php endforeach;?>
|
101 |
+
|
102 |
+
<?php if ($this->_addAfter):?>
|
103 |
+
Event.observe('addAfterBtn' + templateData._id, 'click', this.add.bind(this, '', templateData._id));
|
104 |
+
<?php endif;?>
|
105 |
+
|
106 |
+
this.rowsCount += 1;
|
107 |
+
},
|
108 |
+
|
109 |
+
del : function(rowId)
|
110 |
+
{
|
111 |
+
$(rowId).remove();
|
112 |
+
this.rowsCount -= 1;
|
113 |
+
if (0 == this.rowsCount) {
|
114 |
+
this.showButtonOnly();
|
115 |
+
}
|
116 |
+
},
|
117 |
+
|
118 |
+
showButtonOnly : function()
|
119 |
+
{
|
120 |
+
$('grid<?php echo $_htmlId ?>').hide();
|
121 |
+
$('empty<?php echo $_htmlId ?>').show();
|
122 |
+
}
|
123 |
+
}
|
124 |
+
|
125 |
+
// bind add action to "Add" button in last row
|
126 |
+
Event.observe('addToEndBtn<?php echo $_htmlId ?>', 'click', arrayRow<?php echo $_htmlId ?>.add.bind(arrayRow<?php echo $_htmlId ?>, '', ''));
|
127 |
+
|
128 |
+
// add existing rows
|
129 |
+
<?php
|
130 |
+
$_addAfterId = "headings{$_htmlId}";
|
131 |
+
foreach ($this->getArrayRows() as $_rowId => $_row) {
|
132 |
+
echo "arrayRow{$_htmlId}.add(" . $_row->toJson() . ", '{$_addAfterId}');\n";
|
133 |
+
/*print "%%%%%%%%%%%%%%%";
|
134 |
+
print_r($_row->toJson());*/
|
135 |
+
$_addAfterId = $_rowId;
|
136 |
+
}
|
137 |
+
?>
|
138 |
+
|
139 |
+
// initialize standalone button
|
140 |
+
$('empty<?php echo $_htmlId ?>').hide();
|
141 |
+
Event.observe('emptyAddBtn<?php echo $_htmlId ?>', 'click', function () {
|
142 |
+
$('grid<?php echo $_htmlId ?>').show();
|
143 |
+
$('empty<?php echo $_htmlId ?>').hide();
|
144 |
+
arrayRow<?php echo $_htmlId ?>.add('', '');
|
145 |
+
});
|
146 |
+
|
147 |
+
// if no rows, hide grid and show button only
|
148 |
+
<?php if (!$this->getArrayRows()):?>
|
149 |
+
arrayRow<?php echo $_htmlId ?>.showButtonOnly();
|
150 |
+
<?php endif;?>
|
151 |
+
|
152 |
+
// toggle the grid, if element is disabled (depending on scope)
|
153 |
+
<?php if ($this->getElement()->getDisabled()):?>
|
154 |
+
toggleValueElements({checked:true}, $('grid<?php echo $_htmlId ?>').parentNode);
|
155 |
+
<?php endif;?>
|
156 |
+
// -->
|
157 |
+
</script>
|
app/etc/modules/DigitalPianism_CampaignMonitor.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<DigitalPianism_CampaignMonitor>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</DigitalPianism_CampaignMonitor>
|
8 |
+
</modules>
|
9 |
+
</config>
|
lib/createsend/.gitignore
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.DS_Store
|
2 |
+
.buildpath
|
3 |
+
.project
|
4 |
+
.settings/
|
5 |
+
working-samples/
|
6 |
+
vendor/
|
lib/createsend/.travis.yml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
language: php
|
2 |
+
|
3 |
+
php:
|
4 |
+
- 5.3
|
5 |
+
- 5.4
|
6 |
+
|
7 |
+
before_script: composer install --dev
|
8 |
+
script: cd tests && php all_tests.php && cd ..
|
lib/createsend/HISTORY.md
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# createsend-php history
|
2 |
+
|
3 |
+
## v3.1.0 - 15 Apr, 2013
|
4 |
+
|
5 |
+
* Added support for [single sign on](http://www.campaignmonitor.com/api/account/#single_sign_on) which allows initiation of external login sessions to Campaign Monitor.
|
6 |
+
|
7 |
+
## v3.0.0 - 25 Mar, 2013
|
8 |
+
|
9 |
+
* Added support for authenticating using OAuth. See the [README](README.md#authenticating) for full usage instructions.
|
10 |
+
* This introduces some changes to how you authenticate using this library. You now authenticate by passing an `$auth` array as the first argument when creating instances of any classes which inherit from the `CS_REST_Wrapper_Base` class.
|
11 |
+
|
12 |
+
So in existing code, when you _previously_ would have authenticated using an API key as follows:
|
13 |
+
|
14 |
+
```php
|
15 |
+
$wrap = new CS_REST_General('Your API Key');
|
16 |
+
$result = $wrap->get_clients();
|
17 |
+
```
|
18 |
+
|
19 |
+
If you want to authenticate using an API key, you should _now_ do this:
|
20 |
+
|
21 |
+
```php
|
22 |
+
$wrap = new CS_REST_General(array('api_key' => 'Your API Key'));
|
23 |
+
$result = $wrap->get_clients();
|
24 |
+
```
|
25 |
+
|
26 |
+
## v2.5.2 - 19 Dec, 2012
|
27 |
+
|
28 |
+
* Removed simpletest source files, and added simpletest as a dev dependency.
|
29 |
+
* Fixed autoloading with composer, so that only necessary classes are loaded.
|
30 |
+
|
31 |
+
## v2.5.1 - 14 Dec, 2012
|
32 |
+
|
33 |
+
* Use CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT constants instead of
|
34 |
+
CURLOPT_TIMEOUT_MS and CURLOPT_CONNECTTIMEOUT_MS.
|
35 |
+
* Added autoloading support when using Composer (PHP dependency management).
|
36 |
+
|
37 |
+
## v2.5.0 - 11 Dec, 2012
|
38 |
+
|
39 |
+
* Added support for including from name, from email, and reply to email in
|
40 |
+
drafts, scheduled, and sent campaigns.
|
41 |
+
* Added support for campaign text version urls.
|
42 |
+
* Added support for transferring credits to/from a client.
|
43 |
+
* Added support for getting account billing details as well as client credits.
|
44 |
+
* Made all date fields optional when getting paged results.
|
45 |
+
|
46 |
+
## v2.4.0 - 5 Nov, 2012
|
47 |
+
|
48 |
+
* Added CS_REST_Campaigns.get_email_client_usage().
|
49 |
+
* Added support for ReadsEmailWith field on subscriber objects.
|
50 |
+
* Added support for retrieving unconfirmed subscribers for a list.
|
51 |
+
* Added support for suppressing email addresses.
|
52 |
+
* Added support for retrieving spam complaints for a campaign, as well as
|
53 |
+
adding SpamComplaints field to campaign summary output.
|
54 |
+
* Added VisibleInPreferenceCenter field to custom field output.
|
55 |
+
* Added support for setting preference center visibility when creating custom
|
56 |
+
fields.
|
57 |
+
* Added the ability to update a custom field name and preference visibility.
|
58 |
+
* Added documentation explaining that TextUrl is now optional when creating a
|
59 |
+
campaign.
|
60 |
+
|
61 |
+
## v2.3.2 - 23 Oct, 2012
|
62 |
+
|
63 |
+
* Fixed timeout issue by setting CS_REST_SOCKET_TIMEOUT to 10 seconds.
|
64 |
+
|
65 |
+
## v2.3.1 - 19 Oct, 2012
|
66 |
+
|
67 |
+
* Fixed #13. Load services_json.php only if Services_JSON class doesn't already
|
68 |
+
exist.
|
69 |
+
* Fixed issue with curl calls hangs hanging on proxy failure.
|
70 |
+
|
71 |
+
## v2.3.0 - 10 Oct, 2012
|
72 |
+
|
73 |
+
* Added support for creating campaigns from templates.
|
74 |
+
* Added support for unsuppressing an email address.
|
75 |
+
|
76 |
+
## 1.1.3 - 26 Sep, 2012
|
77 |
+
|
78 |
+
* Backported fix to use Mozilla certificate bundle, as per
|
79 |
+
http://curl.haxx.se/docs/caextract.html
|
80 |
+
|
81 |
+
## v2.2.0 - 17 Sep, 2012
|
82 |
+
|
83 |
+
* Added WorldviewURL field to campaign summary response.
|
84 |
+
* Added Latitude, Longitude, City, Region, CountryCode, and CountryName
|
85 |
+
fields to campaign opens and clicks responses.
|
86 |
+
|
87 |
+
## 2.1.1 - 11 Sep, 2012
|
88 |
+
|
89 |
+
* Added 'Contributing' section to README.
|
90 |
+
* Used the Mozilla certificate bundle, as per
|
91 |
+
http://curl.haxx.se/docs/caextract.html
|
92 |
+
* Bumping to 2.1.1
|
93 |
+
|
94 |
+
## v2.1.0 - 30 Aug, 2012
|
95 |
+
|
96 |
+
* Added support for basic / unlimited pricing.
|
97 |
+
|
98 |
+
## v2.0.0 - 23 Aug, 2012
|
99 |
+
|
100 |
+
* Removing deprecated method CS_REST_Clients.set_access().
|
101 |
+
* Removed traces of calling the API in a deprecated manner.
|
102 |
+
|
103 |
+
## v1.2.0 - 22 Aug, 2012
|
104 |
+
|
105 |
+
* Added support for UnsubscribeSetting field when creating, updating and
|
106 |
+
getting list details.
|
107 |
+
* Added support for AddUnsubscribesToSuppList and ScrubActiveWithSuppList
|
108 |
+
fields when updating a list.
|
109 |
+
* Added support for finding all client lists to which a subscriber with a
|
110 |
+
specific email address belongs.
|
111 |
+
|
112 |
+
## v1.1.2 - 23 Jul, 2012
|
113 |
+
|
114 |
+
* Added support for specifying whether subscription-based autoresponders
|
115 |
+
should be restarted when adding or updating subscribers.
|
116 |
+
|
117 |
+
## v1.1.1 - 16 Jul, 2012
|
118 |
+
|
119 |
+
* Added Travis CI support.
|
120 |
+
|
121 |
+
## v1.1.0 - 11 Jul, 2012
|
122 |
+
|
123 |
+
* Added support for team management.
|
124 |
+
|
125 |
+
## 1.0.14 - 18 Mar, 2012
|
126 |
+
|
127 |
+
* Added support for new API methods.
|
128 |
+
* Fixed subscriber import sample.
|
129 |
+
|
130 |
+
## 1.0.12 - 12 Sep, 2011
|
131 |
+
|
132 |
+
* Fixed response handling code so that it can deal with HTTP responses
|
133 |
+
beginning with "HTTP/1.1 Continue".
|
134 |
+
|
135 |
+
## 1.0.11 - 25 Aug, 2011
|
136 |
+
|
137 |
+
* Fixed socket issue by added Connection:Close header for raw socket
|
138 |
+
transport.
|
139 |
+
|
140 |
+
## 1.0.10 - 12 Jul, 2011
|
141 |
+
|
142 |
+
* Fixed #5. Updated recursive check_encoding call.
|
143 |
+
* Fixed #7. Modified template create/update to not require screenshot URL.
|
144 |
+
|
145 |
+
## 1.0.9 - 18 Jun, 2011
|
146 |
+
|
147 |
+
* Fixed #4. Removed static function calls.
|
148 |
+
|
149 |
+
## 1.0.8 - 6 Jun, 2011
|
150 |
+
|
151 |
+
* Initial release which supports current Campaign Monitor API.
|
lib/createsend/LICENSE
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (c) 2010 Toby Brain
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
+
of this software and associated documentation files (the "Software"), to deal
|
5 |
+
in the Software without restriction, including without limitation the rights
|
6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
+
copies of the Software, and to permit persons to whom the Software is
|
8 |
+
furnished to do so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in
|
11 |
+
all copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
+
THE SOFTWARE.
|
20 |
+
|
21 |
+
------------------------------------------------------------------------------
|
22 |
+
For Services_JSON Library (classes/services_json.php)
|
23 |
+
------------------------------------------------------------------------------
|
24 |
+
Redistribution and use in source and binary forms, with or
|
25 |
+
without modification, are permitted provided that the following
|
26 |
+
conditions are met: Redistributions of source code must retain the
|
27 |
+
above copyright notice, this list of conditions and the following
|
28 |
+
disclaimer. Redistributions in binary form must reproduce the above
|
29 |
+
copyright notice, this list of conditions and the following disclaimer
|
30 |
+
in the documentation and/or other materials provided with the
|
31 |
+
distribution.
|
32 |
+
|
33 |
+
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
34 |
+
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
35 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
36 |
+
NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
37 |
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
38 |
+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
39 |
+
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
40 |
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
41 |
+
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
42 |
+
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
43 |
+
DAMAGE.
|
44 |
+
Author: Michal Migurski <mike-json@teczno.com>
|
45 |
+
Author: Matt Knapp <mdknapp[at]gmail[dot]com>
|
46 |
+
Author: Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
|
47 |
+
Copyright (c) 2005 Michal Migurski
|
48 |
+
http://www.opensource.org/licenses/bsd-license.php
|
lib/createsend/README.md
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# createsend [![Build Status](https://secure.travis-ci.org/campaignmonitor/createsend-php.png)][travis]
|
2 |
+
A PHP library which implements the complete functionality of the [Campaign Monitor API](http://www.campaignmonitor.com/api/).
|
3 |
+
|
4 |
+
[travis]: http://travis-ci.org/campaignmonitor/createsend-php
|
5 |
+
|
6 |
+
## Installation
|
7 |
+
|
8 |
+
If you use [Composer](http://getcomposer.org/), you can add [campaignmonitor/createsend-php](https://packagist.org/packages/campaignmonitor/createsend-php) to your `composer.json` file:
|
9 |
+
|
10 |
+
```json
|
11 |
+
{
|
12 |
+
"require": {
|
13 |
+
"campaignmonitor/createsend-php": "{version}"
|
14 |
+
}
|
15 |
+
}
|
16 |
+
```
|
17 |
+
|
18 |
+
Otherwise you can simply [download](https://github.com/campaignmonitor/createsend-php/tags) the library and include it in your project.
|
19 |
+
|
20 |
+
After you have installed the library, simply include the relevant API class, as follows:
|
21 |
+
|
22 |
+
```php
|
23 |
+
require_once 'csrest_campaigns.php'
|
24 |
+
```
|
25 |
+
|
26 |
+
## Authenticating
|
27 |
+
|
28 |
+
The Campaign Monitor API supports authentication using either OAuth or an API key.
|
29 |
+
|
30 |
+
### Using OAuth
|
31 |
+
|
32 |
+
Depending on the environment you are developing in, you may wish to use a PHP OAuth library to get access tokens for your users. If you don't use an OAuth library, you will need to get access tokens for your users by following the instructions included in the Campaign Monitor API [documentation](http://www.campaignmonitor.com/api/getting-started/#authenticating_with_oauth). This package provides functionality to help you do this, as described below. You may also wish to reference this [example application](https://gist.github.com/jdennes/4973318), which is implemented using [Slim](http://slimframework.com/) but could easily be adapted for use with any PHP framework.
|
33 |
+
|
34 |
+
The first thing your application should do is redirect your user to the Campaign Monitor authorization URL where they will have the opportunity to approve your application to access their Campaign Monitor account. You can get this authorization URL by using the `CS_REST_General::authorize_url()` method, like so:
|
35 |
+
|
36 |
+
```php
|
37 |
+
require_once 'csrest_general.php';
|
38 |
+
|
39 |
+
$authorize_url = CS_REST_General::authorize_url(
|
40 |
+
'Client ID for your application',
|
41 |
+
'Redirect URI for your application',
|
42 |
+
'The permission level your application requires',
|
43 |
+
'Optional state data to be included'
|
44 |
+
);
|
45 |
+
# Redirect your users to $authorize_url.
|
46 |
+
```
|
47 |
+
|
48 |
+
If your user approves your application, they will then be redirected to the `redirect_uri` you specified, which will include a `code` parameter, and optionally a `state` parameter in the query string. Your application should implement a handler which can exchange the code passed to it for an access token, using `CS_REST_General::exchange_token()` like so:
|
49 |
+
|
50 |
+
```php
|
51 |
+
require_once 'csrest_general.php';
|
52 |
+
|
53 |
+
$result = CS_REST_General::exchange_token(
|
54 |
+
'Client ID for your application',
|
55 |
+
'Client Secret for your application',
|
56 |
+
'Redirect URI for your application',
|
57 |
+
'A unique code for your user' # Get the code parameter from the query string
|
58 |
+
);
|
59 |
+
|
60 |
+
if ($result->was_successful()) {
|
61 |
+
$access_token = $result->response->access_token;
|
62 |
+
$expires_in = $result->response->expires_in;
|
63 |
+
$refresh_token = $result->response->refresh_token;
|
64 |
+
# Save $access_token, $expires_in, and $refresh_token.
|
65 |
+
} else {
|
66 |
+
echo 'An error occurred:\n';
|
67 |
+
echo $result->response->error.': '.$result->response->error_description."\n";
|
68 |
+
# Handle error...
|
69 |
+
}
|
70 |
+
```
|
71 |
+
|
72 |
+
At this point you have an access token and refresh token for your user which you should store somewhere convenient so that your application can look up these values when your user wants to make future Campaign Monitor API calls.
|
73 |
+
|
74 |
+
Once you have an access token and refresh token for your user, you can authenticate and make further API calls like so:
|
75 |
+
|
76 |
+
```php
|
77 |
+
require_once 'csrest_general.php';
|
78 |
+
|
79 |
+
$auth = array(
|
80 |
+
'access_token' => 'your access token',
|
81 |
+
'refresh_token' => 'your refresh_token');
|
82 |
+
$wrap = new CS_REST_General($auth);
|
83 |
+
|
84 |
+
$result = $wrap->get_clients();
|
85 |
+
var_dump($result->response);
|
86 |
+
```
|
87 |
+
|
88 |
+
All OAuth tokens have an expiry time, and can be renewed with a corresponding refresh token. If your access token expires when attempting to make an API call, you will receive an error response, so your code should handle this. Here's an example of how you could do this:
|
89 |
+
|
90 |
+
```php
|
91 |
+
require_once 'csrest_general.php';
|
92 |
+
|
93 |
+
$auth = array(
|
94 |
+
'access_token' => 'your access token',
|
95 |
+
'refresh_token' => 'your refresh token'
|
96 |
+
);
|
97 |
+
$wrap = new CS_REST_General($auth);
|
98 |
+
$result = $wrap->get_clients();
|
99 |
+
if (!$result->was_successful()) {
|
100 |
+
# If you receive '121: Expired OAuth Token', refresh the access token
|
101 |
+
if ($result->response->Code == 121) {
|
102 |
+
list($new_access_token, $new_expires_in, $new_refresh_token) =
|
103 |
+
$wrap->refresh_token();
|
104 |
+
# Save $new_access_token, $new_expires_in, and $new_refresh_token
|
105 |
+
}
|
106 |
+
# Make the call again
|
107 |
+
$result = $wrap->get_clients();
|
108 |
+
}
|
109 |
+
var_dump($result->response);
|
110 |
+
```
|
111 |
+
|
112 |
+
### Using an API key
|
113 |
+
|
114 |
+
```php
|
115 |
+
require_once 'csrest_general.php';
|
116 |
+
|
117 |
+
$auth = array('api_key' => 'your API key');
|
118 |
+
$wrap = new CS_REST_General($auth);
|
119 |
+
|
120 |
+
$result = $wrap->get_clients();
|
121 |
+
var_dump($result->response);
|
122 |
+
```
|
123 |
+
|
124 |
+
## Examples
|
125 |
+
|
126 |
+
Samples for creating or accessing all resources can be found in the samples directory.
|
127 |
+
These samples can be used as the basis for your own application and provide an outline of
|
128 |
+
the expected inputs for each API call.
|
129 |
+
|
130 |
+
Further documentation of the inputs and outputs of each call can be found in the
|
131 |
+
documentation in each of the csrest_*.php files or simply by examining the
|
132 |
+
var_dump results in each of the provided samples.
|
133 |
+
|
134 |
+
## Contributing
|
135 |
+
|
136 |
+
Please check the [guidelines for contributing](https://github.com/campaignmonitor/createsend-php/blob/master/CONTRIBUTING.md) to this repository.
|
137 |
+
|
138 |
+
## Releasing
|
139 |
+
|
140 |
+
Please check the [instructions for releasing](https://github.com/campaignmonitor/createsend-php/blob/master/RELEASE.md) this library.
|
lib/createsend/RELEASE.md
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Releasing createsend-php
|
2 |
+
|
3 |
+
## Requirements
|
4 |
+
|
5 |
+
- You must have [Composer](https://getcomposer.org/) installed.
|
6 |
+
|
7 |
+
## Prepare the release
|
8 |
+
|
9 |
+
- Increment the `CS_REST_WRAPPER_VERSION` constant in the `class/base_classes.php` file, ensuring that you use [Semantic Versioning](http://semver.org/).
|
10 |
+
- Add an entry to `HISTORY.md` which clearly explains the new release.
|
11 |
+
- Install development dependencies and ensure that tests pass locally:
|
12 |
+
|
13 |
+
```
|
14 |
+
composer install --dev
|
15 |
+
cd tests && php all_tests.php && cd ..
|
16 |
+
```
|
17 |
+
|
18 |
+
- Commit your changes:
|
19 |
+
|
20 |
+
```
|
21 |
+
git commit -am "Version X.Y.Z"
|
22 |
+
```
|
23 |
+
|
24 |
+
- Tag the new version:
|
25 |
+
|
26 |
+
```
|
27 |
+
git tag -a vX.Y.Z -m "Version X.Y.Z"
|
28 |
+
```
|
29 |
+
|
30 |
+
- Push your changes to GitHub, including the tag you just created:
|
31 |
+
|
32 |
+
```
|
33 |
+
git push origin master --tags
|
34 |
+
```
|
35 |
+
|
36 |
+
- Ensure that all [tests](https://travis-ci.org/campaignmonitor/createsend-php) pass.
|
37 |
+
|
38 |
+
## Release the module
|
39 |
+
|
40 |
+
There is a [GitHub service hook](https://github.com/campaignmonitor/createsend-php/settings/hooks) for the [Packagist](https://packagist.org/) PHP package repository, which is configured to update the [createsend-php](https://packagist.org/packages/campaignmonitor/createsend-php) package when new tags are pushed to GitHub.
|
41 |
+
|
42 |
+
So there are no further steps to releasing the module. You should now see the latest version of the module listed on [Packagist](https://packagist.org/packages/campaignmonitor/createsend-php). All done!
|
lib/createsend/class/base_classes.php
ADDED
@@ -0,0 +1,287 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once dirname(__FILE__).'/serialisation.php';
|
4 |
+
require_once dirname(__FILE__).'/transport.php';
|
5 |
+
require_once dirname(__FILE__).'/log.php';
|
6 |
+
|
7 |
+
define('CS_REST_WRAPPER_VERSION', '3.1.0');
|
8 |
+
define('CS_HOST', 'api.createsend.com');
|
9 |
+
define('CS_OAUTH_BASE_URI', 'https://'.CS_HOST.'/oauth');
|
10 |
+
define('CS_OAUTH_TOKEN_URI', CS_OAUTH_BASE_URI.'/token');
|
11 |
+
define('CS_REST_WEBHOOK_FORMAT_JSON', 'json');
|
12 |
+
define('CS_REST_WEBHOOK_FORMAT_XML', 'xml');
|
13 |
+
|
14 |
+
/**
|
15 |
+
* A general result object returned from all Campaign Monitor API calls.
|
16 |
+
* @author tobyb
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
class CS_REST_Wrapper_Result {
|
20 |
+
/**
|
21 |
+
* The deserialised result of the API call
|
22 |
+
* @var mixed
|
23 |
+
*/
|
24 |
+
var $response;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* The http status code of the API call
|
28 |
+
* @var int
|
29 |
+
*/
|
30 |
+
var $http_status_code;
|
31 |
+
|
32 |
+
function CS_REST_Wrapper_Result($response, $code) {
|
33 |
+
$this->response = $response;
|
34 |
+
$this->http_status_code = $code;
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Can be used to check if a call to the api resulted in a successful response.
|
39 |
+
* @return boolean False if the call failed. Check the response property for the failure reason.
|
40 |
+
* @access public
|
41 |
+
*/
|
42 |
+
function was_successful() {
|
43 |
+
return $this->http_status_code >= 200 && $this->http_status_code < 300;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Base class for the create send PHP wrapper.
|
49 |
+
* This class includes functions to access the general data,
|
50 |
+
* i.e timezones, clients and getting your API Key from username and password
|
51 |
+
* @author tobyb
|
52 |
+
*
|
53 |
+
*/
|
54 |
+
class CS_REST_Wrapper_Base {
|
55 |
+
/**
|
56 |
+
* The protocol to use while accessing the api
|
57 |
+
* @var string http or https
|
58 |
+
* @access private
|
59 |
+
*/
|
60 |
+
var $_protocol;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* The base route of the create send api.
|
64 |
+
* @var string
|
65 |
+
* @access private
|
66 |
+
*/
|
67 |
+
var $_base_route;
|
68 |
+
|
69 |
+
/**
|
70 |
+
* The serialiser to use for serialisation and deserialisation
|
71 |
+
* of API request and response data
|
72 |
+
* @var CS_REST_JsonSerialiser or CS_REST_XmlSerialiser
|
73 |
+
* @access private
|
74 |
+
*/
|
75 |
+
var $_serialiser;
|
76 |
+
|
77 |
+
/**
|
78 |
+
* The transport to use to send API requests
|
79 |
+
* @var CS_REST_CurlTransport or CS_REST_SocketTransport or your own custom transport.
|
80 |
+
* @access private
|
81 |
+
*/
|
82 |
+
var $_transport;
|
83 |
+
|
84 |
+
/**
|
85 |
+
* The logger to use for debugging of all API requests
|
86 |
+
* @var CS_REST_Log
|
87 |
+
* @access private
|
88 |
+
*/
|
89 |
+
var $_log;
|
90 |
+
|
91 |
+
/**
|
92 |
+
* The default options to use for each API request.
|
93 |
+
* These can be overridden by passing in an array as the call_options argument
|
94 |
+
* to a single api request.
|
95 |
+
* Valid options are:
|
96 |
+
*
|
97 |
+
* deserialise boolean:
|
98 |
+
* Set this to false if you want to get the raw response.
|
99 |
+
* This can be useful if your passing json directly to javascript.
|
100 |
+
*
|
101 |
+
* While there are clearly other options there is no need to change them.
|
102 |
+
* @var array
|
103 |
+
* @access private
|
104 |
+
*/
|
105 |
+
var $_default_call_options;
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Constructor.
|
109 |
+
* @param $auth_details array Authentication details to use for API calls.
|
110 |
+
* This array must take one of the following forms:
|
111 |
+
* If using OAuth to authenticate:
|
112 |
+
* array(
|
113 |
+
* 'access_token' => 'your access token',
|
114 |
+
* 'refresh_token' => 'your refresh token')
|
115 |
+
*
|
116 |
+
* Or if using an API key:
|
117 |
+
* array('api_key' => 'your api key')
|
118 |
+
*
|
119 |
+
* Note that this method will continue to work in the deprecated
|
120 |
+
* case when $auth_details is passed in as a string containing an
|
121 |
+
* API key.
|
122 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
123 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
124 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
125 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
126 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
127 |
+
* @param $transport The transport to use. Used for dependency injection
|
128 |
+
* @access public
|
129 |
+
*/
|
130 |
+
function CS_REST_Wrapper_Base(
|
131 |
+
$auth_details,
|
132 |
+
$protocol = 'https',
|
133 |
+
$debug_level = CS_REST_LOG_NONE,
|
134 |
+
$host = CS_HOST,
|
135 |
+
$log = NULL,
|
136 |
+
$serialiser = NULL,
|
137 |
+
$transport = NULL) {
|
138 |
+
|
139 |
+
if (is_string($auth_details)) {
|
140 |
+
# If $auth_details is a string, assume it is an API key
|
141 |
+
$auth_details = array('api_key' => $auth_details);
|
142 |
+
}
|
143 |
+
|
144 |
+
$this->_log = is_null($log) ? new CS_REST_Log($debug_level) : $log;
|
145 |
+
|
146 |
+
$this->_protocol = $protocol;
|
147 |
+
$this->_base_route = $protocol.'://'.$host.'/api/v3/';
|
148 |
+
|
149 |
+
$this->_log->log_message('Creating wrapper for '.$this->_base_route, get_class($this), CS_REST_LOG_VERBOSE);
|
150 |
+
|
151 |
+
$this->_transport = is_null($transport) ?
|
152 |
+
CS_REST_TRANSPORT_get_available($this->is_secure(), $this->_log) :
|
153 |
+
$transport;
|
154 |
+
|
155 |
+
$transport_type = method_exists($this->_transport, 'get_type') ? $this->_transport->get_type() : 'Unknown';
|
156 |
+
$this->_log->log_message('Using '.$transport_type.' for transport', get_class($this), CS_REST_LOG_WARNING);
|
157 |
+
|
158 |
+
$this->_serialiser = is_null($serialiser) ?
|
159 |
+
CS_REST_SERIALISATION_get_available($this->_log) : $serialiser;
|
160 |
+
|
161 |
+
$this->_log->log_message('Using '.$this->_serialiser->get_type().' json serialising', get_class($this), CS_REST_LOG_WARNING);
|
162 |
+
|
163 |
+
$this->_default_call_options = array (
|
164 |
+
'authdetails' => $auth_details,
|
165 |
+
'userAgent' => 'CS_REST_Wrapper v'.CS_REST_WRAPPER_VERSION.
|
166 |
+
' PHPv'.phpversion().' over '.$transport_type.' with '.$this->_serialiser->get_type(),
|
167 |
+
'contentType' => 'application/json; charset=utf-8',
|
168 |
+
'deserialise' => true,
|
169 |
+
'host' => $host,
|
170 |
+
'protocol' => $protocol
|
171 |
+
);
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Refresh the current OAuth token using the current refresh token.
|
176 |
+
* @access public
|
177 |
+
*/
|
178 |
+
function refresh_token() {
|
179 |
+
if (!isset($this->_default_call_options['authdetails']) ||
|
180 |
+
!isset($this->_default_call_options['authdetails']['refresh_token'])) {
|
181 |
+
trigger_error(
|
182 |
+
'Error refreshing token. There is no refresh token set on this object.',
|
183 |
+
E_USER_ERROR);
|
184 |
+
return array(NULL, NULL, NULL);
|
185 |
+
}
|
186 |
+
$body = "grant_type=refresh_token&refresh_token=".urlencode(
|
187 |
+
$this->_default_call_options['authdetails']['refresh_token']);
|
188 |
+
$options = array('contentType' => 'application/x-www-form-urlencoded');
|
189 |
+
$wrap = new CS_REST_Wrapper_Base(
|
190 |
+
NULL, 'https', CS_REST_LOG_NONE, CS_HOST, NULL,
|
191 |
+
new CS_REST_DoNothingSerialiser(), NULL);
|
192 |
+
|
193 |
+
$result = $wrap->post_request(CS_OAUTH_TOKEN_URI, $body, $options);
|
194 |
+
if ($result->was_successful()) {
|
195 |
+
$access_token = $result->response->access_token;
|
196 |
+
$expires_in = $result->response->expires_in;
|
197 |
+
$refresh_token = $result->response->refresh_token;
|
198 |
+
$this->_default_call_options['authdetails'] = array(
|
199 |
+
'access_token' => $access_token,
|
200 |
+
'refresh_token' => $refresh_token
|
201 |
+
);
|
202 |
+
return array($access_token, $expires_in, $refresh_token);
|
203 |
+
} else {
|
204 |
+
trigger_error(
|
205 |
+
'Error refreshing token. '.$result->response->error.': '.$result->response->error_description,
|
206 |
+
E_USER_ERROR);
|
207 |
+
return array(NULL, NULL, NULL);
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
/**
|
212 |
+
* @return boolean True if the wrapper is using SSL.
|
213 |
+
* @access public
|
214 |
+
*/
|
215 |
+
function is_secure() {
|
216 |
+
return $this->_protocol === 'https';
|
217 |
+
}
|
218 |
+
|
219 |
+
function put_request($route, $data, $call_options = array()) {
|
220 |
+
return $this->_call($call_options, CS_REST_PUT, $route, $data);
|
221 |
+
}
|
222 |
+
|
223 |
+
function post_request($route, $data, $call_options = array()) {
|
224 |
+
return $this->_call($call_options, CS_REST_POST, $route, $data);
|
225 |
+
}
|
226 |
+
|
227 |
+
function delete_request($route, $call_options = array()) {
|
228 |
+
return $this->_call($call_options, CS_REST_DELETE, $route);
|
229 |
+
}
|
230 |
+
|
231 |
+
function get_request($route, $call_options = array()) {
|
232 |
+
return $this->_call($call_options, CS_REST_GET, $route);
|
233 |
+
}
|
234 |
+
|
235 |
+
function get_request_paged($route, $page_number, $page_size, $order_field, $order_direction,
|
236 |
+
$join_char = '&') {
|
237 |
+
if(!is_null($page_number)) {
|
238 |
+
$route .= $join_char.'page='.$page_number;
|
239 |
+
$join_char = '&';
|
240 |
+
}
|
241 |
+
|
242 |
+
if(!is_null($page_size)) {
|
243 |
+
$route .= $join_char.'pageSize='.$page_size;
|
244 |
+
$join_char = '&';
|
245 |
+
}
|
246 |
+
|
247 |
+
if(!is_null($order_field)) {
|
248 |
+
$route .= $join_char.'orderField='.$order_field;
|
249 |
+
$join_char = '&';
|
250 |
+
}
|
251 |
+
|
252 |
+
if(!is_null($order_direction)) {
|
253 |
+
$route .= $join_char.'orderDirection='.$order_direction;
|
254 |
+
$join_char = '&';
|
255 |
+
}
|
256 |
+
|
257 |
+
return $this->get_request($route);
|
258 |
+
}
|
259 |
+
|
260 |
+
/**
|
261 |
+
* Internal method to make a general API request based on the provided options
|
262 |
+
* @param $call_options
|
263 |
+
* @access private
|
264 |
+
*/
|
265 |
+
function _call($call_options, $method, $route, $data = NULL) {
|
266 |
+
$call_options['route'] = $route;
|
267 |
+
$call_options['method'] = $method;
|
268 |
+
|
269 |
+
if(!is_null($data)) {
|
270 |
+
$call_options['data'] = $this->_serialiser->serialise($data);
|
271 |
+
}
|
272 |
+
|
273 |
+
$call_options = array_merge($this->_default_call_options, $call_options);
|
274 |
+
$this->_log->log_message('Making '.$call_options['method'].' call to: '.$call_options['route'], get_class($this), CS_REST_LOG_WARNING);
|
275 |
+
|
276 |
+
$call_result = $this->_transport->make_call($call_options);
|
277 |
+
|
278 |
+
$this->_log->log_message('Call result: <pre>'.var_export($call_result, true).'</pre>',
|
279 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
280 |
+
|
281 |
+
if($call_options['deserialise']) {
|
282 |
+
$call_result['response'] = $this->_serialiser->deserialise($call_result['response']);
|
283 |
+
}
|
284 |
+
|
285 |
+
return new CS_REST_Wrapper_Result($call_result['response'], $call_result['code']);
|
286 |
+
}
|
287 |
+
}
|
lib/createsend/class/cacert.pem
ADDED
@@ -0,0 +1,3849 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
##
|
2 |
+
## ca-bundle.crt -- Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Certificate data from Mozilla as of: Thu Jun 28 15:03:08 2012
|
5 |
+
##
|
6 |
+
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
+
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
+
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
+
## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
|
10 |
+
##
|
11 |
+
## It contains the certificates in PEM format and therefore
|
12 |
+
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
+
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
+
## Just configure this file as the SSLCACertificateFile.
|
15 |
+
##
|
16 |
+
|
17 |
+
# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.85 $ $Date: 2012/06/28 13:50:18 $
|
18 |
+
|
19 |
+
GTE CyberTrust Global Root
|
20 |
+
==========================
|
21 |
+
-----BEGIN CERTIFICATE-----
|
22 |
+
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
23 |
+
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
24 |
+
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
25 |
+
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
26 |
+
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
27 |
+
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
28 |
+
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
29 |
+
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
30 |
+
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
31 |
+
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
32 |
+
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
33 |
+
-----END CERTIFICATE-----
|
34 |
+
|
35 |
+
Thawte Server CA
|
36 |
+
================
|
37 |
+
-----BEGIN CERTIFICATE-----
|
38 |
+
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
39 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
40 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
41 |
+
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
42 |
+
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
43 |
+
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
44 |
+
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
45 |
+
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
46 |
+
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
47 |
+
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
48 |
+
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
49 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
50 |
+
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
51 |
+
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
52 |
+
-----END CERTIFICATE-----
|
53 |
+
|
54 |
+
Thawte Premium Server CA
|
55 |
+
========================
|
56 |
+
-----BEGIN CERTIFICATE-----
|
57 |
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
58 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
59 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
60 |
+
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
61 |
+
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
62 |
+
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
63 |
+
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
64 |
+
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
65 |
+
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
66 |
+
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
67 |
+
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
68 |
+
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
69 |
+
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
70 |
+
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
71 |
+
UCemDaYj+bvLpgcUQg==
|
72 |
+
-----END CERTIFICATE-----
|
73 |
+
|
74 |
+
Equifax Secure CA
|
75 |
+
=================
|
76 |
+
-----BEGIN CERTIFICATE-----
|
77 |
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
78 |
+
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
79 |
+
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
80 |
+
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
81 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
82 |
+
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
83 |
+
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
84 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
85 |
+
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
86 |
+
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
87 |
+
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
88 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
89 |
+
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
90 |
+
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
91 |
+
70+sB3c4
|
92 |
+
-----END CERTIFICATE-----
|
93 |
+
|
94 |
+
Digital Signature Trust Co. Global CA 1
|
95 |
+
=======================================
|
96 |
+
-----BEGIN CERTIFICATE-----
|
97 |
+
MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
98 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
|
99 |
+
MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
100 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
|
101 |
+
A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
|
102 |
+
NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
|
103 |
+
o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
104 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
105 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
106 |
+
IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
107 |
+
MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
|
108 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
109 |
+
ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
|
110 |
+
kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
|
111 |
+
RbyhkwS7hp86W0N6w4pl
|
112 |
+
-----END CERTIFICATE-----
|
113 |
+
|
114 |
+
Digital Signature Trust Co. Global CA 3
|
115 |
+
=======================================
|
116 |
+
-----BEGIN CERTIFICATE-----
|
117 |
+
MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
118 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
|
119 |
+
MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
120 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
|
121 |
+
A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
|
122 |
+
VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
|
123 |
+
xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
124 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
125 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
126 |
+
IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
127 |
+
MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
|
128 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
129 |
+
AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
|
130 |
+
up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
|
131 |
+
mPnHfxsb1gYgAlihw6ID
|
132 |
+
-----END CERTIFICATE-----
|
133 |
+
|
134 |
+
Verisign Class 3 Public Primary Certification Authority
|
135 |
+
=======================================================
|
136 |
+
-----BEGIN CERTIFICATE-----
|
137 |
+
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
138 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
139 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
140 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
141 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
142 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
143 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
144 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
145 |
+
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
146 |
+
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
147 |
+
Tqj/ZA1k
|
148 |
+
-----END CERTIFICATE-----
|
149 |
+
|
150 |
+
Verisign Class 1 Public Primary Certification Authority - G2
|
151 |
+
============================================================
|
152 |
+
-----BEGIN CERTIFICATE-----
|
153 |
+
MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
154 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
155 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
156 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
157 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
158 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
159 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
160 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
161 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
|
162 |
+
k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
|
163 |
+
WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
|
164 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
|
165 |
+
XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
|
166 |
+
lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
|
167 |
+
-----END CERTIFICATE-----
|
168 |
+
|
169 |
+
Verisign Class 2 Public Primary Certification Authority - G2
|
170 |
+
============================================================
|
171 |
+
-----BEGIN CERTIFICATE-----
|
172 |
+
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
|
173 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
174 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
175 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
176 |
+
c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
|
177 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
178 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
179 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
180 |
+
c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
|
181 |
+
nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
|
182 |
+
wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
|
183 |
+
ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
|
184 |
+
1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
|
185 |
+
LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
|
186 |
+
-----END CERTIFICATE-----
|
187 |
+
|
188 |
+
Verisign Class 3 Public Primary Certification Authority - G2
|
189 |
+
============================================================
|
190 |
+
-----BEGIN CERTIFICATE-----
|
191 |
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
192 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
193 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
194 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
195 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
196 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
197 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
198 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
199 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
200 |
+
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
201 |
+
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
202 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
203 |
+
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
204 |
+
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
205 |
+
-----END CERTIFICATE-----
|
206 |
+
|
207 |
+
GlobalSign Root CA
|
208 |
+
==================
|
209 |
+
-----BEGIN CERTIFICATE-----
|
210 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
211 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
212 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
213 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
214 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
215 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
216 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
217 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
218 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
219 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
220 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
221 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
222 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
223 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
224 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
225 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
226 |
+
-----END CERTIFICATE-----
|
227 |
+
|
228 |
+
GlobalSign Root CA - R2
|
229 |
+
=======================
|
230 |
+
-----BEGIN CERTIFICATE-----
|
231 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
232 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
233 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
234 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
235 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
236 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
237 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
238 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
239 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
240 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
241 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
242 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
243 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
244 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
245 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
246 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
247 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
248 |
+
-----END CERTIFICATE-----
|
249 |
+
|
250 |
+
ValiCert Class 1 VA
|
251 |
+
===================
|
252 |
+
-----BEGIN CERTIFICATE-----
|
253 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
254 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
255 |
+
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
256 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
257 |
+
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
258 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
259 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
260 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
261 |
+
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
262 |
+
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
263 |
+
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
264 |
+
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
265 |
+
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
266 |
+
Orf1LXLI
|
267 |
+
-----END CERTIFICATE-----
|
268 |
+
|
269 |
+
ValiCert Class 2 VA
|
270 |
+
===================
|
271 |
+
-----BEGIN CERTIFICATE-----
|
272 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
273 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
274 |
+
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
275 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
276 |
+
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
277 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
278 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
279 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
280 |
+
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
281 |
+
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
282 |
+
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
283 |
+
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
284 |
+
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
285 |
+
W9ViH0Pd
|
286 |
+
-----END CERTIFICATE-----
|
287 |
+
|
288 |
+
RSA Root Certificate 1
|
289 |
+
======================
|
290 |
+
-----BEGIN CERTIFICATE-----
|
291 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
292 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
293 |
+
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
294 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
295 |
+
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
296 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
297 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
298 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
299 |
+
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
300 |
+
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
301 |
+
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
302 |
+
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
303 |
+
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
304 |
+
on+jjBXu
|
305 |
+
-----END CERTIFICATE-----
|
306 |
+
|
307 |
+
Verisign Class 1 Public Primary Certification Authority - G3
|
308 |
+
============================================================
|
309 |
+
-----BEGIN CERTIFICATE-----
|
310 |
+
MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
311 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
312 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
313 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
314 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
315 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
316 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
317 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
|
318 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
319 |
+
ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
|
320 |
+
bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
|
321 |
+
rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
|
322 |
+
Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
|
323 |
+
FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
324 |
+
q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
|
325 |
+
y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
|
326 |
+
ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
|
327 |
+
a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
|
328 |
+
D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
|
329 |
+
-----END CERTIFICATE-----
|
330 |
+
|
331 |
+
Verisign Class 2 Public Primary Certification Authority - G3
|
332 |
+
============================================================
|
333 |
+
-----BEGIN CERTIFICATE-----
|
334 |
+
MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
|
335 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
|
336 |
+
azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
|
337 |
+
b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
|
338 |
+
aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
|
339 |
+
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
340 |
+
c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
341 |
+
aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
|
342 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
343 |
+
AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
|
344 |
+
tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
|
345 |
+
C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
|
346 |
+
0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
|
347 |
+
Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
|
348 |
+
JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
|
349 |
+
0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
|
350 |
+
sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
|
351 |
+
JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
|
352 |
+
GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
|
353 |
+
-----END CERTIFICATE-----
|
354 |
+
|
355 |
+
Verisign Class 3 Public Primary Certification Authority - G3
|
356 |
+
============================================================
|
357 |
+
-----BEGIN CERTIFICATE-----
|
358 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
359 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
360 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
361 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
362 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
363 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
364 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
365 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
366 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
367 |
+
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
368 |
+
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
369 |
+
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
370 |
+
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
371 |
+
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
372 |
+
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
373 |
+
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
374 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
375 |
+
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
376 |
+
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
377 |
+
-----END CERTIFICATE-----
|
378 |
+
|
379 |
+
Verisign Class 4 Public Primary Certification Authority - G3
|
380 |
+
============================================================
|
381 |
+
-----BEGIN CERTIFICATE-----
|
382 |
+
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
383 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
384 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
385 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
386 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
387 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
388 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
389 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
390 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
391 |
+
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
392 |
+
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
393 |
+
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
394 |
+
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
395 |
+
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
396 |
+
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
397 |
+
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
398 |
+
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
399 |
+
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
400 |
+
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
401 |
+
-----END CERTIFICATE-----
|
402 |
+
|
403 |
+
Entrust.net Secure Server CA
|
404 |
+
============================
|
405 |
+
-----BEGIN CERTIFICATE-----
|
406 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
407 |
+
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
408 |
+
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
409 |
+
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
410 |
+
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
411 |
+
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
412 |
+
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
413 |
+
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
414 |
+
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
415 |
+
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
416 |
+
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
417 |
+
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
418 |
+
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
419 |
+
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
420 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
421 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
422 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
423 |
+
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
424 |
+
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
425 |
+
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
426 |
+
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
427 |
+
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
428 |
+
-----END CERTIFICATE-----
|
429 |
+
|
430 |
+
Entrust.net Premium 2048 Secure Server CA
|
431 |
+
=========================================
|
432 |
+
-----BEGIN CERTIFICATE-----
|
433 |
+
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
434 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
435 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
436 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
437 |
+
NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
438 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
439 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
440 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
441 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
442 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
443 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
444 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
445 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
|
446 |
+
AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
|
447 |
+
gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
|
448 |
+
AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
449 |
+
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
|
450 |
+
o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
|
451 |
+
2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
|
452 |
+
OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
|
453 |
+
-----END CERTIFICATE-----
|
454 |
+
|
455 |
+
Baltimore CyberTrust Root
|
456 |
+
=========================
|
457 |
+
-----BEGIN CERTIFICATE-----
|
458 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
459 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
460 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
461 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
462 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
463 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
464 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
465 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
466 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
467 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
468 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
469 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
470 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
471 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
472 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
473 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
474 |
+
-----END CERTIFICATE-----
|
475 |
+
|
476 |
+
Equifax Secure Global eBusiness CA
|
477 |
+
==================================
|
478 |
+
-----BEGIN CERTIFICATE-----
|
479 |
+
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
480 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
481 |
+
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
482 |
+
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
483 |
+
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
484 |
+
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
485 |
+
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
486 |
+
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
487 |
+
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
488 |
+
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
489 |
+
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
490 |
+
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
491 |
+
-----END CERTIFICATE-----
|
492 |
+
|
493 |
+
Equifax Secure eBusiness CA 1
|
494 |
+
=============================
|
495 |
+
-----BEGIN CERTIFICATE-----
|
496 |
+
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
497 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
498 |
+
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
499 |
+
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
500 |
+
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
501 |
+
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
502 |
+
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
503 |
+
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
504 |
+
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
505 |
+
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
506 |
+
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
507 |
+
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
508 |
+
-----END CERTIFICATE-----
|
509 |
+
|
510 |
+
Equifax Secure eBusiness CA 2
|
511 |
+
=============================
|
512 |
+
-----BEGIN CERTIFICATE-----
|
513 |
+
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
|
514 |
+
ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
|
515 |
+
MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
516 |
+
DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
|
517 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
|
518 |
+
2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
|
519 |
+
BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
|
520 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
|
521 |
+
JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
|
522 |
+
A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
|
523 |
+
uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
|
524 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
|
525 |
+
jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
|
526 |
+
78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
|
527 |
+
V+GRMOrN
|
528 |
+
-----END CERTIFICATE-----
|
529 |
+
|
530 |
+
AddTrust Low-Value Services Root
|
531 |
+
================================
|
532 |
+
-----BEGIN CERTIFICATE-----
|
533 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
534 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
535 |
+
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
536 |
+
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
537 |
+
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
538 |
+
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
539 |
+
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
540 |
+
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
541 |
+
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
542 |
+
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
543 |
+
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
544 |
+
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
545 |
+
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
546 |
+
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
547 |
+
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
548 |
+
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
549 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
550 |
+
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
551 |
+
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
552 |
+
-----END CERTIFICATE-----
|
553 |
+
|
554 |
+
AddTrust External Root
|
555 |
+
======================
|
556 |
+
-----BEGIN CERTIFICATE-----
|
557 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
558 |
+
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
559 |
+
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
560 |
+
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
561 |
+
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
562 |
+
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
563 |
+
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
564 |
+
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
565 |
+
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
566 |
+
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
567 |
+
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
568 |
+
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
569 |
+
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
570 |
+
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
571 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
572 |
+
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
573 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
574 |
+
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
575 |
+
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
576 |
+
-----END CERTIFICATE-----
|
577 |
+
|
578 |
+
AddTrust Public Services Root
|
579 |
+
=============================
|
580 |
+
-----BEGIN CERTIFICATE-----
|
581 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
582 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
583 |
+
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
584 |
+
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
585 |
+
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
586 |
+
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
587 |
+
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
588 |
+
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
589 |
+
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
590 |
+
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
591 |
+
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
592 |
+
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
593 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
594 |
+
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
595 |
+
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
596 |
+
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
597 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
598 |
+
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
599 |
+
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
600 |
+
-----END CERTIFICATE-----
|
601 |
+
|
602 |
+
AddTrust Qualified Certificates Root
|
603 |
+
====================================
|
604 |
+
-----BEGIN CERTIFICATE-----
|
605 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
606 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
607 |
+
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
608 |
+
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
609 |
+
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
610 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
611 |
+
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
612 |
+
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
613 |
+
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
614 |
+
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
615 |
+
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
616 |
+
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
617 |
+
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
618 |
+
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
619 |
+
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
620 |
+
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
621 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
622 |
+
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
623 |
+
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
624 |
+
-----END CERTIFICATE-----
|
625 |
+
|
626 |
+
Entrust Root Certification Authority
|
627 |
+
====================================
|
628 |
+
-----BEGIN CERTIFICATE-----
|
629 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
630 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
631 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
632 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
633 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
634 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
635 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
636 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
637 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
638 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
639 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
640 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
641 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
642 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
643 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
644 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
645 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
646 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
647 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
648 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
649 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
650 |
+
-----END CERTIFICATE-----
|
651 |
+
|
652 |
+
RSA Security 2048 v3
|
653 |
+
====================
|
654 |
+
-----BEGIN CERTIFICATE-----
|
655 |
+
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
656 |
+
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
657 |
+
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
658 |
+
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
659 |
+
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
660 |
+
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
661 |
+
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
662 |
+
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
663 |
+
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
664 |
+
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
665 |
+
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
666 |
+
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
667 |
+
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
668 |
+
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
669 |
+
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
670 |
+
pKnXwiJPZ9d37CAFYd4=
|
671 |
+
-----END CERTIFICATE-----
|
672 |
+
|
673 |
+
GeoTrust Global CA
|
674 |
+
==================
|
675 |
+
-----BEGIN CERTIFICATE-----
|
676 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
677 |
+
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
678 |
+
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
679 |
+
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
680 |
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
681 |
+
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
682 |
+
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
683 |
+
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
684 |
+
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
685 |
+
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
686 |
+
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
687 |
+
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
688 |
+
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
689 |
+
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
690 |
+
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
691 |
+
Mw==
|
692 |
+
-----END CERTIFICATE-----
|
693 |
+
|
694 |
+
GeoTrust Global CA 2
|
695 |
+
====================
|
696 |
+
-----BEGIN CERTIFICATE-----
|
697 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
698 |
+
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
699 |
+
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
700 |
+
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
701 |
+
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
702 |
+
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
703 |
+
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
704 |
+
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
705 |
+
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
706 |
+
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
707 |
+
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
708 |
+
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
709 |
+
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
710 |
+
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
711 |
+
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
712 |
+
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
713 |
+
-----END CERTIFICATE-----
|
714 |
+
|
715 |
+
GeoTrust Universal CA
|
716 |
+
=====================
|
717 |
+
-----BEGIN CERTIFICATE-----
|
718 |
+
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
|
742 |
+
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
743 |
+
-----END CERTIFICATE-----
|
744 |
+
|
745 |
+
GeoTrust Universal CA 2
|
746 |
+
=======================
|
747 |
+
-----BEGIN CERTIFICATE-----
|
748 |
+
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
|
772 |
+
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
773 |
+
-----END CERTIFICATE-----
|
774 |
+
|
775 |
+
UTN-USER First-Network Applications
|
776 |
+
===================================
|
777 |
+
-----BEGIN CERTIFICATE-----
|
778 |
+
MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
|
779 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
780 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
|
781 |
+
BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
|
782 |
+
WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
|
783 |
+
YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
784 |
+
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
|
785 |
+
cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
|
786 |
+
mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
|
787 |
+
DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
|
788 |
+
Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
|
789 |
+
P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
|
790 |
+
j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
|
791 |
+
HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
|
792 |
+
cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
|
793 |
+
CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
|
794 |
+
IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
|
795 |
+
RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
|
796 |
+
xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
|
797 |
+
DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
|
798 |
+
-----END CERTIFICATE-----
|
799 |
+
|
800 |
+
America Online Root Certification Authority 1
|
801 |
+
=============================================
|
802 |
+
-----BEGIN CERTIFICATE-----
|
803 |
+
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
804 |
+
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
805 |
+
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
806 |
+
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
807 |
+
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
808 |
+
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
809 |
+
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
810 |
+
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
811 |
+
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
812 |
+
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
813 |
+
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
814 |
+
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
815 |
+
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
816 |
+
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
817 |
+
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
818 |
+
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
819 |
+
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
820 |
+
-----END CERTIFICATE-----
|
821 |
+
|
822 |
+
America Online Root Certification Authority 2
|
823 |
+
=============================================
|
824 |
+
-----BEGIN CERTIFICATE-----
|
825 |
+
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
|
850 |
+
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
851 |
+
-----END CERTIFICATE-----
|
852 |
+
|
853 |
+
Visa eCommerce Root
|
854 |
+
===================
|
855 |
+
-----BEGIN CERTIFICATE-----
|
856 |
+
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
857 |
+
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
858 |
+
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
859 |
+
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
860 |
+
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
861 |
+
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
862 |
+
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
863 |
+
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
864 |
+
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
865 |
+
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
866 |
+
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
867 |
+
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
868 |
+
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
869 |
+
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
870 |
+
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
871 |
+
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
872 |
+
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
873 |
+
-----END CERTIFICATE-----
|
874 |
+
|
875 |
+
Certum Root CA
|
876 |
+
==============
|
877 |
+
-----BEGIN CERTIFICATE-----
|
878 |
+
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
879 |
+
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
880 |
+
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
881 |
+
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
882 |
+
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
883 |
+
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
884 |
+
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
885 |
+
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
886 |
+
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
887 |
+
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
888 |
+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
889 |
+
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
890 |
+
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
891 |
+
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
892 |
+
-----END CERTIFICATE-----
|
893 |
+
|
894 |
+
Comodo AAA Services root
|
895 |
+
========================
|
896 |
+
-----BEGIN CERTIFICATE-----
|
897 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
898 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
899 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
900 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
901 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
902 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
903 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
904 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
905 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
906 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
907 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
908 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
909 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
910 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
911 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
912 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
913 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
914 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
915 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
916 |
+
-----END CERTIFICATE-----
|
917 |
+
|
918 |
+
Comodo Secure Services root
|
919 |
+
===========================
|
920 |
+
-----BEGIN CERTIFICATE-----
|
921 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
922 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
923 |
+
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
924 |
+
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
925 |
+
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
926 |
+
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
927 |
+
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
928 |
+
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
929 |
+
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
930 |
+
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
931 |
+
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
932 |
+
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
933 |
+
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
934 |
+
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
935 |
+
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
936 |
+
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
937 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
938 |
+
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
939 |
+
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
940 |
+
RR3B7Hzs/Sk=
|
941 |
+
-----END CERTIFICATE-----
|
942 |
+
|
943 |
+
Comodo Trusted Services root
|
944 |
+
============================
|
945 |
+
-----BEGIN CERTIFICATE-----
|
946 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
947 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
948 |
+
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
949 |
+
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
950 |
+
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
951 |
+
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
952 |
+
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
953 |
+
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
954 |
+
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
955 |
+
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
956 |
+
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
957 |
+
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
958 |
+
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
959 |
+
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
960 |
+
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
961 |
+
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
962 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
963 |
+
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
964 |
+
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
965 |
+
9y5Xt5hwXsjEeLBi
|
966 |
+
-----END CERTIFICATE-----
|
967 |
+
|
968 |
+
QuoVadis Root CA
|
969 |
+
================
|
970 |
+
-----BEGIN CERTIFICATE-----
|
971 |
+
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
972 |
+
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
973 |
+
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
974 |
+
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
975 |
+
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
976 |
+
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
977 |
+
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
978 |
+
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
979 |
+
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
980 |
+
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
981 |
+
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
982 |
+
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
983 |
+
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
984 |
+
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
985 |
+
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
986 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
987 |
+
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
988 |
+
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
989 |
+
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
990 |
+
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
991 |
+
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
992 |
+
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
993 |
+
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
994 |
+
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
995 |
+
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
996 |
+
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
997 |
+
5nrQNiOKSnQ2+Q==
|
998 |
+
-----END CERTIFICATE-----
|
999 |
+
|
1000 |
+
QuoVadis Root CA 2
|
1001 |
+
==================
|
1002 |
+
-----BEGIN CERTIFICATE-----
|
1003 |
+
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
|
1029 |
+
-----END CERTIFICATE-----
|
1030 |
+
|
1031 |
+
QuoVadis Root CA 3
|
1032 |
+
==================
|
1033 |
+
-----BEGIN CERTIFICATE-----
|
1034 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1035 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
1036 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1037 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1038 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
1039 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
1040 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
1041 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
1042 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
1043 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
1044 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
1045 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
1046 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
1047 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
1048 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
1049 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
1050 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
1051 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
1052 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
1053 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
1054 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
1055 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
1056 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
1057 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
1058 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
1059 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
1060 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
1061 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
1062 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
1063 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
1064 |
+
-----END CERTIFICATE-----
|
1065 |
+
|
1066 |
+
Security Communication Root CA
|
1067 |
+
==============================
|
1068 |
+
-----BEGIN CERTIFICATE-----
|
1069 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1070 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1071 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1072 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1073 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
1074 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
1075 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
1076 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
1077 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
1078 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
1079 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
1080 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
1081 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
1082 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
1083 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
1084 |
+
FL39vmwLAw==
|
1085 |
+
-----END CERTIFICATE-----
|
1086 |
+
|
1087 |
+
Sonera Class 1 Root CA
|
1088 |
+
======================
|
1089 |
+
-----BEGIN CERTIFICATE-----
|
1090 |
+
MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1091 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
|
1092 |
+
NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1093 |
+
IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
|
1094 |
+
7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
|
1095 |
+
EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
|
1096 |
+
0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
|
1097 |
+
2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
|
1098 |
+
HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
|
1099 |
+
iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
|
1100 |
+
28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
|
1101 |
+
yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
|
1102 |
+
vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
|
1103 |
+
qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
|
1104 |
+
IRlXvVWa
|
1105 |
+
-----END CERTIFICATE-----
|
1106 |
+
|
1107 |
+
Sonera Class 2 Root CA
|
1108 |
+
======================
|
1109 |
+
-----BEGIN CERTIFICATE-----
|
1110 |
+
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1111 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
1112 |
+
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1113 |
+
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
1114 |
+
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
1115 |
+
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
1116 |
+
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
1117 |
+
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
1118 |
+
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
1119 |
+
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
1120 |
+
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
1121 |
+
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
1122 |
+
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
1123 |
+
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
1124 |
+
llpwrN9M
|
1125 |
+
-----END CERTIFICATE-----
|
1126 |
+
|
1127 |
+
Staat der Nederlanden Root CA
|
1128 |
+
=============================
|
1129 |
+
-----BEGIN CERTIFICATE-----
|
1130 |
+
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
1131 |
+
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
1132 |
+
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
1133 |
+
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
1134 |
+
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
1135 |
+
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
1136 |
+
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
1137 |
+
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
1138 |
+
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
1139 |
+
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
1140 |
+
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
1141 |
+
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
1142 |
+
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
1143 |
+
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
1144 |
+
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
1145 |
+
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
1146 |
+
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
1147 |
+
-----END CERTIFICATE-----
|
1148 |
+
|
1149 |
+
TDC Internet Root CA
|
1150 |
+
====================
|
1151 |
+
-----BEGIN CERTIFICATE-----
|
1152 |
+
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
1153 |
+
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
1154 |
+
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
1155 |
+
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1156 |
+
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
1157 |
+
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
1158 |
+
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
1159 |
+
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
1160 |
+
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
1161 |
+
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
1162 |
+
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
1163 |
+
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
1164 |
+
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
1165 |
+
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
1166 |
+
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
1167 |
+
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
1168 |
+
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
1169 |
+
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
1170 |
+
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
1171 |
+
-----END CERTIFICATE-----
|
1172 |
+
|
1173 |
+
TDC OCES Root CA
|
1174 |
+
================
|
1175 |
+
-----BEGIN CERTIFICATE-----
|
1176 |
+
MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
|
1177 |
+
ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
|
1178 |
+
MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
|
1179 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
|
1180 |
+
nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
|
1181 |
+
zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
|
1182 |
+
iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
|
1183 |
+
dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
|
1184 |
+
3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
|
1185 |
+
5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
|
1186 |
+
ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
|
1187 |
+
cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
|
1188 |
+
Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
|
1189 |
+
LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
|
1190 |
+
MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
|
1191 |
+
aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
|
1192 |
+
MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
|
1193 |
+
+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
|
1194 |
+
NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
|
1195 |
+
A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
|
1196 |
+
A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
|
1197 |
+
AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
|
1198 |
+
AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
|
1199 |
+
-----END CERTIFICATE-----
|
1200 |
+
|
1201 |
+
UTN DATACorp SGC Root CA
|
1202 |
+
========================
|
1203 |
+
-----BEGIN CERTIFICATE-----
|
1204 |
+
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
1205 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1206 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
1207 |
+
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
1208 |
+
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
1209 |
+
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
1210 |
+
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1211 |
+
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
1212 |
+
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
1213 |
+
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
1214 |
+
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
1215 |
+
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
1216 |
+
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
1217 |
+
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
1218 |
+
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
1219 |
+
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
1220 |
+
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
1221 |
+
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
1222 |
+
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
1223 |
+
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
1224 |
+
-----END CERTIFICATE-----
|
1225 |
+
|
1226 |
+
UTN USERFirst Email Root CA
|
1227 |
+
===========================
|
1228 |
+
-----BEGIN CERTIFICATE-----
|
1229 |
+
MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
1230 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1231 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
|
1232 |
+
BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
|
1233 |
+
OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
|
1234 |
+
FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
|
1235 |
+
ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
|
1236 |
+
dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1237 |
+
MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
|
1238 |
+
B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
|
1239 |
+
om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
|
1240 |
+
TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
|
1241 |
+
yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
|
1242 |
+
AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
|
1243 |
+
HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
|
1244 |
+
bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
|
1245 |
+
AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
|
1246 |
+
xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
|
1247 |
+
5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
|
1248 |
+
NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
|
1249 |
+
w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
|
1250 |
+
-----END CERTIFICATE-----
|
1251 |
+
|
1252 |
+
UTN USERFirst Hardware Root CA
|
1253 |
+
==============================
|
1254 |
+
-----BEGIN CERTIFICATE-----
|
1255 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
1256 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1257 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
1258 |
+
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
1259 |
+
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
1260 |
+
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
1261 |
+
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
1262 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
1263 |
+
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
1264 |
+
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
1265 |
+
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
1266 |
+
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
1267 |
+
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
1268 |
+
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
1269 |
+
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
1270 |
+
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
1271 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
1272 |
+
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
1273 |
+
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
1274 |
+
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
1275 |
+
nfhmqA==
|
1276 |
+
-----END CERTIFICATE-----
|
1277 |
+
|
1278 |
+
UTN USERFirst Object Root CA
|
1279 |
+
============================
|
1280 |
+
-----BEGIN CERTIFICATE-----
|
1281 |
+
MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
|
1282 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1283 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
|
1284 |
+
BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
|
1285 |
+
NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
|
1286 |
+
HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
|
1287 |
+
dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
|
1288 |
+
BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
|
1289 |
+
loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
|
1290 |
+
w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
|
1291 |
+
lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
|
1292 |
+
RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
|
1293 |
+
BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
|
1294 |
+
ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
|
1295 |
+
c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
|
1296 |
+
DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
|
1297 |
+
NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
|
1298 |
+
PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
|
1299 |
+
qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
|
1300 |
+
hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
|
1301 |
+
-----END CERTIFICATE-----
|
1302 |
+
|
1303 |
+
Camerfirma Chambers of Commerce Root
|
1304 |
+
====================================
|
1305 |
+
-----BEGIN CERTIFICATE-----
|
1306 |
+
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1307 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1308 |
+
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
1309 |
+
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
1310 |
+
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
1311 |
+
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
1312 |
+
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
1313 |
+
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
1314 |
+
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
1315 |
+
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
1316 |
+
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
1317 |
+
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
1318 |
+
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
1319 |
+
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
1320 |
+
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
1321 |
+
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
1322 |
+
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
1323 |
+
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
1324 |
+
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
1325 |
+
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
1326 |
+
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
1327 |
+
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
1328 |
+
-----END CERTIFICATE-----
|
1329 |
+
|
1330 |
+
Camerfirma Global Chambersign Root
|
1331 |
+
==================================
|
1332 |
+
-----BEGIN CERTIFICATE-----
|
1333 |
+
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1334 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1335 |
+
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
1336 |
+
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
1337 |
+
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
1338 |
+
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
1339 |
+
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
1340 |
+
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
1341 |
+
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
1342 |
+
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
1343 |
+
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
1344 |
+
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
1345 |
+
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
1346 |
+
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
1347 |
+
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
1348 |
+
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
1349 |
+
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
1350 |
+
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
1351 |
+
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
1352 |
+
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
1353 |
+
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
1354 |
+
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
1355 |
+
-----END CERTIFICATE-----
|
1356 |
+
|
1357 |
+
NetLock Qualified (Class QA) Root
|
1358 |
+
=================================
|
1359 |
+
-----BEGIN CERTIFICATE-----
|
1360 |
+
MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1361 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1362 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
|
1363 |
+
eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
|
1364 |
+
bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
|
1365 |
+
MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
|
1366 |
+
LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
|
1367 |
+
dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
|
1368 |
+
aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
|
1369 |
+
CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
|
1370 |
+
8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
|
1371 |
+
m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
|
1372 |
+
0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
|
1373 |
+
0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1374 |
+
HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
|
1375 |
+
YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
|
1376 |
+
biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
|
1377 |
+
a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
|
1378 |
+
YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
|
1379 |
+
YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
|
1380 |
+
ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
|
1381 |
+
L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
|
1382 |
+
Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
|
1383 |
+
aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
|
1384 |
+
YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
|
1385 |
+
IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
|
1386 |
+
DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
|
1387 |
+
wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
|
1388 |
+
W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
|
1389 |
+
R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
|
1390 |
+
5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
|
1391 |
+
-----END CERTIFICATE-----
|
1392 |
+
|
1393 |
+
NetLock Notary (Class A) Root
|
1394 |
+
=============================
|
1395 |
+
-----BEGIN CERTIFICATE-----
|
1396 |
+
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
1397 |
+
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1398 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
1399 |
+
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
1400 |
+
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
1401 |
+
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
1402 |
+
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
1403 |
+
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
1404 |
+
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
1405 |
+
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
1406 |
+
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
1407 |
+
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
1408 |
+
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
1409 |
+
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
1410 |
+
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
1411 |
+
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
1412 |
+
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
1413 |
+
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
1414 |
+
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
1415 |
+
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
1416 |
+
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
1417 |
+
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
1418 |
+
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
1419 |
+
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
1420 |
+
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
1421 |
+
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
1422 |
+
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
1423 |
+
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
1424 |
+
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
1425 |
+
8CgHrTwXZoi1/baI
|
1426 |
+
-----END CERTIFICATE-----
|
1427 |
+
|
1428 |
+
NetLock Business (Class B) Root
|
1429 |
+
===============================
|
1430 |
+
-----BEGIN CERTIFICATE-----
|
1431 |
+
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1432 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1433 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
1434 |
+
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
1435 |
+
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
1436 |
+
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
1437 |
+
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1438 |
+
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
1439 |
+
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
1440 |
+
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1441 |
+
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
1442 |
+
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
1443 |
+
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
1444 |
+
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
1445 |
+
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
1446 |
+
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
1447 |
+
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
1448 |
+
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
1449 |
+
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
1450 |
+
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
1451 |
+
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
1452 |
+
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
1453 |
+
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
1454 |
+
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
1455 |
+
-----END CERTIFICATE-----
|
1456 |
+
|
1457 |
+
NetLock Express (Class C) Root
|
1458 |
+
==============================
|
1459 |
+
-----BEGIN CERTIFICATE-----
|
1460 |
+
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1461 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1462 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
1463 |
+
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
1464 |
+
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1465 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
1466 |
+
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
1467 |
+
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
1468 |
+
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
1469 |
+
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
1470 |
+
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
1471 |
+
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
1472 |
+
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
1473 |
+
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
1474 |
+
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
1475 |
+
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
1476 |
+
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
1477 |
+
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
1478 |
+
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
1479 |
+
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
1480 |
+
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
1481 |
+
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
1482 |
+
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
1483 |
+
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
1484 |
+
-----END CERTIFICATE-----
|
1485 |
+
|
1486 |
+
XRamp Global CA Root
|
1487 |
+
====================
|
1488 |
+
-----BEGIN CERTIFICATE-----
|
1489 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
1490 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
1491 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
1492 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
1493 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
1494 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1495 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
1496 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
1497 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
1498 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
1499 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
1500 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1501 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
1502 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
1503 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
1504 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
1505 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
1506 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
1507 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
1508 |
+
-----END CERTIFICATE-----
|
1509 |
+
|
1510 |
+
Go Daddy Class 2 CA
|
1511 |
+
===================
|
1512 |
+
-----BEGIN CERTIFICATE-----
|
1513 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
1514 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
1515 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
1516 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
1517 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
1518 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
1519 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
1520 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
1521 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
1522 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
1523 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
1524 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
1525 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
1526 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
1527 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
1528 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
1529 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
1530 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
1531 |
+
vZ8=
|
1532 |
+
-----END CERTIFICATE-----
|
1533 |
+
|
1534 |
+
Starfield Class 2 CA
|
1535 |
+
====================
|
1536 |
+
-----BEGIN CERTIFICATE-----
|
1537 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
1538 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
1539 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
1540 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
1541 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
1542 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
1543 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
1544 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
1545 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
1546 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
1547 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
1548 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
1549 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
1550 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
1551 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
1552 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
1553 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
1554 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
1555 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
1556 |
+
-----END CERTIFICATE-----
|
1557 |
+
|
1558 |
+
StartCom Certification Authority
|
1559 |
+
================================
|
1560 |
+
-----BEGIN CERTIFICATE-----
|
1561 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
1562 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
1563 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
1564 |
+
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
1565 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
1566 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
1567 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
1568 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
1569 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
1570 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
1571 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
1572 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
1573 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
1574 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
1575 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
1576 |
+
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
1577 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
1578 |
+
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
1579 |
+
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
1580 |
+
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
1581 |
+
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
1582 |
+
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
1583 |
+
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
1584 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
1585 |
+
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
1586 |
+
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
1587 |
+
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
1588 |
+
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
1589 |
+
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
1590 |
+
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
1591 |
+
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
1592 |
+
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
1593 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
1594 |
+
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
1595 |
+
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
1596 |
+
g14=
|
1597 |
+
-----END CERTIFICATE-----
|
1598 |
+
|
1599 |
+
Taiwan GRCA
|
1600 |
+
===========
|
1601 |
+
-----BEGIN CERTIFICATE-----
|
1602 |
+
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
|
1627 |
+
-----END CERTIFICATE-----
|
1628 |
+
|
1629 |
+
Firmaprofesional Root CA
|
1630 |
+
========================
|
1631 |
+
-----BEGIN CERTIFICATE-----
|
1632 |
+
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
1633 |
+
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
1634 |
+
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
1635 |
+
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
1636 |
+
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
1637 |
+
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
1638 |
+
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
1639 |
+
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
1640 |
+
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
1641 |
+
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
1642 |
+
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
1643 |
+
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
1644 |
+
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
1645 |
+
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
1646 |
+
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
1647 |
+
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
1648 |
+
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
1649 |
+
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
1650 |
+
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
1651 |
+
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
1652 |
+
-----END CERTIFICATE-----
|
1653 |
+
|
1654 |
+
Wells Fargo Root CA
|
1655 |
+
===================
|
1656 |
+
-----BEGIN CERTIFICATE-----
|
1657 |
+
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
|
1658 |
+
BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1659 |
+
cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1660 |
+
MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
|
1661 |
+
bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
|
1662 |
+
MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
1663 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
|
1664 |
+
x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
|
1665 |
+
E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
|
1666 |
+
OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
|
1667 |
+
sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
|
1668 |
+
YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
|
1669 |
+
BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
|
1670 |
+
ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
|
1671 |
+
m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
|
1672 |
+
OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
|
1673 |
+
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
|
1674 |
+
tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
|
1675 |
+
-----END CERTIFICATE-----
|
1676 |
+
|
1677 |
+
Swisscom Root CA 1
|
1678 |
+
==================
|
1679 |
+
-----BEGIN CERTIFICATE-----
|
1680 |
+
MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
|
1681 |
+
EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
|
1682 |
+
dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
|
1683 |
+
MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
|
1684 |
+
aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
|
1685 |
+
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
|
1686 |
+
MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
|
1687 |
+
NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
|
1688 |
+
AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
|
1689 |
+
b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
|
1690 |
+
7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
|
1691 |
+
cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
|
1692 |
+
WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
|
1693 |
+
haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
|
1694 |
+
MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
|
1695 |
+
HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
|
1696 |
+
BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
|
1697 |
+
MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
|
1698 |
+
jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
|
1699 |
+
MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
|
1700 |
+
VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
|
1701 |
+
vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
|
1702 |
+
OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
|
1703 |
+
1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
|
1704 |
+
nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
|
1705 |
+
x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
|
1706 |
+
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
1707 |
+
-----END CERTIFICATE-----
|
1708 |
+
|
1709 |
+
DigiCert Assured ID Root CA
|
1710 |
+
===========================
|
1711 |
+
-----BEGIN CERTIFICATE-----
|
1712 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
1713 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
1714 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
1715 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
1716 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
1717 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
1718 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
1719 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
1720 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
1721 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
1722 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
1723 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
1724 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
1725 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
1726 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
1727 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
1728 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
1729 |
+
-----END CERTIFICATE-----
|
1730 |
+
|
1731 |
+
DigiCert Global Root CA
|
1732 |
+
=======================
|
1733 |
+
-----BEGIN CERTIFICATE-----
|
1734 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
1735 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
1736 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
1737 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
1738 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
1739 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
1740 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
1741 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
1742 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
1743 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
1744 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
1745 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
1746 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
1747 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
1748 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
1749 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
1750 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
1751 |
+
-----END CERTIFICATE-----
|
1752 |
+
|
1753 |
+
DigiCert High Assurance EV Root CA
|
1754 |
+
==================================
|
1755 |
+
-----BEGIN CERTIFICATE-----
|
1756 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
1757 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
1758 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
1759 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
1760 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
1761 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
1762 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
1763 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
1764 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
1765 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
1766 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
1767 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
1768 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
1769 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
1770 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
1771 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
1772 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
1773 |
+
-----END CERTIFICATE-----
|
1774 |
+
|
1775 |
+
Certplus Class 2 Primary CA
|
1776 |
+
===========================
|
1777 |
+
-----BEGIN CERTIFICATE-----
|
1778 |
+
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
1779 |
+
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
1780 |
+
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
1781 |
+
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1782 |
+
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
1783 |
+
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
1784 |
+
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
1785 |
+
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
1786 |
+
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
1787 |
+
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
1788 |
+
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
1789 |
+
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
1790 |
+
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
1791 |
+
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
1792 |
+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
1793 |
+
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
1794 |
+
l7+ijrRU
|
1795 |
+
-----END CERTIFICATE-----
|
1796 |
+
|
1797 |
+
DST Root CA X3
|
1798 |
+
==============
|
1799 |
+
-----BEGIN CERTIFICATE-----
|
1800 |
+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
1801 |
+
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
1802 |
+
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
1803 |
+
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
1804 |
+
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
1805 |
+
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
1806 |
+
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
1807 |
+
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
1808 |
+
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
1809 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
1810 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
1811 |
+
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
1812 |
+
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
1813 |
+
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
1814 |
+
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
1815 |
+
-----END CERTIFICATE-----
|
1816 |
+
|
1817 |
+
DST ACES CA X6
|
1818 |
+
==============
|
1819 |
+
-----BEGIN CERTIFICATE-----
|
1820 |
+
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
1821 |
+
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
1822 |
+
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
1823 |
+
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
1824 |
+
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1825 |
+
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
1826 |
+
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
1827 |
+
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
1828 |
+
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
1829 |
+
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
1830 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
1831 |
+
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
1832 |
+
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
1833 |
+
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
1834 |
+
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
1835 |
+
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
1836 |
+
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
1837 |
+
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
1838 |
+
oKfN5XozNmr6mis=
|
1839 |
+
-----END CERTIFICATE-----
|
1840 |
+
|
1841 |
+
TURKTRUST Certificate Services Provider Root 1
|
1842 |
+
==============================================
|
1843 |
+
-----BEGIN CERTIFICATE-----
|
1844 |
+
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1845 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
1846 |
+
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
1847 |
+
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
1848 |
+
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
1849 |
+
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
1850 |
+
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
1851 |
+
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1852 |
+
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
1853 |
+
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
1854 |
+
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
1855 |
+
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
1856 |
+
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
1857 |
+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
1858 |
+
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
1859 |
+
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
1860 |
+
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
1861 |
+
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
1862 |
+
-----END CERTIFICATE-----
|
1863 |
+
|
1864 |
+
TURKTRUST Certificate Services Provider Root 2
|
1865 |
+
==============================================
|
1866 |
+
-----BEGIN CERTIFICATE-----
|
1867 |
+
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1868 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
1869 |
+
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
1870 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
1871 |
+
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
1872 |
+
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
1873 |
+
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
1874 |
+
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
1875 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
1876 |
+
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
1877 |
+
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
1878 |
+
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
1879 |
+
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
1880 |
+
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
1881 |
+
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
1882 |
+
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
1883 |
+
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
1884 |
+
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
1885 |
+
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
1886 |
+
UrbnBEI=
|
1887 |
+
-----END CERTIFICATE-----
|
1888 |
+
|
1889 |
+
SwissSign Platinum CA - G2
|
1890 |
+
==========================
|
1891 |
+
-----BEGIN CERTIFICATE-----
|
1892 |
+
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
|
1918 |
+
-----END CERTIFICATE-----
|
1919 |
+
|
1920 |
+
SwissSign Gold CA - G2
|
1921 |
+
======================
|
1922 |
+
-----BEGIN CERTIFICATE-----
|
1923 |
+
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
|
1949 |
+
-----END CERTIFICATE-----
|
1950 |
+
|
1951 |
+
SwissSign Silver CA - G2
|
1952 |
+
========================
|
1953 |
+
-----BEGIN CERTIFICATE-----
|
1954 |
+
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
|
1980 |
+
-----END CERTIFICATE-----
|
1981 |
+
|
1982 |
+
GeoTrust Primary Certification Authority
|
1983 |
+
========================================
|
1984 |
+
-----BEGIN CERTIFICATE-----
|
1985 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
1986 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
1987 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
1988 |
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
1989 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1990 |
+
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
1991 |
+
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
1992 |
+
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
1993 |
+
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
1994 |
+
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1995 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
1996 |
+
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
1997 |
+
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
1998 |
+
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
1999 |
+
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
2000 |
+
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
2001 |
+
-----END CERTIFICATE-----
|
2002 |
+
|
2003 |
+
thawte Primary Root CA
|
2004 |
+
======================
|
2005 |
+
-----BEGIN CERTIFICATE-----
|
2006 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
2007 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2008 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2009 |
+
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
2010 |
+
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
2011 |
+
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
2012 |
+
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
2013 |
+
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
2014 |
+
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
2015 |
+
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
2016 |
+
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
2017 |
+
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
2018 |
+
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
2019 |
+
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
2020 |
+
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
2021 |
+
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
2022 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
2023 |
+
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
2024 |
+
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
2025 |
+
-----END CERTIFICATE-----
|
2026 |
+
|
2027 |
+
VeriSign Class 3 Public Primary Certification Authority - G5
|
2028 |
+
============================================================
|
2029 |
+
-----BEGIN CERTIFICATE-----
|
2030 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
2031 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2032 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2033 |
+
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
2034 |
+
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
2035 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
2036 |
+
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
2037 |
+
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
2038 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2039 |
+
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
2040 |
+
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
2041 |
+
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
2042 |
+
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
2043 |
+
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
2044 |
+
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
2045 |
+
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
2046 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
2047 |
+
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
2048 |
+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
2049 |
+
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
2050 |
+
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
2051 |
+
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
2052 |
+
-----END CERTIFICATE-----
|
2053 |
+
|
2054 |
+
SecureTrust CA
|
2055 |
+
==============
|
2056 |
+
-----BEGIN CERTIFICATE-----
|
2057 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
2058 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
2059 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
2060 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
2061 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
2062 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
2063 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
2064 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
2065 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
2066 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
2067 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
2068 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2069 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
2070 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
2071 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
2072 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
2073 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
2074 |
+
-----END CERTIFICATE-----
|
2075 |
+
|
2076 |
+
Secure Global CA
|
2077 |
+
================
|
2078 |
+
-----BEGIN CERTIFICATE-----
|
2079 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
2080 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
2081 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
2082 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
2083 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
2084 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
2085 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
2086 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
2087 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
2088 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
2089 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
2090 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
2091 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
2092 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
2093 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
2094 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
2095 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
2096 |
+
-----END CERTIFICATE-----
|
2097 |
+
|
2098 |
+
COMODO Certification Authority
|
2099 |
+
==============================
|
2100 |
+
-----BEGIN CERTIFICATE-----
|
2101 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
2102 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
2103 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
2104 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
2105 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
2106 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
2107 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
2108 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
2109 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
2110 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
2111 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
2112 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
2113 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
2114 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
2115 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
2116 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
2117 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
2118 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
2119 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
2120 |
+
-----END CERTIFICATE-----
|
2121 |
+
|
2122 |
+
Network Solutions Certificate Authority
|
2123 |
+
=======================================
|
2124 |
+
-----BEGIN CERTIFICATE-----
|
2125 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
2126 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
2127 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
2128 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
2129 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2130 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
2131 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
2132 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
2133 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
2134 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
2135 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
2136 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
2137 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
2138 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
2139 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
2140 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
2141 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
2142 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
2143 |
+
-----END CERTIFICATE-----
|
2144 |
+
|
2145 |
+
WellsSecure Public Root Certificate Authority
|
2146 |
+
=============================================
|
2147 |
+
-----BEGIN CERTIFICATE-----
|
2148 |
+
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
2149 |
+
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
2150 |
+
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
2151 |
+
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
2152 |
+
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
2153 |
+
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2154 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
2155 |
+
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
2156 |
+
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
2157 |
+
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
2158 |
+
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
2159 |
+
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
2160 |
+
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
2161 |
+
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
2162 |
+
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
2163 |
+
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
2164 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
2165 |
+
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
2166 |
+
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
2167 |
+
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
2168 |
+
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
2169 |
+
tylv2G0xffX8oRAHh84vWdw+WNs=
|
2170 |
+
-----END CERTIFICATE-----
|
2171 |
+
|
2172 |
+
COMODO ECC Certification Authority
|
2173 |
+
==================================
|
2174 |
+
-----BEGIN CERTIFICATE-----
|
2175 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
2176 |
+
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
2177 |
+
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
2178 |
+
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
2179 |
+
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
2180 |
+
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
2181 |
+
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
2182 |
+
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
2183 |
+
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
2184 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
2185 |
+
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
2186 |
+
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
2187 |
+
-----END CERTIFICATE-----
|
2188 |
+
|
2189 |
+
IGC/A
|
2190 |
+
=====
|
2191 |
+
-----BEGIN CERTIFICATE-----
|
2192 |
+
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
|
2193 |
+
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
|
2194 |
+
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
|
2195 |
+
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
|
2196 |
+
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
|
2197 |
+
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
|
2198 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
|
2199 |
+
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
|
2200 |
+
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
|
2201 |
+
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
|
2202 |
+
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
|
2203 |
+
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
|
2204 |
+
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
|
2205 |
+
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
|
2206 |
+
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
|
2207 |
+
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
|
2208 |
+
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
|
2209 |
+
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
|
2210 |
+
0mBWWg==
|
2211 |
+
-----END CERTIFICATE-----
|
2212 |
+
|
2213 |
+
Security Communication EV RootCA1
|
2214 |
+
=================================
|
2215 |
+
-----BEGIN CERTIFICATE-----
|
2216 |
+
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
2217 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
|
2218 |
+
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
|
2219 |
+
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
|
2220 |
+
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2221 |
+
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
|
2222 |
+
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
|
2223 |
+
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
|
2224 |
+
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
|
2225 |
+
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
|
2226 |
+
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
2227 |
+
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
|
2228 |
+
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
|
2229 |
+
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
|
2230 |
+
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
|
2231 |
+
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
|
2232 |
+
-----END CERTIFICATE-----
|
2233 |
+
|
2234 |
+
OISTE WISeKey Global Root GA CA
|
2235 |
+
===============================
|
2236 |
+
-----BEGIN CERTIFICATE-----
|
2237 |
+
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
|
2238 |
+
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
|
2239 |
+
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
|
2240 |
+
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
|
2241 |
+
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
|
2242 |
+
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
|
2243 |
+
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
|
2244 |
+
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
|
2245 |
+
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
|
2246 |
+
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
|
2247 |
+
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
|
2248 |
+
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
|
2249 |
+
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2250 |
+
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
|
2251 |
+
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
|
2252 |
+
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
|
2253 |
+
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
2254 |
+
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
2255 |
+
-----END CERTIFICATE-----
|
2256 |
+
|
2257 |
+
S-TRUST Authentication and Encryption Root CA 2005 PN
|
2258 |
+
=====================================================
|
2259 |
+
-----BEGIN CERTIFICATE-----
|
2260 |
+
MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
2261 |
+
BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
|
2262 |
+
cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
|
2263 |
+
LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
|
2264 |
+
NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
|
2265 |
+
ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
|
2266 |
+
aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
|
2267 |
+
b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2268 |
+
MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
|
2269 |
+
4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
|
2270 |
+
g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
|
2271 |
+
eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
|
2272 |
+
KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
|
2273 |
+
/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
|
2274 |
+
bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
|
2275 |
+
D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
|
2276 |
+
pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
|
2277 |
+
P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
|
2278 |
+
nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
|
2279 |
+
F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
|
2280 |
+
Hz2eBIPdltkdOpQ=
|
2281 |
+
-----END CERTIFICATE-----
|
2282 |
+
|
2283 |
+
Microsec e-Szigno Root CA
|
2284 |
+
=========================
|
2285 |
+
-----BEGIN CERTIFICATE-----
|
2286 |
+
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
|
2287 |
+
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
|
2288 |
+
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
|
2289 |
+
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
|
2290 |
+
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
|
2291 |
+
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
2292 |
+
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
|
2293 |
+
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
|
2294 |
+
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
|
2295 |
+
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
|
2296 |
+
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
|
2297 |
+
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
|
2298 |
+
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
|
2299 |
+
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
|
2300 |
+
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
|
2301 |
+
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
2302 |
+
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
|
2303 |
+
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
|
2304 |
+
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
|
2305 |
+
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
|
2306 |
+
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
|
2307 |
+
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
|
2308 |
+
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
|
2309 |
+
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
|
2310 |
+
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
|
2311 |
+
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
|
2312 |
+
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
|
2313 |
+
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
|
2314 |
+
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
|
2315 |
+
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
|
2316 |
+
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
|
2317 |
+
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
2318 |
+
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
|
2319 |
+
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
|
2320 |
+
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
2321 |
+
-----END CERTIFICATE-----
|
2322 |
+
|
2323 |
+
Certigna
|
2324 |
+
========
|
2325 |
+
-----BEGIN CERTIFICATE-----
|
2326 |
+
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
2327 |
+
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
2328 |
+
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
2329 |
+
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
2330 |
+
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
2331 |
+
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
2332 |
+
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
2333 |
+
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
2334 |
+
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
2335 |
+
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
2336 |
+
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
2337 |
+
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
2338 |
+
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
2339 |
+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
2340 |
+
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
2341 |
+
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
2342 |
+
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
2343 |
+
-----END CERTIFICATE-----
|
2344 |
+
|
2345 |
+
AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
|
2346 |
+
======================================
|
2347 |
+
-----BEGIN CERTIFICATE-----
|
2348 |
+
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
2349 |
+
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
2350 |
+
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
2351 |
+
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
2352 |
+
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
2353 |
+
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
2354 |
+
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
2355 |
+
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
2356 |
+
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
2357 |
+
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
2358 |
+
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
2359 |
+
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
2360 |
+
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
2361 |
+
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
2362 |
+
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
2363 |
+
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
2364 |
+
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
2365 |
+
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
2366 |
+
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
2367 |
+
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
2368 |
+
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
2369 |
+
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
2370 |
+
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
2371 |
+
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
2372 |
+
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
2373 |
+
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
2374 |
+
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
2375 |
+
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
2376 |
+
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
2377 |
+
-----END CERTIFICATE-----
|
2378 |
+
|
2379 |
+
TC TrustCenter Class 2 CA II
|
2380 |
+
============================
|
2381 |
+
-----BEGIN CERTIFICATE-----
|
2382 |
+
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2383 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2384 |
+
IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
|
2385 |
+
MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2386 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
|
2387 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2388 |
+
AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
|
2389 |
+
IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
|
2390 |
+
xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
|
2391 |
+
Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
|
2392 |
+
SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2393 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
|
2394 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2395 |
+
Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2396 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2397 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2398 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
|
2399 |
+
dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
|
2400 |
+
KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
|
2401 |
+
TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
|
2402 |
+
JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
|
2403 |
+
vQ==
|
2404 |
+
-----END CERTIFICATE-----
|
2405 |
+
|
2406 |
+
TC TrustCenter Class 3 CA II
|
2407 |
+
============================
|
2408 |
+
-----BEGIN CERTIFICATE-----
|
2409 |
+
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2410 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2411 |
+
IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
|
2412 |
+
MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2413 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
|
2414 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2415 |
+
AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
|
2416 |
+
yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
|
2417 |
+
6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
|
2418 |
+
uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
|
2419 |
+
2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2420 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
|
2421 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2422 |
+
Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2423 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2424 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2425 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
|
2426 |
+
O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
|
2427 |
+
yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
|
2428 |
+
IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
|
2429 |
+
092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
|
2430 |
+
5A==
|
2431 |
+
-----END CERTIFICATE-----
|
2432 |
+
|
2433 |
+
TC TrustCenter Universal CA I
|
2434 |
+
=============================
|
2435 |
+
-----BEGIN CERTIFICATE-----
|
2436 |
+
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
|
2437 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
2438 |
+
IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
|
2439 |
+
MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
|
2440 |
+
VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
|
2441 |
+
JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
2442 |
+
ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
|
2443 |
+
qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
|
2444 |
+
xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
|
2445 |
+
ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
|
2446 |
+
gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
|
2447 |
+
BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2448 |
+
AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
|
2449 |
+
1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
|
2450 |
+
vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
|
2451 |
+
ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
|
2452 |
+
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
|
2453 |
+
7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
|
2454 |
+
-----END CERTIFICATE-----
|
2455 |
+
|
2456 |
+
Deutsche Telekom Root CA 2
|
2457 |
+
==========================
|
2458 |
+
-----BEGIN CERTIFICATE-----
|
2459 |
+
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
|
2460 |
+
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
|
2461 |
+
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
|
2462 |
+
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
|
2463 |
+
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
|
2464 |
+
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
|
2465 |
+
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
|
2466 |
+
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
|
2467 |
+
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
|
2468 |
+
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
|
2469 |
+
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
|
2470 |
+
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
|
2471 |
+
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
|
2472 |
+
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
|
2473 |
+
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
|
2474 |
+
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
|
2475 |
+
Cm26OWMohpLzGITY+9HPBVZkVw==
|
2476 |
+
-----END CERTIFICATE-----
|
2477 |
+
|
2478 |
+
ComSign CA
|
2479 |
+
==========
|
2480 |
+
-----BEGIN CERTIFICATE-----
|
2481 |
+
MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
|
2482 |
+
EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
|
2483 |
+
MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
|
2484 |
+
Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
|
2485 |
+
ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
|
2486 |
+
P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
|
2487 |
+
GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
|
2488 |
+
YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
|
2489 |
+
rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
|
2490 |
+
oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
|
2491 |
+
AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
|
2492 |
+
VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
|
2493 |
+
QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
|
2494 |
+
mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
|
2495 |
+
/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
|
2496 |
+
zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
|
2497 |
+
AGegcQCCSA==
|
2498 |
+
-----END CERTIFICATE-----
|
2499 |
+
|
2500 |
+
ComSign Secured CA
|
2501 |
+
==================
|
2502 |
+
-----BEGIN CERTIFICATE-----
|
2503 |
+
MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
|
2504 |
+
AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
|
2505 |
+
NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
|
2506 |
+
QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2507 |
+
ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
|
2508 |
+
49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
|
2509 |
+
7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
|
2510 |
+
kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
|
2511 |
+
9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
|
2512 |
+
AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
|
2513 |
+
U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
|
2514 |
+
j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
|
2515 |
+
AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
|
2516 |
+
BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
|
2517 |
+
FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
|
2518 |
+
51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
|
2519 |
+
OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
|
2520 |
+
-----END CERTIFICATE-----
|
2521 |
+
|
2522 |
+
Cybertrust Global Root
|
2523 |
+
======================
|
2524 |
+
-----BEGIN CERTIFICATE-----
|
2525 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
2526 |
+
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
2527 |
+
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
2528 |
+
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
2529 |
+
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
2530 |
+
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
2531 |
+
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
2532 |
+
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
2533 |
+
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
2534 |
+
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
2535 |
+
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
2536 |
+
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
2537 |
+
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
2538 |
+
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
2539 |
+
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
2540 |
+
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
2541 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
2542 |
+
-----END CERTIFICATE-----
|
2543 |
+
|
2544 |
+
ePKI Root Certification Authority
|
2545 |
+
=================================
|
2546 |
+
-----BEGIN CERTIFICATE-----
|
2547 |
+
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
|
2573 |
+
-----END CERTIFICATE-----
|
2574 |
+
|
2575 |
+
T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
|
2576 |
+
=============================================================================================================================
|
2577 |
+
-----BEGIN CERTIFICATE-----
|
2578 |
+
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
2579 |
+
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
|
2580 |
+
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
|
2581 |
+
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
|
2582 |
+
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
|
2583 |
+
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
|
2584 |
+
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
|
2585 |
+
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
|
2586 |
+
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
|
2587 |
+
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
|
2588 |
+
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
|
2589 |
+
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
|
2590 |
+
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
|
2591 |
+
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
|
2592 |
+
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
|
2593 |
+
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
|
2594 |
+
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
|
2595 |
+
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
2596 |
+
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
|
2597 |
+
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
|
2598 |
+
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
|
2599 |
+
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
2600 |
+
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
2601 |
+
-----END CERTIFICATE-----
|
2602 |
+
|
2603 |
+
Buypass Class 2 CA 1
|
2604 |
+
====================
|
2605 |
+
-----BEGIN CERTIFICATE-----
|
2606 |
+
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2607 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
|
2608 |
+
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2609 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
|
2610 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
|
2611 |
+
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
|
2612 |
+
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
|
2613 |
+
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
|
2614 |
+
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
|
2615 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
|
2616 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
|
2617 |
+
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
|
2618 |
+
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
|
2619 |
+
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
|
2620 |
+
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
|
2621 |
+
-----END CERTIFICATE-----
|
2622 |
+
|
2623 |
+
Buypass Class 3 CA 1
|
2624 |
+
====================
|
2625 |
+
-----BEGIN CERTIFICATE-----
|
2626 |
+
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2627 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
|
2628 |
+
MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2629 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
|
2630 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
|
2631 |
+
ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
|
2632 |
+
n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
|
2633 |
+
AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
|
2634 |
+
1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
|
2635 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
|
2636 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
|
2637 |
+
pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
|
2638 |
+
EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
|
2639 |
+
htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
|
2640 |
+
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
|
2641 |
+
-----END CERTIFICATE-----
|
2642 |
+
|
2643 |
+
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
2644 |
+
==========================================================================
|
2645 |
+
-----BEGIN CERTIFICATE-----
|
2646 |
+
MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
|
2647 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
|
2648 |
+
QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
|
2649 |
+
Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
|
2650 |
+
ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
|
2651 |
+
IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
|
2652 |
+
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
|
2653 |
+
X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
|
2654 |
+
gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
|
2655 |
+
eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
|
2656 |
+
TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
|
2657 |
+
Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
|
2658 |
+
uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
|
2659 |
+
qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
|
2660 |
+
ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
|
2661 |
+
Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
|
2662 |
+
/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
|
2663 |
+
Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
|
2664 |
+
FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
|
2665 |
+
zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
|
2666 |
+
XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
|
2667 |
+
bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
|
2668 |
+
RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
|
2669 |
+
1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
|
2670 |
+
2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
|
2671 |
+
Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
|
2672 |
+
AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
|
2673 |
+
-----END CERTIFICATE-----
|
2674 |
+
|
2675 |
+
certSIGN ROOT CA
|
2676 |
+
================
|
2677 |
+
-----BEGIN CERTIFICATE-----
|
2678 |
+
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
2679 |
+
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
2680 |
+
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
2681 |
+
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
2682 |
+
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
2683 |
+
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
2684 |
+
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
2685 |
+
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
2686 |
+
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
2687 |
+
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
2688 |
+
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
2689 |
+
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
2690 |
+
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
2691 |
+
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
2692 |
+
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
2693 |
+
-----END CERTIFICATE-----
|
2694 |
+
|
2695 |
+
CNNIC ROOT
|
2696 |
+
==========
|
2697 |
+
-----BEGIN CERTIFICATE-----
|
2698 |
+
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
2699 |
+
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
2700 |
+
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
2701 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
2702 |
+
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
2703 |
+
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
2704 |
+
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
2705 |
+
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
2706 |
+
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
2707 |
+
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
2708 |
+
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
2709 |
+
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
2710 |
+
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
2711 |
+
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
2712 |
+
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
2713 |
+
mxE=
|
2714 |
+
-----END CERTIFICATE-----
|
2715 |
+
|
2716 |
+
ApplicationCA - Japanese Government
|
2717 |
+
===================================
|
2718 |
+
-----BEGIN CERTIFICATE-----
|
2719 |
+
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
|
2720 |
+
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
|
2721 |
+
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
|
2722 |
+
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2723 |
+
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
|
2724 |
+
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
|
2725 |
+
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
|
2726 |
+
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
|
2727 |
+
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
|
2728 |
+
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
|
2729 |
+
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
|
2730 |
+
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
|
2731 |
+
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
|
2732 |
+
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
|
2733 |
+
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
|
2734 |
+
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
2735 |
+
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
2736 |
+
-----END CERTIFICATE-----
|
2737 |
+
|
2738 |
+
GeoTrust Primary Certification Authority - G3
|
2739 |
+
=============================================
|
2740 |
+
-----BEGIN CERTIFICATE-----
|
2741 |
+
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
|
2742 |
+
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
|
2743 |
+
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
|
2744 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
|
2745 |
+
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
|
2746 |
+
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
|
2747 |
+
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
|
2748 |
+
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
|
2749 |
+
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
|
2750 |
+
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
|
2751 |
+
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
|
2752 |
+
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
|
2753 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
|
2754 |
+
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
|
2755 |
+
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
|
2756 |
+
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
2757 |
+
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
|
2758 |
+
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
|
2759 |
+
-----END CERTIFICATE-----
|
2760 |
+
|
2761 |
+
thawte Primary Root CA - G2
|
2762 |
+
===========================
|
2763 |
+
-----BEGIN CERTIFICATE-----
|
2764 |
+
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
|
2765 |
+
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
|
2766 |
+
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
|
2767 |
+
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
|
2768 |
+
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
|
2769 |
+
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
|
2770 |
+
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
|
2771 |
+
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
|
2772 |
+
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
|
2773 |
+
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
|
2774 |
+
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
|
2775 |
+
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
2776 |
+
-----END CERTIFICATE-----
|
2777 |
+
|
2778 |
+
thawte Primary Root CA - G3
|
2779 |
+
===========================
|
2780 |
+
-----BEGIN CERTIFICATE-----
|
2781 |
+
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
|
2782 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2783 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2784 |
+
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
|
2785 |
+
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
2786 |
+
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
|
2787 |
+
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
|
2788 |
+
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2789 |
+
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
|
2790 |
+
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
|
2791 |
+
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
|
2792 |
+
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
|
2793 |
+
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
|
2794 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
|
2795 |
+
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
|
2796 |
+
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
2797 |
+
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
|
2798 |
+
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
|
2799 |
+
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
|
2800 |
+
-----END CERTIFICATE-----
|
2801 |
+
|
2802 |
+
GeoTrust Primary Certification Authority - G2
|
2803 |
+
=============================================
|
2804 |
+
-----BEGIN CERTIFICATE-----
|
2805 |
+
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
2806 |
+
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
2807 |
+
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
2808 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
2809 |
+
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
2810 |
+
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
2811 |
+
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
2812 |
+
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
2813 |
+
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
2814 |
+
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
2815 |
+
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
2816 |
+
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
2817 |
+
npaqBA+K
|
2818 |
+
-----END CERTIFICATE-----
|
2819 |
+
|
2820 |
+
VeriSign Universal Root Certification Authority
|
2821 |
+
===============================================
|
2822 |
+
-----BEGIN CERTIFICATE-----
|
2823 |
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
2824 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2825 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2826 |
+
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
2827 |
+
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
2828 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
2829 |
+
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
2830 |
+
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
2831 |
+
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
2832 |
+
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
2833 |
+
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
2834 |
+
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
2835 |
+
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
2836 |
+
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
2837 |
+
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
2838 |
+
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
2839 |
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
2840 |
+
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
2841 |
+
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
2842 |
+
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
2843 |
+
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
2844 |
+
mJO37M2CYfE45k+XmCpajQ==
|
2845 |
+
-----END CERTIFICATE-----
|
2846 |
+
|
2847 |
+
VeriSign Class 3 Public Primary Certification Authority - G4
|
2848 |
+
============================================================
|
2849 |
+
-----BEGIN CERTIFICATE-----
|
2850 |
+
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
|
2851 |
+
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
|
2852 |
+
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
|
2853 |
+
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
|
2854 |
+
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
|
2855 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
|
2856 |
+
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
|
2857 |
+
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2858 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
|
2859 |
+
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
|
2860 |
+
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
|
2861 |
+
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
|
2862 |
+
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
|
2863 |
+
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
|
2864 |
+
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
|
2865 |
+
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
2866 |
+
-----END CERTIFICATE-----
|
2867 |
+
|
2868 |
+
NetLock Arany (Class Gold) Főtanúsítvány
|
2869 |
+
============================================
|
2870 |
+
-----BEGIN CERTIFICATE-----
|
2871 |
+
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
2872 |
+
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
2873 |
+
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
2874 |
+
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
2875 |
+
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
2876 |
+
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
2877 |
+
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
2878 |
+
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
2879 |
+
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
2880 |
+
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
2881 |
+
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
2882 |
+
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
2883 |
+
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
2884 |
+
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
2885 |
+
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
2886 |
+
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
2887 |
+
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
2888 |
+
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
2889 |
+
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
2890 |
+
-----END CERTIFICATE-----
|
2891 |
+
|
2892 |
+
Staat der Nederlanden Root CA - G2
|
2893 |
+
==================================
|
2894 |
+
-----BEGIN CERTIFICATE-----
|
2895 |
+
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
|
2921 |
+
66+KAQ==
|
2922 |
+
-----END CERTIFICATE-----
|
2923 |
+
|
2924 |
+
CA Disig
|
2925 |
+
========
|
2926 |
+
-----BEGIN CERTIFICATE-----
|
2927 |
+
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
|
2928 |
+
QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
|
2929 |
+
MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
|
2930 |
+
bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
|
2931 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
|
2932 |
+
GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
|
2933 |
+
Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
|
2934 |
+
hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
|
2935 |
+
ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
|
2936 |
+
gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
|
2937 |
+
AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
|
2938 |
+
aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
|
2939 |
+
ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
|
2940 |
+
BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
|
2941 |
+
WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
|
2942 |
+
mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
|
2943 |
+
CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
|
2944 |
+
ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
|
2945 |
+
4Z7CRneC9VkGjCFMhwnN5ag=
|
2946 |
+
-----END CERTIFICATE-----
|
2947 |
+
|
2948 |
+
Juur-SK
|
2949 |
+
=======
|
2950 |
+
-----BEGIN CERTIFICATE-----
|
2951 |
+
MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
|
2952 |
+
c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
|
2953 |
+
DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
|
2954 |
+
SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
|
2955 |
+
aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
2956 |
+
ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
|
2957 |
+
TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
|
2958 |
+
+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
|
2959 |
+
UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
|
2960 |
+
Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
|
2961 |
+
MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
|
2962 |
+
HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
|
2963 |
+
AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
|
2964 |
+
cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
|
2965 |
+
AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
|
2966 |
+
cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
|
2967 |
+
FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
|
2968 |
+
A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
|
2969 |
+
ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
|
2970 |
+
abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
|
2971 |
+
IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
|
2972 |
+
Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
|
2973 |
+
yyqcjg==
|
2974 |
+
-----END CERTIFICATE-----
|
2975 |
+
|
2976 |
+
Hongkong Post Root CA 1
|
2977 |
+
=======================
|
2978 |
+
-----BEGIN CERTIFICATE-----
|
2979 |
+
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
2980 |
+
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
2981 |
+
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
2982 |
+
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
2983 |
+
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
2984 |
+
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
2985 |
+
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
2986 |
+
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
2987 |
+
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
2988 |
+
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
2989 |
+
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
2990 |
+
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
2991 |
+
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
2992 |
+
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
2993 |
+
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
2994 |
+
-----END CERTIFICATE-----
|
2995 |
+
|
2996 |
+
SecureSign RootCA11
|
2997 |
+
===================
|
2998 |
+
-----BEGIN CERTIFICATE-----
|
2999 |
+
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
3000 |
+
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
3001 |
+
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
3002 |
+
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
3003 |
+
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
3004 |
+
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
3005 |
+
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
3006 |
+
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
3007 |
+
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
3008 |
+
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
3009 |
+
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
3010 |
+
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
3011 |
+
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
3012 |
+
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
3013 |
+
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
3014 |
+
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
3015 |
+
-----END CERTIFICATE-----
|
3016 |
+
|
3017 |
+
ACEDICOM Root
|
3018 |
+
=============
|
3019 |
+
-----BEGIN CERTIFICATE-----
|
3020 |
+
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
|
3046 |
+
-----END CERTIFICATE-----
|
3047 |
+
|
3048 |
+
Verisign Class 1 Public Primary Certification Authority
|
3049 |
+
=======================================================
|
3050 |
+
-----BEGIN CERTIFICATE-----
|
3051 |
+
MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3052 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
|
3053 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3054 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx
|
3055 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3056 |
+
A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ
|
3057 |
+
VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2
|
3058 |
+
yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa
|
3059 |
+
XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n
|
3060 |
+
0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ
|
3061 |
+
RjXZ+Hxb
|
3062 |
+
-----END CERTIFICATE-----
|
3063 |
+
|
3064 |
+
Verisign Class 3 Public Primary Certification Authority
|
3065 |
+
=======================================================
|
3066 |
+
-----BEGIN CERTIFICATE-----
|
3067 |
+
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3068 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
3069 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3070 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
3071 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3072 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
3073 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
3074 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
3075 |
+
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
3076 |
+
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
3077 |
+
D/xwzoiQ
|
3078 |
+
-----END CERTIFICATE-----
|
3079 |
+
|
3080 |
+
Microsec e-Szigno Root CA 2009
|
3081 |
+
==============================
|
3082 |
+
-----BEGIN CERTIFICATE-----
|
3083 |
+
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
3084 |
+
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
3085 |
+
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
3086 |
+
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
3087 |
+
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
3088 |
+
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
3089 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
3090 |
+
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
3091 |
+
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
3092 |
+
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
3093 |
+
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
3094 |
+
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
3095 |
+
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
3096 |
+
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
3097 |
+
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
3098 |
+
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
3099 |
+
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
3100 |
+
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
3101 |
+
LXpUq3DDfSJlgnCW
|
3102 |
+
-----END CERTIFICATE-----
|
3103 |
+
|
3104 |
+
E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
|
3105 |
+
===================================================
|
3106 |
+
-----BEGIN CERTIFICATE-----
|
3107 |
+
MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
3108 |
+
EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
|
3109 |
+
ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
|
3110 |
+
MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
|
3111 |
+
cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
|
3112 |
+
aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3113 |
+
AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
|
3114 |
+
8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
|
3115 |
+
jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
|
3116 |
+
JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
|
3117 |
+
9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
|
3118 |
+
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
|
3119 |
+
SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
|
3120 |
+
F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
|
3121 |
+
D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
|
3122 |
+
Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
|
3123 |
+
fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
|
3124 |
+
-----END CERTIFICATE-----
|
3125 |
+
|
3126 |
+
GlobalSign Root CA - R3
|
3127 |
+
=======================
|
3128 |
+
-----BEGIN CERTIFICATE-----
|
3129 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
3130 |
+
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
3131 |
+
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
3132 |
+
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
3133 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
3134 |
+
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
3135 |
+
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
3136 |
+
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
3137 |
+
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
3138 |
+
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
3139 |
+
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
3140 |
+
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
3141 |
+
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
3142 |
+
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
3143 |
+
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
3144 |
+
kpeDMdmztcpHWD9f
|
3145 |
+
-----END CERTIFICATE-----
|
3146 |
+
|
3147 |
+
TC TrustCenter Universal CA III
|
3148 |
+
===============================
|
3149 |
+
-----BEGIN CERTIFICATE-----
|
3150 |
+
MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
|
3151 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
3152 |
+
IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
|
3153 |
+
Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
|
3154 |
+
QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
|
3155 |
+
KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
|
3156 |
+
AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
|
3157 |
+
QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
|
3158 |
+
juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
|
3159 |
+
CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
|
3160 |
+
M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
|
3161 |
+
A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
|
3162 |
+
BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
|
3163 |
+
g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
|
3164 |
+
KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
|
3165 |
+
BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
|
3166 |
+
CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
|
3167 |
+
woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
|
3168 |
+
-----END CERTIFICATE-----
|
3169 |
+
|
3170 |
+
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
3171 |
+
=========================================================
|
3172 |
+
-----BEGIN CERTIFICATE-----
|
3173 |
+
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
3174 |
+
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
3175 |
+
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
3176 |
+
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
3177 |
+
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
3178 |
+
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
3179 |
+
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
3180 |
+
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
3181 |
+
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
3182 |
+
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
3183 |
+
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
3184 |
+
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
3185 |
+
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
3186 |
+
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
3187 |
+
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
3188 |
+
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
3189 |
+
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
3190 |
+
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
3191 |
+
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
3192 |
+
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
3193 |
+
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
3194 |
+
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
3195 |
+
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
3196 |
+
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
3197 |
+
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
3198 |
+
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
3199 |
+
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
3200 |
+
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
3201 |
+
-----END CERTIFICATE-----
|
3202 |
+
|
3203 |
+
Izenpe.com
|
3204 |
+
==========
|
3205 |
+
-----BEGIN CERTIFICATE-----
|
3206 |
+
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
3207 |
+
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
3208 |
+
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
3209 |
+
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
3210 |
+
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
3211 |
+
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
3212 |
+
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
3213 |
+
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
3214 |
+
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
3215 |
+
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
3216 |
+
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
3217 |
+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
3218 |
+
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
3219 |
+
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
3220 |
+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
3221 |
+
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
3222 |
+
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
3223 |
+
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
3224 |
+
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
3225 |
+
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
3226 |
+
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
3227 |
+
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
3228 |
+
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
3229 |
+
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
3230 |
+
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
3231 |
+
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
3232 |
+
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
3233 |
+
-----END CERTIFICATE-----
|
3234 |
+
|
3235 |
+
Chambers of Commerce Root - 2008
|
3236 |
+
================================
|
3237 |
+
-----BEGIN CERTIFICATE-----
|
3238 |
+
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
3239 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3240 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3241 |
+
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
3242 |
+
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
3243 |
+
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
3244 |
+
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
3245 |
+
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
3246 |
+
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
3247 |
+
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
3248 |
+
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
3249 |
+
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
3250 |
+
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
3251 |
+
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
3252 |
+
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
3253 |
+
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
3254 |
+
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
3255 |
+
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
3256 |
+
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
3257 |
+
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
3258 |
+
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
3259 |
+
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
3260 |
+
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
3261 |
+
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
3262 |
+
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
3263 |
+
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
3264 |
+
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
3265 |
+
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
3266 |
+
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
3267 |
+
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
3268 |
+
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
3269 |
+
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
3270 |
+
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
3271 |
+
-----END CERTIFICATE-----
|
3272 |
+
|
3273 |
+
Global Chambersign Root - 2008
|
3274 |
+
==============================
|
3275 |
+
-----BEGIN CERTIFICATE-----
|
3276 |
+
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
3277 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3278 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3279 |
+
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
3280 |
+
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
3281 |
+
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
3282 |
+
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
3283 |
+
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
3284 |
+
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
3285 |
+
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
3286 |
+
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
3287 |
+
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
3288 |
+
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
3289 |
+
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
3290 |
+
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
3291 |
+
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
3292 |
+
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
3293 |
+
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
3294 |
+
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
3295 |
+
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
3296 |
+
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
3297 |
+
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
3298 |
+
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
3299 |
+
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
3300 |
+
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
3301 |
+
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
3302 |
+
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
3303 |
+
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
3304 |
+
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
3305 |
+
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
3306 |
+
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
3307 |
+
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
3308 |
+
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
3309 |
+
-----END CERTIFICATE-----
|
3310 |
+
|
3311 |
+
Go Daddy Root Certificate Authority - G2
|
3312 |
+
========================================
|
3313 |
+
-----BEGIN CERTIFICATE-----
|
3314 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3315 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
3316 |
+
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
3317 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
3318 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
3319 |
+
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
3320 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
3321 |
+
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
3322 |
+
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
3323 |
+
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
3324 |
+
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
3325 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
3326 |
+
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
3327 |
+
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
3328 |
+
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
3329 |
+
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
3330 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
3331 |
+
-----END CERTIFICATE-----
|
3332 |
+
|
3333 |
+
Starfield Root Certificate Authority - G2
|
3334 |
+
=========================================
|
3335 |
+
-----BEGIN CERTIFICATE-----
|
3336 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3337 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3338 |
+
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
3339 |
+
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
3340 |
+
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
3341 |
+
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
3342 |
+
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
3343 |
+
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
3344 |
+
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
3345 |
+
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
3346 |
+
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
3347 |
+
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3348 |
+
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
3349 |
+
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
3350 |
+
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
3351 |
+
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
3352 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
3353 |
+
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
3354 |
+
-----END CERTIFICATE-----
|
3355 |
+
|
3356 |
+
Starfield Services Root Certificate Authority - G2
|
3357 |
+
==================================================
|
3358 |
+
-----BEGIN CERTIFICATE-----
|
3359 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3360 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3361 |
+
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
3362 |
+
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
3363 |
+
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
3364 |
+
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
3365 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3366 |
+
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
3367 |
+
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
3368 |
+
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
3369 |
+
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
3370 |
+
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
3371 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
3372 |
+
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
3373 |
+
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
3374 |
+
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
3375 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
3376 |
+
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
3377 |
+
-----END CERTIFICATE-----
|
3378 |
+
|
3379 |
+
AffirmTrust Commercial
|
3380 |
+
======================
|
3381 |
+
-----BEGIN CERTIFICATE-----
|
3382 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3383 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
3384 |
+
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3385 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
3386 |
+
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
3387 |
+
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
3388 |
+
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
3389 |
+
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
3390 |
+
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
3391 |
+
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3392 |
+
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
3393 |
+
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
3394 |
+
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
3395 |
+
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
3396 |
+
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
3397 |
+
-----END CERTIFICATE-----
|
3398 |
+
|
3399 |
+
AffirmTrust Networking
|
3400 |
+
======================
|
3401 |
+
-----BEGIN CERTIFICATE-----
|
3402 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3403 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
3404 |
+
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3405 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
3406 |
+
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
3407 |
+
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
3408 |
+
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
3409 |
+
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
3410 |
+
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
3411 |
+
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3412 |
+
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
3413 |
+
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
3414 |
+
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
3415 |
+
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
3416 |
+
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
3417 |
+
-----END CERTIFICATE-----
|
3418 |
+
|
3419 |
+
AffirmTrust Premium
|
3420 |
+
===================
|
3421 |
+
-----BEGIN CERTIFICATE-----
|
3422 |
+
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
|
3446 |
+
-----END CERTIFICATE-----
|
3447 |
+
|
3448 |
+
AffirmTrust Premium ECC
|
3449 |
+
=======================
|
3450 |
+
-----BEGIN CERTIFICATE-----
|
3451 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
3452 |
+
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
3453 |
+
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
3454 |
+
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
3455 |
+
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
3456 |
+
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
3457 |
+
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
3458 |
+
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
3459 |
+
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
3460 |
+
eQ==
|
3461 |
+
-----END CERTIFICATE-----
|
3462 |
+
|
3463 |
+
Certum Trusted Network CA
|
3464 |
+
=========================
|
3465 |
+
-----BEGIN CERTIFICATE-----
|
3466 |
+
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
3467 |
+
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
3468 |
+
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
3469 |
+
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
3470 |
+
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3471 |
+
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
3472 |
+
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
3473 |
+
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
3474 |
+
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
3475 |
+
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
3476 |
+
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
3477 |
+
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
3478 |
+
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
3479 |
+
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
3480 |
+
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
3481 |
+
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
3482 |
+
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
3483 |
+
-----END CERTIFICATE-----
|
3484 |
+
|
3485 |
+
Certinomis - Autorité Racine
|
3486 |
+
=============================
|
3487 |
+
-----BEGIN CERTIFICATE-----
|
3488 |
+
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
|
3513 |
+
vgt2Fl43N+bYdJeimUV5
|
3514 |
+
-----END CERTIFICATE-----
|
3515 |
+
|
3516 |
+
Root CA Generalitat Valenciana
|
3517 |
+
==============================
|
3518 |
+
-----BEGIN CERTIFICATE-----
|
3519 |
+
MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
|
3520 |
+
ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
|
3521 |
+
IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
|
3522 |
+
WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
|
3523 |
+
CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
|
3524 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
|
3525 |
+
F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
|
3526 |
+
ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
|
3527 |
+
D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
|
3528 |
+
JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
|
3529 |
+
AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
|
3530 |
+
dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
|
3531 |
+
ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
|
3532 |
+
AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
|
3533 |
+
YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
|
3534 |
+
AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
|
3535 |
+
aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
|
3536 |
+
AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
|
3537 |
+
YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
|
3538 |
+
AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
|
3539 |
+
OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
|
3540 |
+
dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
|
3541 |
+
BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
|
3542 |
+
A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
|
3543 |
+
b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
|
3544 |
+
TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
|
3545 |
+
Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
|
3546 |
+
NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
|
3547 |
+
iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
|
3548 |
+
+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
|
3549 |
+
-----END CERTIFICATE-----
|
3550 |
+
|
3551 |
+
A-Trust-nQual-03
|
3552 |
+
================
|
3553 |
+
-----BEGIN CERTIFICATE-----
|
3554 |
+
MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
|
3555 |
+
Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
|
3556 |
+
a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
|
3557 |
+
dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
|
3558 |
+
RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
|
3559 |
+
ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
|
3560 |
+
c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
|
3561 |
+
zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
|
3562 |
+
yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
|
3563 |
+
SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
|
3564 |
+
iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
|
3565 |
+
cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
|
3566 |
+
eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
|
3567 |
+
ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
|
3568 |
+
sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
|
3569 |
+
JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
|
3570 |
+
mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
|
3571 |
+
ahq97BvIxYSazQ==
|
3572 |
+
-----END CERTIFICATE-----
|
3573 |
+
|
3574 |
+
TWCA Root Certification Authority
|
3575 |
+
=================================
|
3576 |
+
-----BEGIN CERTIFICATE-----
|
3577 |
+
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
3578 |
+
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
3579 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
3580 |
+
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
3581 |
+
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
3582 |
+
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
3583 |
+
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
3584 |
+
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
3585 |
+
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
3586 |
+
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
3587 |
+
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
3588 |
+
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
3589 |
+
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
3590 |
+
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
3591 |
+
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
3592 |
+
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
3593 |
+
-----END CERTIFICATE-----
|
3594 |
+
|
3595 |
+
Security Communication RootCA2
|
3596 |
+
==============================
|
3597 |
+
-----BEGIN CERTIFICATE-----
|
3598 |
+
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
3599 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
|
3600 |
+
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
|
3601 |
+
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
|
3602 |
+
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3603 |
+
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
|
3604 |
+
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
|
3605 |
+
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
|
3606 |
+
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
|
3607 |
+
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
|
3608 |
+
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
3609 |
+
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
|
3610 |
+
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
|
3611 |
+
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
|
3612 |
+
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
3613 |
+
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
3614 |
+
-----END CERTIFICATE-----
|
3615 |
+
|
3616 |
+
EC-ACC
|
3617 |
+
======
|
3618 |
+
-----BEGIN CERTIFICATE-----
|
3619 |
+
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
3620 |
+
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
3621 |
+
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
3622 |
+
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
3623 |
+
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
3624 |
+
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
3625 |
+
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
3626 |
+
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
3627 |
+
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
3628 |
+
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
3629 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
3630 |
+
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
3631 |
+
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
3632 |
+
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
3633 |
+
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
3634 |
+
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
3635 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
3636 |
+
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
3637 |
+
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
3638 |
+
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
3639 |
+
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
3640 |
+
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
3641 |
+
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
3642 |
+
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
3643 |
+
5EI=
|
3644 |
+
-----END CERTIFICATE-----
|
3645 |
+
|
3646 |
+
Hellenic Academic and Research Institutions RootCA 2011
|
3647 |
+
=======================================================
|
3648 |
+
-----BEGIN CERTIFICATE-----
|
3649 |
+
MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
|
3650 |
+
O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
|
3651 |
+
aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3652 |
+
IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
|
3653 |
+
AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
|
3654 |
+
IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
|
3655 |
+
IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3656 |
+
AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
|
3657 |
+
1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
|
3658 |
+
71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
|
3659 |
+
8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
|
3660 |
+
3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
|
3661 |
+
MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
|
3662 |
+
MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
|
3663 |
+
b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
|
3664 |
+
XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
|
3665 |
+
TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
|
3666 |
+
/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
|
3667 |
+
7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
|
3668 |
+
-----END CERTIFICATE-----
|
3669 |
+
|
3670 |
+
Actalis Authentication Root CA
|
3671 |
+
==============================
|
3672 |
+
-----BEGIN CERTIFICATE-----
|
3673 |
+
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
|
3674 |
+
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
|
3675 |
+
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
|
3676 |
+
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
|
3677 |
+
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
|
3678 |
+
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
|
3679 |
+
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
|
3680 |
+
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
|
3681 |
+
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
|
3682 |
+
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
|
3683 |
+
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
|
3684 |
+
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
|
3685 |
+
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
|
3686 |
+
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
|
3687 |
+
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
|
3688 |
+
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
|
3689 |
+
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
|
3690 |
+
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
|
3691 |
+
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
|
3692 |
+
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
|
3693 |
+
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
|
3694 |
+
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
|
3695 |
+
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
|
3696 |
+
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
|
3697 |
+
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
3698 |
+
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
3699 |
+
-----END CERTIFICATE-----
|
3700 |
+
|
3701 |
+
Trustis FPS Root CA
|
3702 |
+
===================
|
3703 |
+
-----BEGIN CERTIFICATE-----
|
3704 |
+
MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
|
3705 |
+
EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
|
3706 |
+
IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
|
3707 |
+
BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
|
3708 |
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
|
3709 |
+
RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
|
3710 |
+
H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
|
3711 |
+
cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
|
3712 |
+
o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
|
3713 |
+
AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
|
3714 |
+
BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
|
3715 |
+
GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
|
3716 |
+
yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
|
3717 |
+
8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
|
3718 |
+
l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
|
3719 |
+
iB6XzCGcKQENZetX2fNXlrtIzYE=
|
3720 |
+
-----END CERTIFICATE-----
|
3721 |
+
|
3722 |
+
StartCom Certification Authority
|
3723 |
+
================================
|
3724 |
+
-----BEGIN CERTIFICATE-----
|
3725 |
+
MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
3726 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
3727 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
3728 |
+
NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
3729 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
3730 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
3731 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
3732 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
3733 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
3734 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
3735 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
3736 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
3737 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
3738 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
3739 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
3740 |
+
37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
|
3741 |
+
VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
|
3742 |
+
Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
|
3743 |
+
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
|
3744 |
+
c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
|
3745 |
+
bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
|
3746 |
+
aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
|
3747 |
+
aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
|
3748 |
+
L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
|
3749 |
+
cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
|
3750 |
+
fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
|
3751 |
+
N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
|
3752 |
+
Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
|
3753 |
+
tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
|
3754 |
+
e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
|
3755 |
+
2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
|
3756 |
+
HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
|
3757 |
+
JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
|
3758 |
+
D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
|
3759 |
+
-----END CERTIFICATE-----
|
3760 |
+
|
3761 |
+
StartCom Certification Authority G2
|
3762 |
+
===================================
|
3763 |
+
-----BEGIN CERTIFICATE-----
|
3764 |
+
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
|
3788 |
+
obp573PYtlNXLfbQ4ddI
|
3789 |
+
-----END CERTIFICATE-----
|
3790 |
+
|
3791 |
+
Buypass Class 2 Root CA
|
3792 |
+
=======================
|
3793 |
+
-----BEGIN CERTIFICATE-----
|
3794 |
+
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
|
3818 |
+
rJgWVqA=
|
3819 |
+
-----END CERTIFICATE-----
|
3820 |
+
|
3821 |
+
Buypass Class 3 Root CA
|
3822 |
+
=======================
|
3823 |
+
-----BEGIN CERTIFICATE-----
|
3824 |
+
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
|
3848 |
+
Cp/HuZc=
|
3849 |
+
-----END CERTIFICATE-----
|
lib/createsend/class/log.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
define('CS_REST_LOG_VERBOSE', 1000);
|
3 |
+
define('CS_REST_LOG_WARNING', 500);
|
4 |
+
define('CS_REST_LOG_ERROR', 250);
|
5 |
+
define('CS_REST_LOG_NONE', 0);
|
6 |
+
|
7 |
+
class CS_REST_Log {
|
8 |
+
var $_level;
|
9 |
+
|
10 |
+
function CS_REST_Log($level) {
|
11 |
+
$this->_level = $level;
|
12 |
+
}
|
13 |
+
|
14 |
+
function log_message($message, $module, $level) {
|
15 |
+
if($this->_level >= $level) {
|
16 |
+
echo date('G:i:s').' - '.$module.': '.$message."<br />\n";
|
17 |
+
}
|
18 |
+
}
|
19 |
+
}
|
lib/createsend/class/serialisation.php
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!class_exists('Services_JSON')) {
|
4 |
+
require_once dirname(__FILE__).'/services_json.php';
|
5 |
+
}
|
6 |
+
|
7 |
+
function CS_REST_SERIALISATION_get_available($log) {
|
8 |
+
$log->log_message('Getting serialiser', __FUNCTION__, CS_REST_LOG_VERBOSE);
|
9 |
+
if(function_exists('json_decode') && function_exists('json_encode')) {
|
10 |
+
return new CS_REST_NativeJsonSerialiser($log);
|
11 |
+
} else {
|
12 |
+
return new CS_REST_ServicesJsonSerialiser($log);
|
13 |
+
}
|
14 |
+
}
|
15 |
+
class CS_REST_BaseSerialiser {
|
16 |
+
|
17 |
+
var $_log;
|
18 |
+
|
19 |
+
function CS_REST_BaseSerialiser($log) {
|
20 |
+
$this->_log = $log;
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Recursively ensures that all data values are utf-8 encoded.
|
25 |
+
* @param array $data All values of this array are checked for utf-8 encoding.
|
26 |
+
*/
|
27 |
+
function check_encoding($data) {
|
28 |
+
|
29 |
+
foreach($data as $k => $v) {
|
30 |
+
// If the element is a sub-array then recusively encode the array
|
31 |
+
if(is_array($v)) {
|
32 |
+
$data[$k] = $this->check_encoding($v);
|
33 |
+
// Otherwise if the element is a string then we need to check the encoding
|
34 |
+
} else if(is_string($v)) {
|
35 |
+
if((function_exists('mb_detect_encoding') && mb_detect_encoding($v) !== 'UTF-8') ||
|
36 |
+
(function_exists('mb_check_encoding') && !mb_check_encoding($v, 'UTF-8'))) {
|
37 |
+
// The string is using some other encoding, make sure we utf-8 encode
|
38 |
+
$v = utf8_encode($v);
|
39 |
+
}
|
40 |
+
|
41 |
+
$data[$k] = $v;
|
42 |
+
}
|
43 |
+
}
|
44 |
+
|
45 |
+
return $data;
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
class CS_REST_DoNothingSerialiser extends CS_REST_BaseSerialiser {
|
50 |
+
function CS_REST_DoNothingSerialiser() {}
|
51 |
+
function get_type() { return 'do_nothing'; }
|
52 |
+
function serialise($data) { return $data; }
|
53 |
+
function deserialise($text) {
|
54 |
+
$data = json_decode($text);
|
55 |
+
return is_null($data) ? $text : $data;
|
56 |
+
}
|
57 |
+
function check_encoding($data) { return $data; }
|
58 |
+
}
|
59 |
+
|
60 |
+
class CS_REST_NativeJsonSerialiser extends CS_REST_BaseSerialiser {
|
61 |
+
|
62 |
+
function CS_REST_NativeJsonSerialiser($log) {
|
63 |
+
$this->CS_REST_BaseSerialiser($log);
|
64 |
+
}
|
65 |
+
|
66 |
+
function get_format() {
|
67 |
+
return 'json';
|
68 |
+
}
|
69 |
+
|
70 |
+
function get_type() {
|
71 |
+
return 'native';
|
72 |
+
}
|
73 |
+
|
74 |
+
function serialise($data) {
|
75 |
+
if(is_null($data) || $data == '') return '';
|
76 |
+
return json_encode($this->check_encoding($data));
|
77 |
+
}
|
78 |
+
|
79 |
+
function deserialise($text) {
|
80 |
+
$data = json_decode($text);
|
81 |
+
|
82 |
+
return $this->strip_surrounding_quotes(is_null($data) ? $text : $data);
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* We've had sporadic reports of people getting ID's from create routes with the surrounding quotes present.
|
87 |
+
* There is no case where these should be present. Just get rid of it.
|
88 |
+
*/
|
89 |
+
function strip_surrounding_quotes($data) {
|
90 |
+
if(is_string($data)) {
|
91 |
+
return trim($data, '"');
|
92 |
+
}
|
93 |
+
|
94 |
+
return $data;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
class CS_REST_ServicesJsonSerialiser extends CS_REST_BaseSerialiser {
|
99 |
+
|
100 |
+
var $_serialiser;
|
101 |
+
|
102 |
+
function CS_REST_ServicesJsonSerialiser($log) {
|
103 |
+
$this->CS_REST_BaseSerialiser($log);
|
104 |
+
$this->_serialiser = new Services_JSON();
|
105 |
+
}
|
106 |
+
|
107 |
+
function get_content_type() {
|
108 |
+
return 'application/json';
|
109 |
+
}
|
110 |
+
|
111 |
+
function get_format() {
|
112 |
+
return 'json';
|
113 |
+
}
|
114 |
+
|
115 |
+
function get_type() {
|
116 |
+
return 'services_json';
|
117 |
+
}
|
118 |
+
|
119 |
+
function serialise($data) {
|
120 |
+
if(is_null($data) || $data == '') return '';
|
121 |
+
return $this->_serialiser->encode($this->check_encoding($data));
|
122 |
+
}
|
123 |
+
|
124 |
+
function deserialise($text) {
|
125 |
+
$data = $this->_serialiser->decode($text);
|
126 |
+
|
127 |
+
return is_null($data) ? $text : $data;
|
128 |
+
}
|
129 |
+
}
|
lib/createsend/class/services_json.php
ADDED
@@ -0,0 +1,782 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Converts to and from JSON format.
|
5 |
+
*
|
6 |
+
* JSON (JavaScript Object Notation) is a lightweight data-interchange
|
7 |
+
* format. It is easy for humans to read and write. It is easy for machines
|
8 |
+
* to parse and generate. It is based on a subset of the JavaScript
|
9 |
+
* Programming Language, Standard ECMA-262 3rd Edition - December 1999.
|
10 |
+
* This feature can also be found in Python. JSON is a text format that is
|
11 |
+
* completely language independent but uses conventions that are familiar
|
12 |
+
* to programmers of the C-family of languages, including C, C++, C#, Java,
|
13 |
+
* JavaScript, Perl, TCL, and many others. These properties make JSON an
|
14 |
+
* ideal data-interchange language.
|
15 |
+
*
|
16 |
+
* This package provides a simple encoder and decoder for JSON notation. It
|
17 |
+
* is intended for use with client-side Javascript applications that make
|
18 |
+
* use of HTTPRequest to perform server communication functions - data can
|
19 |
+
* be encoded into JSON notation for use in a client-side javascript, or
|
20 |
+
* decoded from incoming Javascript requests. JSON format is native to
|
21 |
+
* Javascript, and can be directly eval()'ed with no further parsing
|
22 |
+
* overhead
|
23 |
+
*
|
24 |
+
* All strings should be in ASCII or UTF-8 format!
|
25 |
+
*
|
26 |
+
* LICENSE: Redistribution and use in source and binary forms, with or
|
27 |
+
* without modification, are permitted provided that the following
|
28 |
+
* conditions are met: Redistributions of source code must retain the
|
29 |
+
* above copyright notice, this list of conditions and the following
|
30 |
+
* disclaimer. Redistributions in binary form must reproduce the above
|
31 |
+
* copyright notice, this list of conditions and the following disclaimer
|
32 |
+
* in the documentation and/or other materials provided with the
|
33 |
+
* distribution.
|
34 |
+
*
|
35 |
+
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
36 |
+
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
37 |
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
38 |
+
* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
39 |
+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
40 |
+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
41 |
+
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
42 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
43 |
+
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
44 |
+
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
45 |
+
* DAMAGE.
|
46 |
+
*
|
47 |
+
* @category
|
48 |
+
* @package Services_JSON
|
49 |
+
* @author Michal Migurski <mike-json@teczno.com>
|
50 |
+
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
|
51 |
+
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
|
52 |
+
* @copyright 2005 Michal Migurski
|
53 |
+
* @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
|
54 |
+
* @license http://www.opensource.org/licenses/bsd-license.php
|
55 |
+
* @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
|
56 |
+
*/
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Marker constant for Services_JSON::decode(), used to flag stack state
|
60 |
+
*/
|
61 |
+
define('SERVICES_JSON_SLICE', 1);
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Marker constant for Services_JSON::decode(), used to flag stack state
|
65 |
+
*/
|
66 |
+
define('SERVICES_JSON_IN_STR', 2);
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Marker constant for Services_JSON::decode(), used to flag stack state
|
70 |
+
*/
|
71 |
+
define('SERVICES_JSON_IN_ARR', 3);
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Marker constant for Services_JSON::decode(), used to flag stack state
|
75 |
+
*/
|
76 |
+
define('SERVICES_JSON_IN_OBJ', 4);
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Marker constant for Services_JSON::decode(), used to flag stack state
|
80 |
+
*/
|
81 |
+
define('SERVICES_JSON_IN_CMT', 5);
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Behavior switch for Services_JSON::decode()
|
85 |
+
*/
|
86 |
+
define('SERVICES_JSON_LOOSE_TYPE', 16);
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Behavior switch for Services_JSON::decode()
|
90 |
+
*/
|
91 |
+
define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Converts to and from JSON format.
|
95 |
+
*
|
96 |
+
* Brief example of use:
|
97 |
+
*
|
98 |
+
* <code>
|
99 |
+
* // create a new instance of Services_JSON
|
100 |
+
* $json = new Services_JSON();
|
101 |
+
*
|
102 |
+
* // convert a complexe value to JSON notation, and send it to the browser
|
103 |
+
* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
|
104 |
+
* $output = $json->encode($value);
|
105 |
+
*
|
106 |
+
* print($output);
|
107 |
+
* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
|
108 |
+
*
|
109 |
+
* // accept incoming POST data, assumed to be in JSON notation
|
110 |
+
* $input = file_get_contents('php://input', 1000000);
|
111 |
+
* $value = $json->decode($input);
|
112 |
+
* </code>
|
113 |
+
*/
|
114 |
+
class Services_JSON
|
115 |
+
{
|
116 |
+
/**
|
117 |
+
* constructs a new JSON instance
|
118 |
+
*
|
119 |
+
* @param int $use object behavior flags; combine with boolean-OR
|
120 |
+
*
|
121 |
+
* possible values:
|
122 |
+
* - SERVICES_JSON_LOOSE_TYPE: loose typing.
|
123 |
+
* "{...}" syntax creates associative arrays
|
124 |
+
* instead of objects in decode().
|
125 |
+
* - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
|
126 |
+
* Values which can't be encoded (e.g. resources)
|
127 |
+
* appear as NULL instead of throwing errors.
|
128 |
+
* By default, a deeply-nested resource will
|
129 |
+
* bubble up with an error, so all return values
|
130 |
+
* from encode() should be checked with isError()
|
131 |
+
*/
|
132 |
+
function Services_JSON($use = 0)
|
133 |
+
{
|
134 |
+
$this->use = $use;
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* convert a string from one UTF-16 char to one UTF-8 char
|
139 |
+
*
|
140 |
+
* Normally should be handled by mb_convert_encoding, but
|
141 |
+
* provides a slower PHP-only method for installations
|
142 |
+
* that lack the multibye string extension.
|
143 |
+
*
|
144 |
+
* @param string $utf16 UTF-16 character
|
145 |
+
* @return string UTF-8 character
|
146 |
+
* @access private
|
147 |
+
*/
|
148 |
+
function utf162utf8($utf16)
|
149 |
+
{
|
150 |
+
// oh please oh please oh please oh please oh please
|
151 |
+
if(function_exists('mb_convert_encoding')) {
|
152 |
+
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
|
153 |
+
}
|
154 |
+
|
155 |
+
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
|
156 |
+
|
157 |
+
switch(true) {
|
158 |
+
case ((0x7F & $bytes) == $bytes):
|
159 |
+
// this case should never be reached, because we are in ASCII range
|
160 |
+
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
161 |
+
return chr(0x7F & $bytes);
|
162 |
+
|
163 |
+
case (0x07FF & $bytes) == $bytes:
|
164 |
+
// return a 2-byte UTF-8 character
|
165 |
+
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
166 |
+
return chr(0xC0 | (($bytes >> 6) & 0x1F))
|
167 |
+
. chr(0x80 | ($bytes & 0x3F));
|
168 |
+
|
169 |
+
case (0xFFFF & $bytes) == $bytes:
|
170 |
+
// return a 3-byte UTF-8 character
|
171 |
+
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
172 |
+
return chr(0xE0 | (($bytes >> 12) & 0x0F))
|
173 |
+
. chr(0x80 | (($bytes >> 6) & 0x3F))
|
174 |
+
. chr(0x80 | ($bytes & 0x3F));
|
175 |
+
}
|
176 |
+
|
177 |
+
// ignoring UTF-32 for now, sorry
|
178 |
+
return '';
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* convert a string from one UTF-8 char to one UTF-16 char
|
183 |
+
*
|
184 |
+
* Normally should be handled by mb_convert_encoding, but
|
185 |
+
* provides a slower PHP-only method for installations
|
186 |
+
* that lack the multibye string extension.
|
187 |
+
*
|
188 |
+
* @param string $utf8 UTF-8 character
|
189 |
+
* @return string UTF-16 character
|
190 |
+
* @access private
|
191 |
+
*/
|
192 |
+
function utf82utf16($utf8)
|
193 |
+
{
|
194 |
+
// oh please oh please oh please oh please oh please
|
195 |
+
if(function_exists('mb_convert_encoding')) {
|
196 |
+
return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
|
197 |
+
}
|
198 |
+
|
199 |
+
switch(strlen($utf8)) {
|
200 |
+
case 1:
|
201 |
+
// this case should never be reached, because we are in ASCII range
|
202 |
+
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
203 |
+
return $utf8;
|
204 |
+
|
205 |
+
case 2:
|
206 |
+
// return a UTF-16 character from a 2-byte UTF-8 char
|
207 |
+
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
208 |
+
return chr(0x07 & (ord($utf8{0}) >> 2))
|
209 |
+
. chr((0xC0 & (ord($utf8{0}) << 6))
|
210 |
+
| (0x3F & ord($utf8{1})));
|
211 |
+
|
212 |
+
case 3:
|
213 |
+
// return a UTF-16 character from a 3-byte UTF-8 char
|
214 |
+
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
215 |
+
return chr((0xF0 & (ord($utf8{0}) << 4))
|
216 |
+
| (0x0F & (ord($utf8{1}) >> 2)))
|
217 |
+
. chr((0xC0 & (ord($utf8{1}) << 6))
|
218 |
+
| (0x7F & ord($utf8{2})));
|
219 |
+
}
|
220 |
+
|
221 |
+
// ignoring UTF-32 for now, sorry
|
222 |
+
return '';
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* encodes an arbitrary variable into JSON format
|
227 |
+
*
|
228 |
+
* @param mixed $var any number, boolean, string, array, or object to be encoded.
|
229 |
+
* see argument 1 to Services_JSON() above for array-parsing behavior.
|
230 |
+
* if var is a strng, note that encode() always expects it
|
231 |
+
* to be in ASCII or UTF-8 format!
|
232 |
+
*
|
233 |
+
* @return mixed JSON string representation of input var or an error if a problem occurs
|
234 |
+
* @access public
|
235 |
+
*/
|
236 |
+
function encode($var)
|
237 |
+
{
|
238 |
+
switch (gettype($var)) {
|
239 |
+
case 'boolean':
|
240 |
+
return $var ? 'true' : 'false';
|
241 |
+
|
242 |
+
case 'NULL':
|
243 |
+
return 'null';
|
244 |
+
|
245 |
+
case 'integer':
|
246 |
+
return (int) $var;
|
247 |
+
|
248 |
+
case 'double':
|
249 |
+
case 'float':
|
250 |
+
return (float) $var;
|
251 |
+
|
252 |
+
case 'string':
|
253 |
+
// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
|
254 |
+
$ascii = '';
|
255 |
+
$strlen_var = strlen($var);
|
256 |
+
|
257 |
+
/*
|
258 |
+
* Iterate over every character in the string,
|
259 |
+
* escaping with a slash or encoding to UTF-8 where necessary
|
260 |
+
*/
|
261 |
+
for ($c = 0; $c < $strlen_var; ++$c) {
|
262 |
+
|
263 |
+
$ord_var_c = ord($var{$c});
|
264 |
+
|
265 |
+
switch (true) {
|
266 |
+
case $ord_var_c == 0x08:
|
267 |
+
$ascii .= '\b';
|
268 |
+
break;
|
269 |
+
case $ord_var_c == 0x09:
|
270 |
+
$ascii .= '\t';
|
271 |
+
break;
|
272 |
+
case $ord_var_c == 0x0A:
|
273 |
+
$ascii .= '\n';
|
274 |
+
break;
|
275 |
+
case $ord_var_c == 0x0C:
|
276 |
+
$ascii .= '\f';
|
277 |
+
break;
|
278 |
+
case $ord_var_c == 0x0D:
|
279 |
+
$ascii .= '\r';
|
280 |
+
break;
|
281 |
+
|
282 |
+
case $ord_var_c == 0x22:
|
283 |
+
case $ord_var_c == 0x2F:
|
284 |
+
case $ord_var_c == 0x5C:
|
285 |
+
// double quote, slash, slosh
|
286 |
+
$ascii .= '\\'.$var{$c};
|
287 |
+
break;
|
288 |
+
|
289 |
+
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
|
290 |
+
// characters U-00000000 - U-0000007F (same as ASCII)
|
291 |
+
$ascii .= $var{$c};
|
292 |
+
break;
|
293 |
+
|
294 |
+
case (($ord_var_c & 0xE0) == 0xC0):
|
295 |
+
// characters U-00000080 - U-000007FF, mask 110XXXXX
|
296 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
297 |
+
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
|
298 |
+
$c += 1;
|
299 |
+
$utf16 = $this->utf82utf16($char);
|
300 |
+
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
301 |
+
break;
|
302 |
+
|
303 |
+
case (($ord_var_c & 0xF0) == 0xE0):
|
304 |
+
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
|
305 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
306 |
+
$char = pack('C*', $ord_var_c,
|
307 |
+
ord($var{$c + 1}),
|
308 |
+
ord($var{$c + 2}));
|
309 |
+
$c += 2;
|
310 |
+
$utf16 = $this->utf82utf16($char);
|
311 |
+
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
312 |
+
break;
|
313 |
+
|
314 |
+
case (($ord_var_c & 0xF8) == 0xF0):
|
315 |
+
// characters U-00010000 - U-001FFFFF, mask 11110XXX
|
316 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
317 |
+
$char = pack('C*', $ord_var_c,
|
318 |
+
ord($var{$c + 1}),
|
319 |
+
ord($var{$c + 2}),
|
320 |
+
ord($var{$c + 3}));
|
321 |
+
$c += 3;
|
322 |
+
$utf16 = $this->utf82utf16($char);
|
323 |
+
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
324 |
+
break;
|
325 |
+
|
326 |
+
case (($ord_var_c & 0xFC) == 0xF8):
|
327 |
+
// characters U-00200000 - U-03FFFFFF, mask 111110XX
|
328 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
329 |
+
$char = pack('C*', $ord_var_c,
|
330 |
+
ord($var{$c + 1}),
|
331 |
+
ord($var{$c + 2}),
|
332 |
+
ord($var{$c + 3}),
|
333 |
+
ord($var{$c + 4}));
|
334 |
+
$c += 4;
|
335 |
+
$utf16 = $this->utf82utf16($char);
|
336 |
+
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
337 |
+
break;
|
338 |
+
|
339 |
+
case (($ord_var_c & 0xFE) == 0xFC):
|
340 |
+
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
|
341 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
342 |
+
$char = pack('C*', $ord_var_c,
|
343 |
+
ord($var{$c + 1}),
|
344 |
+
ord($var{$c + 2}),
|
345 |
+
ord($var{$c + 3}),
|
346 |
+
ord($var{$c + 4}),
|
347 |
+
ord($var{$c + 5}));
|
348 |
+
$c += 5;
|
349 |
+
$utf16 = $this->utf82utf16($char);
|
350 |
+
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
351 |
+
break;
|
352 |
+
}
|
353 |
+
}
|
354 |
+
|
355 |
+
return '"'.$ascii.'"';
|
356 |
+
|
357 |
+
case 'array':
|
358 |
+
/*
|
359 |
+
* As per JSON spec if any array key is not an integer
|
360 |
+
* we must treat the the whole array as an object. We
|
361 |
+
* also try to catch a sparsely populated associative
|
362 |
+
* array with numeric keys here because some JS engines
|
363 |
+
* will create an array with empty indexes up to
|
364 |
+
* max_index which can cause memory issues and because
|
365 |
+
* the keys, which may be relevant, will be remapped
|
366 |
+
* otherwise.
|
367 |
+
*
|
368 |
+
* As per the ECMA and JSON specification an object may
|
369 |
+
* have any string as a property. Unfortunately due to
|
370 |
+
* a hole in the ECMA specification if the key is a
|
371 |
+
* ECMA reserved word or starts with a digit the
|
372 |
+
* parameter is only accessible using ECMAScript's
|
373 |
+
* bracket notation.
|
374 |
+
*/
|
375 |
+
|
376 |
+
// treat as a JSON object
|
377 |
+
if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
|
378 |
+
$properties = array_map(array($this, 'name_value'),
|
379 |
+
array_keys($var),
|
380 |
+
array_values($var));
|
381 |
+
|
382 |
+
foreach($properties as $property) {
|
383 |
+
if($this->isError($property)) {
|
384 |
+
return $property;
|
385 |
+
}
|
386 |
+
}
|
387 |
+
|
388 |
+
return '{' . join(',', $properties) . '}';
|
389 |
+
}
|
390 |
+
|
391 |
+
// treat it like a regular array
|
392 |
+
$elements = array_map(array($this, 'encode'), $var);
|
393 |
+
|
394 |
+
foreach($elements as $element) {
|
395 |
+
if($this->isError($element)) {
|
396 |
+
return $element;
|
397 |
+
}
|
398 |
+
}
|
399 |
+
|
400 |
+
return '[' . join(',', $elements) . ']';
|
401 |
+
|
402 |
+
case 'object':
|
403 |
+
$vars = get_object_vars($var);
|
404 |
+
|
405 |
+
$properties = array_map(array($this, 'name_value'),
|
406 |
+
array_keys($vars),
|
407 |
+
array_values($vars));
|
408 |
+
|
409 |
+
foreach($properties as $property) {
|
410 |
+
if($this->isError($property)) {
|
411 |
+
return $property;
|
412 |
+
}
|
413 |
+
}
|
414 |
+
|
415 |
+
return '{' . join(',', $properties) . '}';
|
416 |
+
|
417 |
+
default:
|
418 |
+
return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
|
419 |
+
? 'null'
|
420 |
+
: new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
|
421 |
+
}
|
422 |
+
}
|
423 |
+
|
424 |
+
/**
|
425 |
+
* array-walking function for use in generating JSON-formatted name-value pairs
|
426 |
+
*
|
427 |
+
* @param string $name name of key to use
|
428 |
+
* @param mixed $value reference to an array element to be encoded
|
429 |
+
*
|
430 |
+
* @return string JSON-formatted name-value pair, like '"name":value'
|
431 |
+
* @access private
|
432 |
+
*/
|
433 |
+
function name_value($name, $value)
|
434 |
+
{
|
435 |
+
$encoded_value = $this->encode($value);
|
436 |
+
|
437 |
+
if($this->isError($encoded_value)) {
|
438 |
+
return $encoded_value;
|
439 |
+
}
|
440 |
+
|
441 |
+
return $this->encode(strval($name)) . ':' . $encoded_value;
|
442 |
+
}
|
443 |
+
|
444 |
+
/**
|
445 |
+
* reduce a string by removing leading and trailing comments and whitespace
|
446 |
+
*
|
447 |
+
* @param $str string string value to strip of comments and whitespace
|
448 |
+
*
|
449 |
+
* @return string string value stripped of comments and whitespace
|
450 |
+
* @access private
|
451 |
+
*/
|
452 |
+
function reduce_string($str)
|
453 |
+
{
|
454 |
+
$str = preg_replace(array(
|
455 |
+
|
456 |
+
// eliminate single line comments in '// ...' form
|
457 |
+
'#^\s*//(.+)$#m',
|
458 |
+
|
459 |
+
// eliminate multi-line comments in '/* ... */' form, at start of string
|
460 |
+
'#^\s*/\*(.+)\*/#Us',
|
461 |
+
|
462 |
+
// eliminate multi-line comments in '/* ... */' form, at end of string
|
463 |
+
'#/\*(.+)\*/\s*$#Us'
|
464 |
+
|
465 |
+
), '', $str);
|
466 |
+
|
467 |
+
// eliminate extraneous space
|
468 |
+
return trim($str);
|
469 |
+
}
|
470 |
+
|
471 |
+
/**
|
472 |
+
* decodes a JSON string into appropriate variable
|
473 |
+
*
|
474 |
+
* @param string $str JSON-formatted string
|
475 |
+
*
|
476 |
+
* @return mixed number, boolean, string, array, or object
|
477 |
+
* corresponding to given JSON input string.
|
478 |
+
* See argument 1 to Services_JSON() above for object-output behavior.
|
479 |
+
* Note that decode() always returns strings
|
480 |
+
* in ASCII or UTF-8 format!
|
481 |
+
* @access public
|
482 |
+
*/
|
483 |
+
function decode($str)
|
484 |
+
{
|
485 |
+
$str = $this->reduce_string($str);
|
486 |
+
|
487 |
+
switch (strtolower($str)) {
|
488 |
+
case 'true':
|
489 |
+
return true;
|
490 |
+
|
491 |
+
case 'false':
|
492 |
+
return false;
|
493 |
+
|
494 |
+
case 'null':
|
495 |
+
return null;
|
496 |
+
|
497 |
+
default:
|
498 |
+
$m = array();
|
499 |
+
|
500 |
+
if (is_numeric($str)) {
|
501 |
+
// Lookie-loo, it's a number
|
502 |
+
|
503 |
+
// This would work on its own, but I'm trying to be
|
504 |
+
// good about returning integers where appropriate:
|
505 |
+
// return (float)$str;
|
506 |
+
|
507 |
+
// Return float or int, as appropriate
|
508 |
+
return ((float)$str == (integer)$str)
|
509 |
+
? (integer)$str
|
510 |
+
: (float)$str;
|
511 |
+
|
512 |
+
} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
|
513 |
+
// STRINGS RETURNED IN UTF-8 FORMAT
|
514 |
+
$delim = substr($str, 0, 1);
|
515 |
+
$chrs = substr($str, 1, -1);
|
516 |
+
$utf8 = '';
|
517 |
+
$strlen_chrs = strlen($chrs);
|
518 |
+
|
519 |
+
for ($c = 0; $c < $strlen_chrs; ++$c) {
|
520 |
+
|
521 |
+
$substr_chrs_c_2 = substr($chrs, $c, 2);
|
522 |
+
$ord_chrs_c = ord($chrs{$c});
|
523 |
+
|
524 |
+
switch (true) {
|
525 |
+
case $substr_chrs_c_2 == '\b':
|
526 |
+
$utf8 .= chr(0x08);
|
527 |
+
++$c;
|
528 |
+
break;
|
529 |
+
case $substr_chrs_c_2 == '\t':
|
530 |
+
$utf8 .= chr(0x09);
|
531 |
+
++$c;
|
532 |
+
break;
|
533 |
+
case $substr_chrs_c_2 == '\n':
|
534 |
+
$utf8 .= chr(0x0A);
|
535 |
+
++$c;
|
536 |
+
break;
|
537 |
+
case $substr_chrs_c_2 == '\f':
|
538 |
+
$utf8 .= chr(0x0C);
|
539 |
+
++$c;
|
540 |
+
break;
|
541 |
+
case $substr_chrs_c_2 == '\r':
|
542 |
+
$utf8 .= chr(0x0D);
|
543 |
+
++$c;
|
544 |
+
break;
|
545 |
+
|
546 |
+
case $substr_chrs_c_2 == '\\"':
|
547 |
+
case $substr_chrs_c_2 == '\\\'':
|
548 |
+
case $substr_chrs_c_2 == '\\\\':
|
549 |
+
case $substr_chrs_c_2 == '\\/':
|
550 |
+
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
|
551 |
+
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
|
552 |
+
$utf8 .= $chrs{++$c};
|
553 |
+
}
|
554 |
+
break;
|
555 |
+
|
556 |
+
case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
|
557 |
+
// single, escaped unicode character
|
558 |
+
$utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
|
559 |
+
. chr(hexdec(substr($chrs, ($c + 4), 2)));
|
560 |
+
$utf8 .= $this->utf162utf8($utf16);
|
561 |
+
$c += 5;
|
562 |
+
break;
|
563 |
+
|
564 |
+
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
|
565 |
+
$utf8 .= $chrs{$c};
|
566 |
+
break;
|
567 |
+
|
568 |
+
case ($ord_chrs_c & 0xE0) == 0xC0:
|
569 |
+
// characters U-00000080 - U-000007FF, mask 110XXXXX
|
570 |
+
//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
571 |
+
$utf8 .= substr($chrs, $c, 2);
|
572 |
+
++$c;
|
573 |
+
break;
|
574 |
+
|
575 |
+
case ($ord_chrs_c & 0xF0) == 0xE0:
|
576 |
+
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
|
577 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
578 |
+
$utf8 .= substr($chrs, $c, 3);
|
579 |
+
$c += 2;
|
580 |
+
break;
|
581 |
+
|
582 |
+
case ($ord_chrs_c & 0xF8) == 0xF0:
|
583 |
+
// characters U-00010000 - U-001FFFFF, mask 11110XXX
|
584 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
585 |
+
$utf8 .= substr($chrs, $c, 4);
|
586 |
+
$c += 3;
|
587 |
+
break;
|
588 |
+
|
589 |
+
case ($ord_chrs_c & 0xFC) == 0xF8:
|
590 |
+
// characters U-00200000 - U-03FFFFFF, mask 111110XX
|
591 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
592 |
+
$utf8 .= substr($chrs, $c, 5);
|
593 |
+
$c += 4;
|
594 |
+
break;
|
595 |
+
|
596 |
+
case ($ord_chrs_c & 0xFE) == 0xFC:
|
597 |
+
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
|
598 |
+
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
599 |
+
$utf8 .= substr($chrs, $c, 6);
|
600 |
+
$c += 5;
|
601 |
+
break;
|
602 |
+
|
603 |
+
}
|
604 |
+
|
605 |
+
}
|
606 |
+
|
607 |
+
return $utf8;
|
608 |
+
|
609 |
+
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
|
610 |
+
// array, or object notation
|
611 |
+
|
612 |
+
if ($str{0} == '[') {
|
613 |
+
$stk = array(SERVICES_JSON_IN_ARR);
|
614 |
+
$arr = array();
|
615 |
+
} else {
|
616 |
+
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
|
617 |
+
$stk = array(SERVICES_JSON_IN_OBJ);
|
618 |
+
$obj = array();
|
619 |
+
} else {
|
620 |
+
$stk = array(SERVICES_JSON_IN_OBJ);
|
621 |
+
$obj = new stdClass();
|
622 |
+
}
|
623 |
+
}
|
624 |
+
|
625 |
+
array_push($stk, array('what' => SERVICES_JSON_SLICE,
|
626 |
+
'where' => 0,
|
627 |
+
'delim' => false));
|
628 |
+
|
629 |
+
$chrs = substr($str, 1, -1);
|
630 |
+
$chrs = $this->reduce_string($chrs);
|
631 |
+
|
632 |
+
if ($chrs == '') {
|
633 |
+
if (reset($stk) == SERVICES_JSON_IN_ARR) {
|
634 |
+
return $arr;
|
635 |
+
|
636 |
+
} else {
|
637 |
+
return $obj;
|
638 |
+
|
639 |
+
}
|
640 |
+
}
|
641 |
+
|
642 |
+
//print("\nparsing {$chrs}\n");
|
643 |
+
|
644 |
+
$strlen_chrs = strlen($chrs);
|
645 |
+
|
646 |
+
for ($c = 0; $c <= $strlen_chrs; ++$c) {
|
647 |
+
|
648 |
+
$top = end($stk);
|
649 |
+
$substr_chrs_c_2 = substr($chrs, $c, 2);
|
650 |
+
|
651 |
+
if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
|
652 |
+
// found a comma that is not inside a string, array, etc.,
|
653 |
+
// OR we've reached the end of the character list
|
654 |
+
$slice = substr($chrs, $top['where'], ($c - $top['where']));
|
655 |
+
array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
|
656 |
+
//print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
657 |
+
|
658 |
+
if (reset($stk) == SERVICES_JSON_IN_ARR) {
|
659 |
+
// we are in an array, so just push an element onto the stack
|
660 |
+
array_push($arr, $this->decode($slice));
|
661 |
+
|
662 |
+
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
|
663 |
+
// we are in an object, so figure
|
664 |
+
// out the property name and set an
|
665 |
+
// element in an associative array,
|
666 |
+
// for now
|
667 |
+
$parts = array();
|
668 |
+
|
669 |
+
if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
|
670 |
+
// "name":value pair
|
671 |
+
$key = $this->decode($parts[1]);
|
672 |
+
$val = $this->decode($parts[2]);
|
673 |
+
|
674 |
+
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
|
675 |
+
$obj[$key] = $val;
|
676 |
+
} else {
|
677 |
+
$obj->$key = $val;
|
678 |
+
}
|
679 |
+
} elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
|
680 |
+
// name:value pair, where name is unquoted
|
681 |
+
$key = $parts[1];
|
682 |
+
$val = $this->decode($parts[2]);
|
683 |
+
|
684 |
+
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
|
685 |
+
$obj[$key] = $val;
|
686 |
+
} else {
|
687 |
+
$obj->$key = $val;
|
688 |
+
}
|
689 |
+
}
|
690 |
+
|
691 |
+
}
|
692 |
+
|
693 |
+
} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
|
694 |
+
// found a quote, and we are not inside a string
|
695 |
+
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
|
696 |
+
//print("Found start of string at {$c}\n");
|
697 |
+
|
698 |
+
} elseif (($chrs{$c} == $top['delim']) &&
|
699 |
+
($top['what'] == SERVICES_JSON_IN_STR) &&
|
700 |
+
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
|
701 |
+
// found a quote, we're in a string, and it's not escaped
|
702 |
+
// we know that it's not escaped becase there is _not_ an
|
703 |
+
// odd number of backslashes at the end of the string so far
|
704 |
+
array_pop($stk);
|
705 |
+
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
|
706 |
+
|
707 |
+
} elseif (($chrs{$c} == '[') &&
|
708 |
+
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
709 |
+
// found a left-bracket, and we are in an array, object, or slice
|
710 |
+
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
|
711 |
+
//print("Found start of array at {$c}\n");
|
712 |
+
|
713 |
+
} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
|
714 |
+
// found a right-bracket, and we're in an array
|
715 |
+
array_pop($stk);
|
716 |
+
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
717 |
+
|
718 |
+
} elseif (($chrs{$c} == '{') &&
|
719 |
+
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
720 |
+
// found a left-brace, and we are in an array, object, or slice
|
721 |
+
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
|
722 |
+
//print("Found start of object at {$c}\n");
|
723 |
+
|
724 |
+
} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
|
725 |
+
// found a right-brace, and we're in an object
|
726 |
+
array_pop($stk);
|
727 |
+
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
728 |
+
|
729 |
+
} elseif (($substr_chrs_c_2 == '/*') &&
|
730 |
+
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
731 |
+
// found a comment start, and we are in an array, object, or slice
|
732 |
+
array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
|
733 |
+
$c++;
|
734 |
+
//print("Found start of comment at {$c}\n");
|
735 |
+
|
736 |
+
} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
|
737 |
+
// found a comment end, and we're in one now
|
738 |
+
array_pop($stk);
|
739 |
+
$c++;
|
740 |
+
|
741 |
+
for ($i = $top['where']; $i <= $c; ++$i)
|
742 |
+
$chrs = substr_replace($chrs, ' ', $i, 1);
|
743 |
+
|
744 |
+
//print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
745 |
+
|
746 |
+
}
|
747 |
+
|
748 |
+
}
|
749 |
+
|
750 |
+
if (reset($stk) == SERVICES_JSON_IN_ARR) {
|
751 |
+
return $arr;
|
752 |
+
|
753 |
+
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
|
754 |
+
return $obj;
|
755 |
+
|
756 |
+
}
|
757 |
+
|
758 |
+
}
|
759 |
+
}
|
760 |
+
}
|
761 |
+
|
762 |
+
function isError($data, $code = null)
|
763 |
+
{
|
764 |
+
if (is_object($data) && (get_class($data) == 'services_json_error' ||
|
765 |
+
is_subclass_of($data, 'services_json_error'))) {
|
766 |
+
return true;
|
767 |
+
}
|
768 |
+
|
769 |
+
return false;
|
770 |
+
}
|
771 |
+
}
|
772 |
+
|
773 |
+
class Services_JSON_Error
|
774 |
+
{
|
775 |
+
function Services_JSON_Error($message = 'unknown error', $code = null,
|
776 |
+
$mode = null, $options = null, $userinfo = null)
|
777 |
+
{
|
778 |
+
|
779 |
+
}
|
780 |
+
}
|
781 |
+
|
782 |
+
?>
|
lib/createsend/class/transport.php
ADDED
@@ -0,0 +1,332 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
define('CS_REST_GET', 'GET');
|
4 |
+
define('CS_REST_POST', 'POST');
|
5 |
+
define('CS_REST_PUT', 'PUT');
|
6 |
+
define('CS_REST_DELETE', 'DELETE');
|
7 |
+
define('CS_REST_SOCKET_TIMEOUT', 10);
|
8 |
+
define('CS_REST_CALL_TIMEOUT', 10);
|
9 |
+
|
10 |
+
function CS_REST_TRANSPORT_get_available($requires_ssl, $log) {
|
11 |
+
if(function_exists('curl_init') && function_exists('curl_exec')) {
|
12 |
+
return new CS_REST_CurlTransport($log);
|
13 |
+
} else if(CS_REST_TRANSPORT_can_use_raw_socket($requires_ssl)) {
|
14 |
+
return new CS_REST_SocketTransport($log);
|
15 |
+
} else {
|
16 |
+
$log->log_message('No transport is available', __FUNCTION__, CS_REST_LOG_ERROR);
|
17 |
+
trigger_error('No transport is available.'.
|
18 |
+
($requires_ssl ? ' Try using non-secure (http) mode or ' : ' Please ').
|
19 |
+
'ensure the cURL extension is loaded', E_USER_ERROR);
|
20 |
+
}
|
21 |
+
}
|
22 |
+
function CS_REST_TRANSPORT_can_use_raw_socket($requires_ssl) {
|
23 |
+
if(function_exists('fsockopen')) {
|
24 |
+
if($requires_ssl) {
|
25 |
+
return extension_loaded('openssl');
|
26 |
+
}
|
27 |
+
|
28 |
+
return true;
|
29 |
+
}
|
30 |
+
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
class CS_REST_BaseTransport {
|
34 |
+
|
35 |
+
var $_log;
|
36 |
+
|
37 |
+
function CS_REST_BaseTransport($log) {
|
38 |
+
$this->_log = $log;
|
39 |
+
}
|
40 |
+
|
41 |
+
function split_and_inflate($response, $may_be_compressed) {
|
42 |
+
$ra = explode("\r\n\r\n", $response);
|
43 |
+
|
44 |
+
$result = array_pop($ra);
|
45 |
+
$headers = array_pop($ra);
|
46 |
+
|
47 |
+
if($may_be_compressed && preg_match('/^Content-Encoding:\s+gzip\s+$/im', $headers)) {
|
48 |
+
$original_length = strlen($response);
|
49 |
+
$result = gzinflate(substr($result, 10, -8));
|
50 |
+
|
51 |
+
$this->_log->log_message('Inflated gzipped response: '.$original_length.' bytes ->'.
|
52 |
+
strlen($result).' bytes', get_class(), CS_REST_LOG_VERBOSE);
|
53 |
+
}
|
54 |
+
|
55 |
+
return array($headers, $result);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
/**
|
59 |
+
* Provide HTTP request functionality via cURL extensions
|
60 |
+
*
|
61 |
+
* @author tobyb
|
62 |
+
* @since 1.0
|
63 |
+
*/
|
64 |
+
class CS_REST_CurlTransport extends CS_REST_BaseTransport {
|
65 |
+
|
66 |
+
var $_curl_zlib;
|
67 |
+
|
68 |
+
function CS_REST_CurlTransport($log) {
|
69 |
+
$this->CS_REST_BaseTransport($log);
|
70 |
+
|
71 |
+
$curl_version = curl_version();
|
72 |
+
$this->_curl_zlib = isset($curl_version['libz_version']);
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* @return string The type of transport used
|
77 |
+
*/
|
78 |
+
function get_type() {
|
79 |
+
return 'cURL';
|
80 |
+
}
|
81 |
+
|
82 |
+
function make_call($call_options) {
|
83 |
+
$ch = curl_init();
|
84 |
+
|
85 |
+
curl_setopt($ch, CURLOPT_URL, $call_options['route']);
|
86 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
87 |
+
curl_setopt($ch, CURLOPT_HEADER, true);
|
88 |
+
if (Mage::getStoreConfig('newsletter/campaignmonitor/proxy')){
|
89 |
+
curl_setopt($ch, CURLOPT_PROXY, Mage::getStoreConfig('newsletter/campaignmonitor/proxy'));
|
90 |
+
}
|
91 |
+
|
92 |
+
$headers = array();
|
93 |
+
$headers[] = 'Content-Type: '.$call_options['contentType'];
|
94 |
+
|
95 |
+
|
96 |
+
if (array_key_exists('authdetails', $call_options) &&
|
97 |
+
isset($call_options['authdetails'])) {
|
98 |
+
if (array_key_exists('username', $call_options['authdetails']) &&
|
99 |
+
array_key_exists('password', $call_options['authdetails'])) {
|
100 |
+
# Authenticating using basic auth for retrieving user's API key.
|
101 |
+
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
102 |
+
curl_setopt($ch, CURLOPT_USERPWD, $call_options['authdetails']['username'].':'.$call_options['authdetails']['password']);
|
103 |
+
} elseif (array_key_exists('access_token', $call_options['authdetails'])) {
|
104 |
+
# Authenticating using OAuth.
|
105 |
+
$access_token = $call_options['authdetails']['access_token'];
|
106 |
+
$headers[] = 'Authorization: Bearer '.$access_token;
|
107 |
+
} elseif (array_key_exists('api_key', $call_options['authdetails'])) {
|
108 |
+
# Authenticating using an API key.
|
109 |
+
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
110 |
+
$api_key = $call_options['authdetails']['api_key'];
|
111 |
+
curl_setopt($ch, CURLOPT_USERPWD, $api_key.':nopass');
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
curl_setopt($ch, CURLOPT_USERAGENT, $call_options['userAgent']);
|
116 |
+
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, CS_REST_SOCKET_TIMEOUT);
|
117 |
+
curl_setopt($ch, CURLOPT_TIMEOUT, CS_REST_CALL_TIMEOUT);
|
118 |
+
|
119 |
+
$inflate_response = false;
|
120 |
+
if($this->_curl_zlib) {
|
121 |
+
$this->_log->log_message('curl+zlib support available. Requesting gzipped response.',
|
122 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
123 |
+
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
|
124 |
+
} else if(function_exists('gzinflate')) {
|
125 |
+
$headers[] = 'Accept-Encoding: gzip';
|
126 |
+
$inflate_response = true;
|
127 |
+
}
|
128 |
+
|
129 |
+
if($call_options['protocol'] === 'https') {
|
130 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
|
131 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
|
132 |
+
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__).'/cacert.pem');
|
133 |
+
}
|
134 |
+
|
135 |
+
switch($call_options['method']) {
|
136 |
+
case CS_REST_PUT:
|
137 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, CS_REST_PUT);
|
138 |
+
$headers[] = 'Content-Length: '.strlen($call_options['data']);
|
139 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $call_options['data']);
|
140 |
+
break;
|
141 |
+
case CS_REST_POST:
|
142 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
143 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $call_options['data']);
|
144 |
+
break;
|
145 |
+
case CS_REST_DELETE:
|
146 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, CS_REST_DELETE);
|
147 |
+
break;
|
148 |
+
}
|
149 |
+
|
150 |
+
if(count($headers) > 0) {
|
151 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
152 |
+
}
|
153 |
+
|
154 |
+
$response = curl_exec($ch);
|
155 |
+
|
156 |
+
if(!$response && $response !== '') {
|
157 |
+
$this->_log->log_message('Error making request with curl_error: '.curl_errno($ch),
|
158 |
+
get_class($this), CS_REST_LOG_ERROR);
|
159 |
+
trigger_error('Error making request with curl_error: '.curl_error($ch), E_USER_ERROR);
|
160 |
+
}
|
161 |
+
|
162 |
+
list( $headers, $result ) = $this->split_and_inflate($response, $inflate_response);
|
163 |
+
|
164 |
+
$this->_log->log_message('API Call Info for '.$call_options['method'].' '.
|
165 |
+
curl_getinfo($ch, CURLINFO_EFFECTIVE_URL).': '.curl_getinfo($ch, CURLINFO_SIZE_UPLOAD).
|
166 |
+
' bytes uploaded. '.curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD).' bytes downloaded'.
|
167 |
+
' Total time (seconds): '.curl_getinfo($ch, CURLINFO_TOTAL_TIME),
|
168 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
169 |
+
|
170 |
+
$result = array(
|
171 |
+
'code' => curl_getinfo($ch, CURLINFO_HTTP_CODE),
|
172 |
+
'response' => $result
|
173 |
+
);
|
174 |
+
|
175 |
+
curl_close($ch);
|
176 |
+
|
177 |
+
return $result;
|
178 |
+
}
|
179 |
+
}
|
180 |
+
|
181 |
+
class CS_REST_SocketWrapper {
|
182 |
+
var $socket;
|
183 |
+
|
184 |
+
function open($domain, $port) {
|
185 |
+
$this->socket = fsockopen($domain, $port, $errno, $errstr, CS_REST_SOCKET_TIMEOUT);
|
186 |
+
|
187 |
+
if(!$this->socket) {
|
188 |
+
die('Error making request with '.$errno.': '.$errstr);
|
189 |
+
return false;
|
190 |
+
} else if(function_exists('stream_set_timeout')) {
|
191 |
+
stream_set_timeout($this->socket, CS_REST_SOCKET_TIMEOUT);
|
192 |
+
}
|
193 |
+
|
194 |
+
return true;
|
195 |
+
}
|
196 |
+
|
197 |
+
function write($data) {
|
198 |
+
fwrite($this->socket, $data);
|
199 |
+
}
|
200 |
+
|
201 |
+
function read() {
|
202 |
+
ob_start();
|
203 |
+
fpassthru($this->socket);
|
204 |
+
|
205 |
+
return ob_get_clean();
|
206 |
+
}
|
207 |
+
|
208 |
+
function close() {
|
209 |
+
fclose($this->socket);
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
+
class CS_REST_SocketTransport extends CS_REST_BaseTransport {
|
214 |
+
|
215 |
+
var $_socket_wrapper;
|
216 |
+
|
217 |
+
function CS_REST_SocketTransport($log, $socket_wrapper = NULL) {
|
218 |
+
$this->CS_REST_BaseTransport($log);
|
219 |
+
|
220 |
+
if(is_null($socket_wrapper)) {
|
221 |
+
$socket_wrapper = new CS_REST_SocketWrapper();
|
222 |
+
}
|
223 |
+
|
224 |
+
$this->_socket_wrapper = $socket_wrapper;
|
225 |
+
}
|
226 |
+
|
227 |
+
/**
|
228 |
+
* @return string The type of transport used
|
229 |
+
*/
|
230 |
+
function get_type() {
|
231 |
+
return 'Socket';
|
232 |
+
}
|
233 |
+
|
234 |
+
function make_call($call_options) {
|
235 |
+
$start_host = strpos($call_options['route'], $call_options['host']);
|
236 |
+
$host_len = strlen($call_options['host']);
|
237 |
+
|
238 |
+
$domain = substr($call_options['route'], $start_host, $host_len);
|
239 |
+
$host = $domain;
|
240 |
+
$path = substr($call_options['route'], $start_host + $host_len);
|
241 |
+
$protocol = substr($call_options['route'], 0, $start_host);
|
242 |
+
$port = 80;
|
243 |
+
|
244 |
+
$this->_log->log_message('Creating socket to '.$domain.' over '.$protocol.' for request to '.$path,
|
245 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
246 |
+
|
247 |
+
if($protocol === 'https://') {
|
248 |
+
$domain = 'ssl://'.$domain;
|
249 |
+
$port = 443;
|
250 |
+
}
|
251 |
+
|
252 |
+
if($this->_socket_wrapper->open($domain, $port)) {
|
253 |
+
$inflate_response = function_exists('gzinflate');
|
254 |
+
|
255 |
+
$request = $this->_build_request($call_options, $host, $path, $inflate_response);
|
256 |
+
$this->_log->log_message('Sending <pre>'.$request.'</pre> down the socket',
|
257 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
258 |
+
|
259 |
+
$this->_socket_wrapper->write($request);
|
260 |
+
$response = $this->_socket_wrapper->read();
|
261 |
+
$this->_socket_wrapper->close();
|
262 |
+
|
263 |
+
$this->_log->log_message('API Call Info for '.$call_options['method'].' '.
|
264 |
+
$call_options['route'].': '.strlen($request).
|
265 |
+
' bytes uploaded. '.strlen($response).' bytes downloaded',
|
266 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
267 |
+
|
268 |
+
list( $headers, $result ) = $this->split_and_inflate($response, $inflate_response);
|
269 |
+
|
270 |
+
$this->_log->log_message('Received headers <pre>'.$headers.'</pre>',
|
271 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
272 |
+
|
273 |
+
return array(
|
274 |
+
'code' => $this->_get_status_code($headers),
|
275 |
+
'response' => trim($result)
|
276 |
+
);
|
277 |
+
}
|
278 |
+
}
|
279 |
+
|
280 |
+
function _get_status_code($headers) {
|
281 |
+
if (preg_match('%^\s*HTTP/1\.1 (?P<code>\d{3})%', $headers, $regs)) {
|
282 |
+
$this->_log->log_message('Got HTTP Status Code: '.$regs['code'],
|
283 |
+
get_class($this), CS_REST_LOG_VERBOSE);
|
284 |
+
return $regs['code'];
|
285 |
+
}
|
286 |
+
|
287 |
+
$this->_log->log_message('Failed to get HTTP status code from request headers <pre>'.$headers.'</pre>',
|
288 |
+
get_class($this), CS_REST_LOG_ERROR);
|
289 |
+
trigger_error('Failed to get HTTP status code from request', E_USER_ERROR);
|
290 |
+
}
|
291 |
+
|
292 |
+
function _build_request($call_options, $host, $path, $accept_gzip) {
|
293 |
+
$request_auth_details = '';
|
294 |
+
|
295 |
+
if (array_key_exists('authdetails', $call_options)) {
|
296 |
+
if (array_key_exists('username', $call_options['authdetails']) &&
|
297 |
+
array_key_exists('password', $call_options['authdetails'])) {
|
298 |
+
# Authenticating using basic auth for retrieving user's API key.
|
299 |
+
$request_auth_details .= 'Authorization: Basic '.base64_encode($call_options['authdetails']['username'].':'.$call_options['authdetails']['password'])."\n";
|
300 |
+
} elseif (array_key_exists('access_token', $call_options['authdetails'])) {
|
301 |
+
# Authenticating using OAuth.
|
302 |
+
$access_token = $call_options['authdetails']['access_token'];
|
303 |
+
$request_auth_details .= 'Authorization: Bearer '.$access_token."\n";
|
304 |
+
} elseif (array_key_exists('api_key', $call_options['authdetails'])) {
|
305 |
+
# Authenticating using an API key.
|
306 |
+
$api_key = $call_options['authdetails']['api_key'];
|
307 |
+
$request_auth_details .= 'Authorization: Basic '.base64_encode($api_key.':nopass')."\n";
|
308 |
+
}
|
309 |
+
}
|
310 |
+
|
311 |
+
$request =
|
312 |
+
$call_options['method'].' '.$path." HTTP/1.1\n".
|
313 |
+
'Host: '.$host."\n".
|
314 |
+
$request_auth_details.
|
315 |
+
'User-Agent: '.$call_options['userAgent']."\n".
|
316 |
+
"Connection: Close\n".
|
317 |
+
'Content-Type: '.$call_options['contentType']."\n";
|
318 |
+
|
319 |
+
if($accept_gzip) {
|
320 |
+
$request .=
|
321 |
+
"Accept-Encoding: gzip\n";
|
322 |
+
}
|
323 |
+
|
324 |
+
if(isset($call_options['data'])) {
|
325 |
+
$request .=
|
326 |
+
'Content-Length: '.strlen($call_options['data'])."\n\n".
|
327 |
+
$call_options['data'];
|
328 |
+
}
|
329 |
+
|
330 |
+
return $request."\n\n";
|
331 |
+
}
|
332 |
+
}
|
lib/createsend/composer.json
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "campaignmonitor/createsend-php",
|
3 |
+
"type": "library",
|
4 |
+
"description": "A php library which implements the complete functionality of the Campaign Monitor API.",
|
5 |
+
"keywords": ["campaign", "monitor", "api"],
|
6 |
+
"homepage": "http://campaignmonitor.github.io/createsend-php/",
|
7 |
+
"license": "MIT",
|
8 |
+
"authors": [
|
9 |
+
{
|
10 |
+
"name": "Toby Brain",
|
11 |
+
"email": "tobio85@gmail.com",
|
12 |
+
"role": "Developer"
|
13 |
+
}
|
14 |
+
],
|
15 |
+
"require": {
|
16 |
+
"php": ">=5.3.0"
|
17 |
+
},
|
18 |
+
"require-dev": {
|
19 |
+
"lastcraft/simpletest": "~1.1"
|
20 |
+
},
|
21 |
+
"autoload": {
|
22 |
+
"classmap": [
|
23 |
+
"csrest_administrators.php",
|
24 |
+
"csrest_campaigns.php",
|
25 |
+
"csrest_clients.php",
|
26 |
+
"csrest_general.php",
|
27 |
+
"csrest_lists.php",
|
28 |
+
"csrest_people.php",
|
29 |
+
"csrest_segments.php",
|
30 |
+
"csrest_subscribers.php",
|
31 |
+
"csrest_templates.php"
|
32 |
+
]
|
33 |
+
}
|
34 |
+
}
|
lib/createsend/composer.lock
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_readme": [
|
3 |
+
"This file locks the dependencies of your project to a known state",
|
4 |
+
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
5 |
+
],
|
6 |
+
"hash": "eccad7521596b5fe0d81af51ab2f16a1",
|
7 |
+
"packages": [
|
8 |
+
|
9 |
+
],
|
10 |
+
"packages-dev": [
|
11 |
+
{
|
12 |
+
"name": "lastcraft/simpletest",
|
13 |
+
"version": "1.1.0",
|
14 |
+
"source": {
|
15 |
+
"type": "git",
|
16 |
+
"url": "https://github.com/lox/simpletest",
|
17 |
+
"reference": "1.1.0"
|
18 |
+
},
|
19 |
+
"dist": {
|
20 |
+
"type": "zip",
|
21 |
+
"url": "https://github.com/lox/simpletest/zipball/1.1.0",
|
22 |
+
"reference": "1.1.0",
|
23 |
+
"shasum": ""
|
24 |
+
},
|
25 |
+
"require": {
|
26 |
+
"php": ">=5.0.5"
|
27 |
+
},
|
28 |
+
"type": "library",
|
29 |
+
"notification-url": "https://packagist.org/downloads/",
|
30 |
+
"license": [
|
31 |
+
"LGPL-2.0+"
|
32 |
+
],
|
33 |
+
"authors": [
|
34 |
+
{
|
35 |
+
"name": "Marcus Baker",
|
36 |
+
"email": "marcus@lastcraft.com"
|
37 |
+
}
|
38 |
+
],
|
39 |
+
"description": "Unit testing, mock objects and web testing framework for PHP built around test cases.",
|
40 |
+
"homepage": "http://simpletest.org/",
|
41 |
+
"time": "2012-06-11 22:22:54"
|
42 |
+
}
|
43 |
+
],
|
44 |
+
"aliases": [
|
45 |
+
|
46 |
+
],
|
47 |
+
"minimum-stability": "stable",
|
48 |
+
"stability-flags": [
|
49 |
+
|
50 |
+
],
|
51 |
+
"platform": {
|
52 |
+
"php": ">=5.3.0"
|
53 |
+
},
|
54 |
+
"platform-dev": [
|
55 |
+
|
56 |
+
]
|
57 |
+
}
|
lib/createsend/csrest_administrators.php
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class to access the administrator resources from the create send API.
|
6 |
+
* This class includes functions to add and remove administrators,
|
7 |
+
* along with getting details for a single administrator
|
8 |
+
* @author pauld
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
class CS_REST_Administrators extends CS_REST_Wrapper_Base {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The base route of the people resource.
|
15 |
+
* @var string
|
16 |
+
* @access private
|
17 |
+
*/
|
18 |
+
var $_admins_base_route;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Constructor.
|
22 |
+
* @param $auth_details array Authentication details to use for API calls.
|
23 |
+
* This array must take one of the following forms:
|
24 |
+
* If using OAuth to authenticate:
|
25 |
+
* array(
|
26 |
+
* 'access_token' => 'your access token',
|
27 |
+
* 'refresh_token' => 'your refresh token')
|
28 |
+
*
|
29 |
+
* Or if using an API key:
|
30 |
+
* array('api_key' => 'your api key')
|
31 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
32 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
33 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
34 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
35 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
36 |
+
* @param $transport The transport to use. Used for dependency injection
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
function CS_REST_Administrators (
|
40 |
+
$auth_details,
|
41 |
+
$protocol = 'https',
|
42 |
+
$debug_level = CS_REST_LOG_NONE,
|
43 |
+
$host = 'api.createsend.com',
|
44 |
+
$log = NULL,
|
45 |
+
$serialiser = NULL,
|
46 |
+
$transport = NULL) {
|
47 |
+
|
48 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
49 |
+
$this->_admins_base_route = $this->_base_route.'admins';
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Adds a new administrator to the current account
|
54 |
+
* @param array $admin The administrator details to use during creation.
|
55 |
+
* This array should be of the form
|
56 |
+
* array (
|
57 |
+
* 'EmailAddress' => The new administrator email address
|
58 |
+
* 'Name' => The name of the new administrator
|
59 |
+
* )
|
60 |
+
* @access public
|
61 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
62 |
+
*/
|
63 |
+
function add($admin) {
|
64 |
+
return $this->post_request($this->_admins_base_route.'.json', $admin);
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Updates details for an existing administrator associated with the current account
|
69 |
+
* @param string $email The email address of the administrator to be updated
|
70 |
+
* @param array $admin The updated administrator details to use for the update.
|
71 |
+
* This array should be of the form
|
72 |
+
* array (
|
73 |
+
* 'EmailAddress' => The new email address
|
74 |
+
* 'Name' => The updated name of the administrator
|
75 |
+
* )
|
76 |
+
* @access public
|
77 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
78 |
+
*/
|
79 |
+
function update($email, $admin) {
|
80 |
+
return $this->put_request($this->_admins_base_route.'.json?email='.urlencode($email), $admin);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Gets the details for a specific administrator
|
85 |
+
* @access public
|
86 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
87 |
+
* {
|
88 |
+
* 'EmailAddress' => The email address of the administrator
|
89 |
+
* 'Name' => The name of the administrator
|
90 |
+
* 'Status' => The status of the administrator
|
91 |
+
* )
|
92 |
+
* }
|
93 |
+
*/
|
94 |
+
function get($email) {
|
95 |
+
return $this->get_request($this->_admins_base_route.'.json?email='.urlencode($email));
|
96 |
+
}
|
97 |
+
|
98 |
+
|
99 |
+
/**
|
100 |
+
* deletes the given administrator from the current account
|
101 |
+
* @param string $email The email address of the administrator to delete
|
102 |
+
* @access public
|
103 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
104 |
+
*/
|
105 |
+
function delete($email) {
|
106 |
+
return $this->delete_request($this->_admins_base_route.'.json?email='.urlencode($email));
|
107 |
+
}
|
108 |
+
}
|
lib/createsend/csrest_campaigns.php
ADDED
@@ -0,0 +1,439 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class to access a campaigns resources from the create send API.
|
6 |
+
* This class includes functions to create and send campaigns,
|
7 |
+
* along with accessing lists of campaign specific resources i.e reporting statistics
|
8 |
+
* @author tobyb
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
class CS_REST_Campaigns extends CS_REST_Wrapper_Base {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The base route of the campaigns resource.
|
15 |
+
* @var string
|
16 |
+
* @access private
|
17 |
+
*/
|
18 |
+
var $_campaigns_base_route;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Constructor.
|
22 |
+
* @param $campaign_id string The campaign id to access (Ignored for create requests)
|
23 |
+
* @param $auth_details array Authentication details to use for API calls.
|
24 |
+
* This array must take one of the following forms:
|
25 |
+
* If using OAuth to authenticate:
|
26 |
+
* array(
|
27 |
+
* 'access_token' => 'your access token',
|
28 |
+
* 'refresh_token' => 'your refresh token')
|
29 |
+
*
|
30 |
+
* Or if using an API key:
|
31 |
+
* array('api_key' => 'your api key')
|
32 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
33 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
34 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
35 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
36 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
37 |
+
* @param $transport The transport to use. Used for dependency injection
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
+
function CS_REST_Campaigns (
|
41 |
+
$campaign_id,
|
42 |
+
$auth_details,
|
43 |
+
$protocol = 'https',
|
44 |
+
$debug_level = CS_REST_LOG_NONE,
|
45 |
+
$host = 'api.createsend.com',
|
46 |
+
$log = NULL,
|
47 |
+
$serialiser = NULL,
|
48 |
+
$transport = NULL) {
|
49 |
+
|
50 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
51 |
+
$this->set_campaign_id($campaign_id);
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Change the campaign id used for calls after construction
|
56 |
+
* @param $campaign_id
|
57 |
+
* @access public
|
58 |
+
*/
|
59 |
+
function set_campaign_id($campaign_id) {
|
60 |
+
$this->_campaigns_base_route = $this->_base_route.'campaigns/'.$campaign_id.'/';
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Creates a new campaign based on the provided campaign info.
|
65 |
+
* At least on of the ListIDs and Segments parameters must be provided
|
66 |
+
* @param string $client_id The client to create the campaign for
|
67 |
+
* @param array $campaign_info The campaign information to use during creation.
|
68 |
+
* This array should be of the form
|
69 |
+
* array(
|
70 |
+
* 'Subject' => string required The campaign subject
|
71 |
+
* 'Name' => string required The campaign name
|
72 |
+
* 'FromName' => string required The From name for the campaign
|
73 |
+
* 'FromEmail' => string required The From address for the campaign
|
74 |
+
* 'ReplyTo' => string required The Reply-To address for the campaign
|
75 |
+
* 'HtmlUrl' => string required A url to download the campaign HTML from
|
76 |
+
* 'TextUrl' => string optional A url to download the campaign
|
77 |
+
* text version from. If not provided, text content will be
|
78 |
+
* automatically generated from HTML content.
|
79 |
+
* 'ListIDs' => array<string> optional An array of list ids to send the campaign to
|
80 |
+
* 'SegmentIDs' => array<string> optional An array of segment ids to send the campaign to.
|
81 |
+
* )
|
82 |
+
* @access public
|
83 |
+
* @return CS_REST_Wrapper_Result A successful response will be the ID of the newly created campaign
|
84 |
+
*/
|
85 |
+
function create($client_id, $campaign_info) {
|
86 |
+
return $this->post_request($this->_base_route.'campaigns/'.$client_id.'.json', $campaign_info);
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Creates a new campaign from a template based on the info provided.
|
91 |
+
* At least on of the ListIDs and Segments parameters must be provided
|
92 |
+
* @param string $client_id The client to create the campaign for
|
93 |
+
* @param array $campaign_info The campaign information to use during creation.
|
94 |
+
* This array should be of the form
|
95 |
+
* array(
|
96 |
+
* 'Subject' => string required The campaign subject
|
97 |
+
* 'Name' => string required The campaign name
|
98 |
+
* 'FromName' => string required The From name for the campaign
|
99 |
+
* 'FromEmail' => string required The From address for the campaign
|
100 |
+
* 'ReplyTo' => string required The Reply-To address for the campaign
|
101 |
+
* 'ListIDs' => array<string> optional An array of list ids to send the campaign to
|
102 |
+
* 'SegmentIDs' => array<string> optional An array of segment ids to send the campaign to
|
103 |
+
* 'TemplateID' => string required The ID of the template to use
|
104 |
+
* 'TemplateContent' => array required The content which will be used to fill the editable areas of the template
|
105 |
+
* )
|
106 |
+
* @access public
|
107 |
+
* @return CS_REST_Wrapper_Result A successful response will be the ID of the newly created campaign
|
108 |
+
*/
|
109 |
+
function create_from_template($client_id, $campaign_info) {
|
110 |
+
return $this->post_request($this->_base_route.'campaigns/'.$client_id.'/fromtemplate.json', $campaign_info);
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Sends a preview of an existing campaign to the specified recipients.
|
115 |
+
* @param array<string> $recipients The recipients to send the preview to.
|
116 |
+
* @param string $personalize How to personalize the campaign content. Valid options are:
|
117 |
+
* 'Random': Choose a random campaign recipient and use their personalisation data
|
118 |
+
* 'Fallback': Use the fallback terms specified in the campaign content
|
119 |
+
* @access public
|
120 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
121 |
+
*/
|
122 |
+
function send_preview($recipients, $personalize = 'Random') {
|
123 |
+
$preview_data = array(
|
124 |
+
'PreviewRecipients' => $recipients,
|
125 |
+
'Personalize' => $personalize
|
126 |
+
);
|
127 |
+
|
128 |
+
return $this->post_request($this->_campaigns_base_route.'sendpreview.json', $preview_data);
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Sends an existing campaign based on the scheduling information provided
|
133 |
+
* @param array $schedule The campaign scheduling information.
|
134 |
+
* This array should be of the form
|
135 |
+
* array (
|
136 |
+
* 'ConfirmationEmail' => string required The email address to send a confirmation email to,
|
137 |
+
* 'SendDate' => string required The date to send the campaign or 'immediately'.
|
138 |
+
* The date should be in the format 'y-M-d'
|
139 |
+
* )
|
140 |
+
* @access public
|
141 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
142 |
+
*/
|
143 |
+
function send($schedule) {
|
144 |
+
return $this->post_request($this->_campaigns_base_route.'send.json', $schedule);
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Unschedules the campaign, moving it back into the drafts. If the campaign has been sent or is
|
149 |
+
* in the process of sending, this api request will fail.
|
150 |
+
* @access public
|
151 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
152 |
+
*/
|
153 |
+
function unschedule() {
|
154 |
+
return $this->post_request($this->_campaigns_base_route.'unschedule.json', NULL);
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Deletes an existing campaign from the system
|
159 |
+
* @access public
|
160 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
161 |
+
*/
|
162 |
+
function delete() {
|
163 |
+
return $this->delete_request(trim($this->_campaigns_base_route, '/').'.json');
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Gets all email addresses on the current clients suppression list
|
168 |
+
* @param int $page_number The page number to get
|
169 |
+
* @param int $page_size The number of records per page
|
170 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'LIST')
|
171 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
172 |
+
* @access public
|
173 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
174 |
+
* {
|
175 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
176 |
+
* 'OrderDirection' => The order direction
|
177 |
+
* 'PageNumber' => The page number for the result set
|
178 |
+
* 'PageSize' => The page size used
|
179 |
+
* 'RecordsOnThisPage' => The number of records returned
|
180 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
181 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
182 |
+
* 'Results' => array(
|
183 |
+
* {
|
184 |
+
* 'EmailAddress' => The suppressed email address
|
185 |
+
* 'ListID' => The ID of the list this subscriber comes from
|
186 |
+
* }
|
187 |
+
* )
|
188 |
+
* }
|
189 |
+
*/
|
190 |
+
function get_recipients($page_number = NULL, $page_size = NULL, $order_field = NULL,
|
191 |
+
$order_direction = NULL) {
|
192 |
+
return $this->get_request_paged($this->_campaigns_base_route.'recipients.json', $page_number,
|
193 |
+
$page_size, $order_field, $order_direction, '?');
|
194 |
+
}
|
195 |
+
|
196 |
+
/**
|
197 |
+
* Gets all bounces recorded for a campaign
|
198 |
+
* @param string $since The date to start getting bounces from
|
199 |
+
* @param int $page_number The page number to get
|
200 |
+
* @param int $page_size The number of records per page
|
201 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'LIST', 'DATE')
|
202 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
203 |
+
* @access public
|
204 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
205 |
+
* {
|
206 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
207 |
+
* 'OrderDirection' => The order direction
|
208 |
+
* 'PageNumber' => The page number for the result set
|
209 |
+
* 'PageSize' => The page size used
|
210 |
+
* 'RecordsOnThisPage' => The number of records returned
|
211 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
212 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
213 |
+
* 'Results' => array(
|
214 |
+
* {
|
215 |
+
* 'EmailAddress' => The email that bounced
|
216 |
+
* 'ListID' => The ID of the list the subscriber was on
|
217 |
+
* 'BounceType' => The type of bounce
|
218 |
+
* 'Date' => The date the bounce message was received
|
219 |
+
* 'Reason' => The reason for the bounce
|
220 |
+
* }
|
221 |
+
* )
|
222 |
+
* }
|
223 |
+
* )
|
224 |
+
*/
|
225 |
+
function get_bounces($since = '', $page_number = NULL, $page_size = NULL, $order_field = NULL,
|
226 |
+
$order_direction = NULL) {
|
227 |
+
return $this->get_request_paged($this->_campaigns_base_route.'bounces.json?date='.urlencode($since),
|
228 |
+
$page_number, $page_size, $order_field, $order_direction);
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Gets the lists a campaign was sent to
|
233 |
+
* @access public
|
234 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
235 |
+
* {
|
236 |
+
* 'Lists' => array(
|
237 |
+
* {
|
238 |
+
* 'ListID' => The list id
|
239 |
+
* 'Name' => The list name
|
240 |
+
* }
|
241 |
+
* ),
|
242 |
+
* 'Segments' => array(
|
243 |
+
* {
|
244 |
+
* 'ListID' => The list id of the segment
|
245 |
+
* 'SegmentID' => The id of the segment
|
246 |
+
* 'Title' => The title of the segment
|
247 |
+
* }
|
248 |
+
* )
|
249 |
+
* }
|
250 |
+
*/
|
251 |
+
function get_lists_and_segments() {
|
252 |
+
return $this->get_request($this->_campaigns_base_route.'listsandsegments.json');
|
253 |
+
}
|
254 |
+
|
255 |
+
/**
|
256 |
+
* Gets a summary of all campaign reporting statistics
|
257 |
+
* @access public
|
258 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
259 |
+
* {
|
260 |
+
* 'Recipients' => The total recipients of the campaign
|
261 |
+
* 'TotalOpened' => The total number of opens recorded
|
262 |
+
* 'Clicks' => The total number of recorded clicks
|
263 |
+
* 'Unsubscribed' => The number of recipients who unsubscribed
|
264 |
+
* 'Bounced' => The number of recipients who bounced
|
265 |
+
* 'UniqueOpened' => The number of recipients who opened
|
266 |
+
* 'WebVersionURL' => The url of the web version of the campaign
|
267 |
+
* 'WebVersionTextURL' => The url of the web version of the text version of the campaign
|
268 |
+
* 'WorldviewURL' => The public Worldview URL for the campaign
|
269 |
+
* 'Forwards' => The number of times the campaign has been forwarded to a friend
|
270 |
+
* 'Likes' => The number of times the campaign has been 'liked' on Facebook
|
271 |
+
* 'Mentions' => The number of times the campaign has been tweeted about
|
272 |
+
* 'SpamComplaints' => The number of recipients who marked the campaign as spam
|
273 |
+
* }
|
274 |
+
*/
|
275 |
+
function get_summary() {
|
276 |
+
return $this->get_request($this->_campaigns_base_route.'summary.json');
|
277 |
+
}
|
278 |
+
|
279 |
+
/**
|
280 |
+
* Gets the email clients that subscribers used to open the campaign
|
281 |
+
* @access public
|
282 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
283 |
+
* array(
|
284 |
+
* {
|
285 |
+
* Client => The email client name
|
286 |
+
* Version => The email client version
|
287 |
+
* Percentage => The percentage of subscribers who used this email client
|
288 |
+
* Subscribers => The actual number of subscribers who used this email client
|
289 |
+
* }
|
290 |
+
* )
|
291 |
+
*/
|
292 |
+
function get_email_client_usage() {
|
293 |
+
return $this->get_request($this->_campaigns_base_route.'emailclientusage.json');
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Gets all opens recorded for a campaign since the provided date
|
298 |
+
* @param string $since The date to start getting opens from
|
299 |
+
* @param int $page_number The page number to get
|
300 |
+
* @param int $page_size The number of records per page
|
301 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'LIST', 'DATE')
|
302 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
303 |
+
* @access public
|
304 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
305 |
+
* {
|
306 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
307 |
+
* 'OrderDirection' => The order direction
|
308 |
+
* 'PageNumber' => The page number for the result set
|
309 |
+
* 'PageSize' => The page size used
|
310 |
+
* 'RecordsOnThisPage' => The number of records returned
|
311 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
312 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
313 |
+
* 'Results' => array(
|
314 |
+
* {
|
315 |
+
* 'EmailAddress' => The email address of the subscriber who opened
|
316 |
+
* 'ListID' => The list id of the list containing the subscriber
|
317 |
+
* 'Date' => The date of the open
|
318 |
+
* 'IPAddress' => The ip address where the open originated
|
319 |
+
* 'Latitude' => The geocoded latitude from the IP address
|
320 |
+
* 'Longitude' => The geocoded longitude from the IP address
|
321 |
+
* 'City' => The geocoded city from the IP address
|
322 |
+
* 'Region' => The geocoded region from the IP address
|
323 |
+
* 'CountryCode' => The geocoded two letter country code from the IP address
|
324 |
+
* 'CountryName' => The geocoded full country name from the IP address
|
325 |
+
* }
|
326 |
+
* )
|
327 |
+
* }
|
328 |
+
*/
|
329 |
+
function get_opens($since = '', $page_number = NULL, $page_size = NULL, $order_field = NULL,
|
330 |
+
$order_direction = NULL) {
|
331 |
+
return $this->get_request_paged($this->_campaigns_base_route.'opens.json?date='.urlencode($since),
|
332 |
+
$page_number, $page_size, $order_field, $order_direction);
|
333 |
+
}
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Gets all clicks recorded for a campaign since the provided date
|
337 |
+
* @param string $since The date to start getting clicks from
|
338 |
+
* @param int $page_number The page number to get
|
339 |
+
* @param int $page_size The number of records per page
|
340 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'LIST', 'DATE')
|
341 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
342 |
+
* @access public
|
343 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
344 |
+
* {
|
345 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
346 |
+
* 'OrderDirection' => The order direction
|
347 |
+
* 'PageNumber' => The page number for the result set
|
348 |
+
* 'PageSize' => The page size used
|
349 |
+
* 'RecordsOnThisPage' => The number of records returned
|
350 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
351 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
352 |
+
* 'Results' => array(
|
353 |
+
* {
|
354 |
+
* 'EmailAddress' => The email address of the subscriber who clicked
|
355 |
+
* 'ListID' => The list id of the list containing the subscriber
|
356 |
+
* 'Date' => The date of the click
|
357 |
+
* 'IPAddress' => The ip address where the click originated
|
358 |
+
* 'URL' => The url that the subscriber clicked on
|
359 |
+
* 'Latitude' => The geocoded latitude from the IP address
|
360 |
+
* 'Longitude' => The geocoded longitude from the IP address
|
361 |
+
* 'City' => The geocoded city from the IP address
|
362 |
+
* 'Region' => The geocoded region from the IP address
|
363 |
+
* 'CountryCode' => The geocoded two letter country code from the IP address
|
364 |
+
* 'CountryName' => The geocoded full country name from the IP address
|
365 |
+
* }
|
366 |
+
* )
|
367 |
+
* }
|
368 |
+
*/
|
369 |
+
function get_clicks($since = '', $page_number = NULL, $page_size = NULL, $order_field = NULL,
|
370 |
+
$order_direction = NULL) {
|
371 |
+
return $this->get_request_paged($this->_campaigns_base_route.'clicks.json?date='.urlencode($since),
|
372 |
+
$page_number, $page_size, $order_field, $order_direction);
|
373 |
+
}
|
374 |
+
|
375 |
+
/**
|
376 |
+
* Gets all unsubscribes recorded for a campaign since the provided date
|
377 |
+
* @param string $since The date to start getting unsubscribes from
|
378 |
+
* @param int $page_number The page number to get
|
379 |
+
* @param int $page_size The number of records per page
|
380 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'LIST', 'DATE')
|
381 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
382 |
+
* @access public
|
383 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
384 |
+
* {
|
385 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
386 |
+
* 'OrderDirection' => The order direction
|
387 |
+
* 'PageNumber' => The page number for the result set
|
388 |
+
* 'PageSize' => The page size used
|
389 |
+
* 'RecordsOnThisPage' => The number of records returned
|
390 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
391 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
392 |
+
* 'Results' => array(
|
393 |
+
* {
|
394 |
+
* 'EmailAddress' => The email address of the subscriber who unsubscribed
|
395 |
+
* 'ListID' => The list id of the list containing the subscriber
|
396 |
+
* 'Date' => The date of the unsubscribe
|
397 |
+
* 'IPAddress' => The ip address where the unsubscribe originated
|
398 |
+
* }
|
399 |
+
* )
|
400 |
+
* }
|
401 |
+
*/
|
402 |
+
function get_unsubscribes($since = '', $page_number = NULL, $page_size = NULL, $order_field = NULL,
|
403 |
+
$order_direction = NULL) {
|
404 |
+
return $this->get_request_paged($this->_campaigns_base_route.'unsubscribes.json?date='.urlencode($since),
|
405 |
+
$page_number, $page_size, $order_field, $order_direction);
|
406 |
+
}
|
407 |
+
|
408 |
+
/**
|
409 |
+
* Gets all spam complaints recorded for a campaign since the provided date
|
410 |
+
* @param string $since The date to start getting spam complaints from
|
411 |
+
* @param int $page_number The page number to get
|
412 |
+
* @param int $page_size The number of records per page
|
413 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'LIST', 'DATE')
|
414 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
415 |
+
* @access public
|
416 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
417 |
+
* {
|
418 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
419 |
+
* 'OrderDirection' => The order direction
|
420 |
+
* 'PageNumber' => The page number for the result set
|
421 |
+
* 'PageSize' => The page size used
|
422 |
+
* 'RecordsOnThisPage' => The number of records returned
|
423 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
424 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
425 |
+
* 'Results' => array(
|
426 |
+
* {
|
427 |
+
* 'EmailAddress' => The email address of the subscriber who unsubscribed
|
428 |
+
* 'ListID' => The list id of the list containing the subscriber
|
429 |
+
* 'Date' => The date of the unsubscribe
|
430 |
+
* }
|
431 |
+
* )
|
432 |
+
* }
|
433 |
+
*/
|
434 |
+
function get_spam($since = '', $page_number = NULL, $page_size = NULL, $order_field = NULL,
|
435 |
+
$order_direction = NULL) {
|
436 |
+
return $this->get_request_paged($this->_campaigns_base_route.'spam.json?date='.urlencode($since),
|
437 |
+
$page_number, $page_size, $order_field, $order_direction);
|
438 |
+
}
|
439 |
+
}
|
lib/createsend/csrest_clients.php
ADDED
@@ -0,0 +1,450 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class to access a clients resources from the create send API.
|
6 |
+
* This class includes functions to create and edit clients,
|
7 |
+
* along with accessing lists of client specific resources e.g campaigns
|
8 |
+
* @author tobyb
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
class CS_REST_Clients extends CS_REST_Wrapper_Base {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The base route of the clients resource.
|
15 |
+
* @var string
|
16 |
+
* @access private
|
17 |
+
*/
|
18 |
+
var $_clients_base_route;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Constructor.
|
22 |
+
* @param $client_id string The client id to access (Ignored for create requests)
|
23 |
+
* @param $auth_details array Authentication details to use for API calls.
|
24 |
+
* This array must take one of the following forms:
|
25 |
+
* If using OAuth to authenticate:
|
26 |
+
* array(
|
27 |
+
* 'access_token' => 'your access token',
|
28 |
+
* 'refresh_token' => 'your refresh token')
|
29 |
+
*
|
30 |
+
* Or if using an API key:
|
31 |
+
* array('api_key' => 'your api key')
|
32 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
33 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
34 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
35 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
36 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
37 |
+
* @param $transport The transport to use. Used for dependency injection
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
+
function CS_REST_Clients(
|
41 |
+
$client_id,
|
42 |
+
$auth_details,
|
43 |
+
$protocol = 'https',
|
44 |
+
$debug_level = CS_REST_LOG_NONE,
|
45 |
+
$host = 'api.createsend.com',
|
46 |
+
$log = NULL,
|
47 |
+
$serialiser = NULL,
|
48 |
+
$transport = NULL) {
|
49 |
+
|
50 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
51 |
+
$this->set_client_id($client_id);
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Change the client id used for calls after construction
|
56 |
+
* @param $client_id
|
57 |
+
* @access public
|
58 |
+
*/
|
59 |
+
function set_client_id($client_id) {
|
60 |
+
$this->_clients_base_route = $this->_base_route.'clients/'.$client_id.'/';
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Gets a list of sent campaigns for the current client
|
65 |
+
* @access public
|
66 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
67 |
+
* array(
|
68 |
+
* {
|
69 |
+
* 'WebVersionURL' => The web version url of the campaign
|
70 |
+
* 'WebVersionTextURL' => The web version url of the text version of the campaign
|
71 |
+
* 'CampaignID' => The id of the campaign
|
72 |
+
* 'Subject' => The campaign subject
|
73 |
+
* 'Name' => The name of the campaign
|
74 |
+
* 'FromName' => The from name for the campaign
|
75 |
+
* 'FromEmail' => The from email address for the campaign
|
76 |
+
* 'ReplyTo' => The reply to email address for the campaign
|
77 |
+
* 'SentDate' => The sent data of the campaign
|
78 |
+
* 'TotalRecipients' => The number of recipients of the campaign
|
79 |
+
* }
|
80 |
+
* )
|
81 |
+
*/
|
82 |
+
function get_campaigns() {
|
83 |
+
return $this->get_request($this->_clients_base_route.'campaigns.json');
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Gets a list of scheduled campaigns for the current client
|
88 |
+
* @access public
|
89 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
90 |
+
* array(
|
91 |
+
* {
|
92 |
+
* 'CampaignID' => The id of the campaign
|
93 |
+
* 'Name' => The name of the campaign
|
94 |
+
* 'Subject' => The subject of the campaign
|
95 |
+
* 'FromName' => The from name for the campaign
|
96 |
+
* 'FromEmail' => The from email address for the campaign
|
97 |
+
* 'ReplyTo' => The reply to email address for the campaign
|
98 |
+
* 'DateCreated' => The date the campaign was created
|
99 |
+
* 'PreviewURL' => The preview url of the campaign
|
100 |
+
* 'PreviewTextURL' => The preview url of the text version of the campaign
|
101 |
+
* 'DateScheduled' => The date the campaign is scheduled to be sent
|
102 |
+
* 'ScheduledTimeZone' => The time zone in which the campaign is scheduled to be sent at 'DateScheduled'
|
103 |
+
* }
|
104 |
+
* )
|
105 |
+
*/
|
106 |
+
function get_scheduled() {
|
107 |
+
return $this->get_request($this->_clients_base_route.'scheduled.json');
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Gets a list of draft campaigns for the current client
|
112 |
+
* @access public
|
113 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
114 |
+
* array(
|
115 |
+
* {
|
116 |
+
* 'CampaignID' => The id of the campaign
|
117 |
+
* 'Name' => The name of the campaign
|
118 |
+
* 'Subject' => The subject of the campaign
|
119 |
+
* 'FromName' => The from name for the campaign
|
120 |
+
* 'FromEmail' => The from email address for the campaign
|
121 |
+
* 'ReplyTo' => The reply to email address for the campaign
|
122 |
+
* 'DateCreated' => The date the campaign was created
|
123 |
+
* 'PreviewURL' => The preview url of the draft campaign
|
124 |
+
* 'PreviewTextURL' => The preview url of the text version of the campaign
|
125 |
+
* }
|
126 |
+
* )
|
127 |
+
*/
|
128 |
+
function get_drafts() {
|
129 |
+
return $this->get_request($this->_clients_base_route.'drafts.json');
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Gets all subscriber lists the current client has created
|
134 |
+
* @access public
|
135 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
136 |
+
* array(
|
137 |
+
* {
|
138 |
+
* 'ListID' => The id of the list
|
139 |
+
* 'Name' => The name of the list
|
140 |
+
* }
|
141 |
+
* )
|
142 |
+
*/
|
143 |
+
function get_lists() {
|
144 |
+
return $this->get_request($this->_clients_base_route.'lists.json');
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Gets the lists across a client to which a subscriber with a particular
|
149 |
+
* email address belongs.
|
150 |
+
* @param string $email_address Subscriber's email address.
|
151 |
+
* @access public
|
152 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
153 |
+
* array(
|
154 |
+
* {
|
155 |
+
* 'ListID' => The id of the list
|
156 |
+
* 'ListName' => The name of the list
|
157 |
+
* 'SubscriberState' => The state of the subscriber in the list
|
158 |
+
* 'DateSubscriberAdded' => The date the subscriber was added
|
159 |
+
* }
|
160 |
+
* )
|
161 |
+
*/
|
162 |
+
function get_lists_for_email($email_address) {
|
163 |
+
return $this->get_request($this->_clients_base_route .
|
164 |
+
'listsforemail.json?email='.urlencode($email_address));
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Gets all list segments the current client has created
|
169 |
+
* @access public
|
170 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
171 |
+
* array(
|
172 |
+
* {
|
173 |
+
* 'ListID' => The id of the list owning this segment
|
174 |
+
* 'SegmentID' => The id of this segment
|
175 |
+
* 'Title' => The title of this segment
|
176 |
+
* }
|
177 |
+
* )
|
178 |
+
*/
|
179 |
+
function get_segments() {
|
180 |
+
return $this->get_request($this->_clients_base_route.'segments.json');
|
181 |
+
}
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Gets all email addresses on the current client's suppression list
|
185 |
+
* @param int $page_number The page number to get
|
186 |
+
* @param int $page_size The number of records per page
|
187 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'DATE')
|
188 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
189 |
+
* @access public
|
190 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
191 |
+
* {
|
192 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
193 |
+
* 'OrderDirection' => The order direction
|
194 |
+
* 'PageNumber' => The page number for the result set
|
195 |
+
* 'PageSize' => The page size used
|
196 |
+
* 'RecordsOnThisPage' => The number of records returned
|
197 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
198 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
199 |
+
* 'Results' => array(
|
200 |
+
* {
|
201 |
+
* 'EmailAddress' => The suppressed email address
|
202 |
+
* 'Date' => The date the email was suppressed
|
203 |
+
* 'State' => The state of the suppressed email
|
204 |
+
* }
|
205 |
+
* )
|
206 |
+
* }
|
207 |
+
*/
|
208 |
+
function get_suppressionlist($page_number = NULL, $page_size = NULL, $order_field = NULL,
|
209 |
+
$order_direction = NULL) {
|
210 |
+
|
211 |
+
return $this->get_request_paged($this->_clients_base_route.'suppressionlist.json',
|
212 |
+
$page_number, $page_size, $order_field, $order_direction, '?');
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* Adds email addresses to a client's suppression list.
|
217 |
+
* @param array<string> $emails The email addresses to suppress.
|
218 |
+
* @access public
|
219 |
+
*/
|
220 |
+
function suppress($emails) {
|
221 |
+
$data = array('EmailAddresses' => $emails);
|
222 |
+
return $this->post_request($this->_clients_base_route.'suppress.json', $data);
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Unsuppresses an email address by removing it from the the client's
|
227 |
+
* suppression list.
|
228 |
+
* @param string $email The email address to be unsuppressed
|
229 |
+
* @access public
|
230 |
+
*/
|
231 |
+
function unsuppress($email) {
|
232 |
+
return $this->put_request($this->_clients_base_route.'unsuppress.json?email=' . urlencode($email), '');
|
233 |
+
}
|
234 |
+
|
235 |
+
/**
|
236 |
+
* Gets all templates the current client has access to
|
237 |
+
* @access public
|
238 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
239 |
+
* array(
|
240 |
+
* {
|
241 |
+
* 'TemplateID' => The id of the template
|
242 |
+
* 'Name' => The name of the template
|
243 |
+
* 'PreviewURL' => The url to preview the template from
|
244 |
+
* 'ScreenshotURL' => The url of the template screenshot
|
245 |
+
* }
|
246 |
+
* )
|
247 |
+
*/
|
248 |
+
function get_templates() {
|
249 |
+
return $this->get_request($this->_clients_base_route.'templates.json');
|
250 |
+
}
|
251 |
+
|
252 |
+
/**
|
253 |
+
* Gets all templates the current client has access to
|
254 |
+
* @access public
|
255 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
256 |
+
* {
|
257 |
+
* 'ApiKey' => The clients API Key, THIS IS NOT THE CLIENT ID
|
258 |
+
* 'BasicDetails' =>
|
259 |
+
* {
|
260 |
+
* 'ClientID' => The id of the client
|
261 |
+
* 'CompanyName' => The company name of the client
|
262 |
+
* 'ContactName' => The contact name of the client
|
263 |
+
* 'EmailAddress' => The clients contact email address
|
264 |
+
* 'Country' => The clients country
|
265 |
+
* 'TimeZone' => The clients timezone
|
266 |
+
* }
|
267 |
+
* 'BillingDetails' =>
|
268 |
+
* If on monthly billing
|
269 |
+
* {
|
270 |
+
* 'CurrentTier' => The current monthly tier the client sits in
|
271 |
+
* 'CurrentMonthlyRate' => The current pricing rate the client pays per month
|
272 |
+
* 'MarkupPercentage' => The percentage markup applied to the base rates
|
273 |
+
* 'Currency' => The currency paid in
|
274 |
+
* 'ClientPays' => Whether the client pays for themselves,
|
275 |
+
* 'MonthlyScheme' => Basic or Unlimited
|
276 |
+
* }
|
277 |
+
* If paying per campaign
|
278 |
+
* {
|
279 |
+
* 'CanPurchaseCredits' => Whether the client can purchase credits
|
280 |
+
* 'Credits' => The number of credits belonging to the client
|
281 |
+
* 'BaseDeliveryFee' => The base fee payable per campaign
|
282 |
+
* 'BaseRatePerRecipient' => The base fee payable per campaign recipient
|
283 |
+
* 'BaseDesignSpamTestRate' => The base fee payable per design and spam test
|
284 |
+
* 'MarkupOnDelivery' => The markup applied per campaign
|
285 |
+
* 'MarkupPerRecipient' => The markup applied per campaign recipient
|
286 |
+
* 'MarkupOnDesignSpamTest' => The markup applied per design and spam test
|
287 |
+
* 'Currency' => The currency fees are paid in
|
288 |
+
* 'ClientPays' => Whether client client pays for themselves
|
289 |
+
* }
|
290 |
+
* }
|
291 |
+
*/
|
292 |
+
function get() {
|
293 |
+
return $this->get_request(trim($this->_clients_base_route, '/').'.json');
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Deletes an existing client from the system
|
298 |
+
* @access public
|
299 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
300 |
+
*/
|
301 |
+
function delete() {
|
302 |
+
return $this->delete_request(trim($this->_clients_base_route, '/').'.json');
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Creates a new client based on the provided information
|
307 |
+
* @param array $client Basic information of the new client.
|
308 |
+
* This should be an array of the form
|
309 |
+
* array(
|
310 |
+
* 'CompanyName' => The company name of the client
|
311 |
+
* 'Country' => The clients country
|
312 |
+
* 'TimeZone' => The clients timezone
|
313 |
+
* )
|
314 |
+
* @access public
|
315 |
+
* @return CS_REST_Wrapper_Result A successful response will be the ID of the newly created client
|
316 |
+
*/
|
317 |
+
function create($client) {
|
318 |
+
if(isset($client['ContactName'])) {
|
319 |
+
trigger_error('[DEPRECATION] Use Person->add to set name on a new person in a client. For now, we will create a default person with the name provided.', E_USER_NOTICE);
|
320 |
+
}
|
321 |
+
if(isset($client['EmailAddress'])) {
|
322 |
+
trigger_error('[DEPRECATION] Use Person->add to set email on a new person in a client. For now, we will create a default person with the email provided.', E_USER_NOTICE);
|
323 |
+
}
|
324 |
+
return $this->post_request($this->_base_route.'clients.json', $client);
|
325 |
+
}
|
326 |
+
|
327 |
+
/**
|
328 |
+
* Updates the basic information for a client
|
329 |
+
* @param array $client_basics Basic information of the client.
|
330 |
+
* This should be an array of the form
|
331 |
+
* array(
|
332 |
+
* 'CompanyName' => The company name of the client
|
333 |
+
* 'Country' => The clients country
|
334 |
+
* 'TimeZone' => The clients timezone
|
335 |
+
* )
|
336 |
+
* @access public
|
337 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
338 |
+
*/
|
339 |
+
function set_basics($client_basics) {
|
340 |
+
if(isset($client['ContactName'])) {
|
341 |
+
trigger_error('[DEPRECATION] Use person->update to set name on a particular person in a client. For now, we will update the default person with the name provided.', E_USER_NOTICE);
|
342 |
+
}
|
343 |
+
if(isset($client['EmailAddress'])) {
|
344 |
+
trigger_error('[DEPRECATION] Use person->update to set email on a particular person in a client. For now, we will update the default person with the email address provided.', E_USER_NOTICE);
|
345 |
+
}
|
346 |
+
return $this->put_request($this->_clients_base_route.'setbasics.json', $client_basics);
|
347 |
+
}
|
348 |
+
|
349 |
+
/**
|
350 |
+
* Updates the billing details of the current client, setting the client to the payg billing model
|
351 |
+
* For clients not set to pay themselves then all fields below ClientPays are ignored
|
352 |
+
* All Markup fields are optional
|
353 |
+
* @param array $client_billing Payg billing details of the client.
|
354 |
+
* This should be an array of the form
|
355 |
+
* array(
|
356 |
+
* 'Currency' => The currency fees are paid in
|
357 |
+
* 'ClientPays' => Whether client client pays for themselves
|
358 |
+
* 'MarkupPercentage' => Can be used to set the percentage markup for all unset fees
|
359 |
+
* 'CanPurchaseCredits' => Whether the client can purchase credits
|
360 |
+
* 'MarkupOnDelivery' => The markup applied per campaign
|
361 |
+
* 'MarkupPerRecipient' => The markup applied per campaign recipient
|
362 |
+
* 'MarkupOnDesignSpamTest' => The markup applied per design and spam test
|
363 |
+
* )
|
364 |
+
* @access public
|
365 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
366 |
+
*/
|
367 |
+
function set_payg_billing($client_billing) {
|
368 |
+
return $this->put_request($this->_clients_base_route.'setpaygbilling.json', $client_billing);
|
369 |
+
}
|
370 |
+
|
371 |
+
/**
|
372 |
+
* Updates the billing details of the current client, setting the client to the monthly billing model
|
373 |
+
* For clients not set to pay themselves then the markup percentage field is ignored
|
374 |
+
* @param array $client_billing Payg billing details of the client.
|
375 |
+
* This should be an array of the form
|
376 |
+
* array(
|
377 |
+
* 'Currency' => The currency fees are paid in
|
378 |
+
* 'ClientPays' => Whether client client pays for themselves
|
379 |
+
* 'MarkupPercentage' => Sets the percentage markup used for all monthly tiers
|
380 |
+
* )
|
381 |
+
* @access public
|
382 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
383 |
+
*/
|
384 |
+
function set_monthly_billing($client_billing) {
|
385 |
+
return $this->put_request($this->_clients_base_route.'setmonthlybilling.json', $client_billing);
|
386 |
+
}
|
387 |
+
|
388 |
+
/**
|
389 |
+
* Transfer credits to or from this client.
|
390 |
+
*
|
391 |
+
* @param array $transfer_data Details for the credit transfer. This array
|
392 |
+
* should be of the form:
|
393 |
+
* array(
|
394 |
+
* 'Credits' => An in representing the number of credits to transfer.
|
395 |
+
* This value may be either positive if you want to allocate credits
|
396 |
+
* from your account to the client, or negative if you want to
|
397 |
+
* deduct credits from the client back into your account.
|
398 |
+
* 'CanUseMyCreditsWhenTheyRunOut' => A boolean value which if set
|
399 |
+
* to true, will allow the client to continue sending using your
|
400 |
+
* credits or payment details once they run out of credits, and if
|
401 |
+
* set to false, will prevent the client from using your credits to
|
402 |
+
* continue sending until you allocate more credits to them.
|
403 |
+
* )
|
404 |
+
* @access public
|
405 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object
|
406 |
+
* of the form:
|
407 |
+
* {
|
408 |
+
* 'AccountCredits' => Integer representing credits in your account now
|
409 |
+
* 'ClientCredits' => Integer representing credits in this client's
|
410 |
+
* account now
|
411 |
+
* }
|
412 |
+
*/
|
413 |
+
function transfer_credits($transfer_data) {
|
414 |
+
return $this->post_request($this->_clients_base_route.'credits.json',
|
415 |
+
$transfer_data);
|
416 |
+
}
|
417 |
+
|
418 |
+
/**
|
419 |
+
* returns the people associated with this client.
|
420 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
421 |
+
* array({
|
422 |
+
* 'EmailAddress' => the email address of the person
|
423 |
+
* 'Name' => the name of the person
|
424 |
+
* 'AccessLevel' => the access level of the person
|
425 |
+
* 'Status' => the status of the person
|
426 |
+
* })
|
427 |
+
*/
|
428 |
+
function get_people() {
|
429 |
+
return $this->get_request($this->_clients_base_route.'people.json');
|
430 |
+
}
|
431 |
+
|
432 |
+
/**
|
433 |
+
* retrieves the email address of the primary contact for this client
|
434 |
+
* @return CS_REST_Wrapper_Result a successful response will be an array in the form:
|
435 |
+
* array('EmailAddress'=> email address of primary contact)
|
436 |
+
*/
|
437 |
+
function get_primary_contact() {
|
438 |
+
return $this->get_request($this->_clients_base_route.'primarycontact.json');
|
439 |
+
}
|
440 |
+
|
441 |
+
/**
|
442 |
+
* assigns the primary contact for this client to the person with the specified email address
|
443 |
+
* @param string $emailAddress the email address of the person designated to be the primary contact
|
444 |
+
* @return CS_REST_Wrapper_Result a successful response will be an array in the form:
|
445 |
+
* array('EmailAddress'=> email address of primary contact)
|
446 |
+
*/
|
447 |
+
function set_primary_contact($emailAddress) {
|
448 |
+
return $this->put_request($this->_clients_base_route.'primarycontact.json?email=' . urlencode($emailAddress), '');
|
449 |
+
}
|
450 |
+
}
|
lib/createsend/csrest_general.php
ADDED
@@ -0,0 +1,229 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class to access general resources from the create send API.
|
7 |
+
* @author tobyb
|
8 |
+
*
|
9 |
+
*/
|
10 |
+
class CS_REST_General extends CS_REST_Wrapper_Base {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Get the authorization URL for your application, given the application's
|
14 |
+
* Client ID, Client Secret, Redirect URI, Scope, and optional state data.
|
15 |
+
*
|
16 |
+
* @param $client_id int The Client ID of your registered OAuth application.
|
17 |
+
* @param $redirect_uri string The Redirect URI of your registered OAuth application.
|
18 |
+
* @param $scope string The comma-separated permission scope your application requires.
|
19 |
+
* See http://www.campaignmonitor.com/api/getting-started/#authenticating_with_oauth for details.
|
20 |
+
* @param $state string Optional state data to be included in the URL.
|
21 |
+
* @return string The authorization URL to which users of your application should be redirected.
|
22 |
+
* @access public
|
23 |
+
**/
|
24 |
+
public static function authorize_url(
|
25 |
+
$client_id, $redirect_uri, $scope, $state = NULL) {
|
26 |
+
$qs = "client_id=".urlencode($client_id);
|
27 |
+
$qs .= "&redirect_uri=".urlencode($redirect_uri);
|
28 |
+
$qs .= "&scope=".urlencode($scope);
|
29 |
+
if ($state) {
|
30 |
+
$qs .= "&state=".urlencode($state);
|
31 |
+
}
|
32 |
+
return CS_OAUTH_BASE_URI.'?'.$qs;
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Exchange a provided OAuth code for an OAuth access token, 'expires in'
|
37 |
+
* value and refresh token.
|
38 |
+
*
|
39 |
+
* @param $client_id int The Client ID of your registered OAuth application.
|
40 |
+
* @param $client_secret string The Client Secret of your registered OAuth application.
|
41 |
+
* @param $redirect_uri string The Redirect URI of your registered OAuth application.
|
42 |
+
* @param $code string The unique OAuth code to be exchanged for an access token.
|
43 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
44 |
+
* {
|
45 |
+
* 'access_token' => The access token to use for API calls
|
46 |
+
* 'expires_in' => The number of seconds until this access token expires
|
47 |
+
* 'refresh_token' => The refresh token to refresh the access token once it expires
|
48 |
+
* }
|
49 |
+
* @access public
|
50 |
+
**/
|
51 |
+
public static function exchange_token(
|
52 |
+
$client_id, $client_secret, $redirect_uri, $code) {
|
53 |
+
|
54 |
+
$body = "grant_type=authorization_code";
|
55 |
+
$body .= "&client_id=".urlencode($client_id);
|
56 |
+
$body .= "&client_secret=".urlencode($client_secret);
|
57 |
+
$body .= "&redirect_uri=".urlencode($redirect_uri);
|
58 |
+
$body .= "&code=".urlencode($code);
|
59 |
+
|
60 |
+
$options = array('contentType' => 'application/x-www-form-urlencoded');
|
61 |
+
|
62 |
+
$wrap = new CS_REST_Wrapper_Base(
|
63 |
+
NULL, 'https', CS_REST_LOG_NONE, CS_HOST, NULL,
|
64 |
+
new CS_REST_DoNothingSerialiser(), NULL);
|
65 |
+
|
66 |
+
return $wrap->post_request(CS_OAUTH_TOKEN_URI, $body, $options);
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Constructor.
|
71 |
+
* @param $auth_details array Authentication details to use for API calls.
|
72 |
+
* This array must take one of the following forms:
|
73 |
+
* If using OAuth to authenticate:
|
74 |
+
* array(
|
75 |
+
* 'access_token' => 'your access token',
|
76 |
+
* 'refresh_token' => 'your refresh token')
|
77 |
+
*
|
78 |
+
* Or if using an API key:
|
79 |
+
* array('api_key' => 'your api key')
|
80 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
81 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
82 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
83 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
84 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
85 |
+
* @param $transport The transport to use. Used for dependency injection
|
86 |
+
* @access public
|
87 |
+
*/
|
88 |
+
function CS_REST_Wrapper_Base(
|
89 |
+
$auth_details,
|
90 |
+
$protocol = 'https',
|
91 |
+
$debug_level = CS_REST_LOG_NONE,
|
92 |
+
$host = 'api.createsend.com',
|
93 |
+
$log = NULL,
|
94 |
+
$serialiser = NULL,
|
95 |
+
$transport = NULL) {
|
96 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Gets an array of valid timezones
|
101 |
+
* @access public
|
102 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
103 |
+
* array<string>(timezones)
|
104 |
+
*/
|
105 |
+
function get_timezones() {
|
106 |
+
return $this->get_request($this->_base_route.'timezones.json');
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Gets the current date in your accounts timezone
|
111 |
+
* @access public
|
112 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
113 |
+
* {
|
114 |
+
* 'SystemDate' => string The current system date in your accounts timezone
|
115 |
+
* }
|
116 |
+
*/
|
117 |
+
function get_systemdate() {
|
118 |
+
return $this->get_request($this->_base_route.'systemdate.json');
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Gets an array of valid countries
|
123 |
+
* @access public
|
124 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
125 |
+
* array<string>(countries)
|
126 |
+
*/
|
127 |
+
function get_countries() {
|
128 |
+
return $this->get_request($this->_base_route.'countries.json');
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Gets your API key
|
133 |
+
* @param string $username Your username
|
134 |
+
* @param string $password Your password
|
135 |
+
* @param string $site_url The url you use to login from
|
136 |
+
* @access public
|
137 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
138 |
+
* {
|
139 |
+
* 'ApiKey' => string Your api key
|
140 |
+
* }
|
141 |
+
*/
|
142 |
+
function get_apikey($username, $password, $site_url) {
|
143 |
+
return $this->get_request($this->_base_route.'apikey.json?siteurl='.$site_url,
|
144 |
+
array('authdetails' => array('username' => $username, 'password' => $password))
|
145 |
+
);
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Gets an array of clients
|
150 |
+
* @access public
|
151 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
152 |
+
* array(
|
153 |
+
* {
|
154 |
+
* 'ClientID' => The clients API ID,
|
155 |
+
* 'Name' => The clients name
|
156 |
+
* }
|
157 |
+
* )
|
158 |
+
*/
|
159 |
+
function get_clients() {
|
160 |
+
return $this->get_request($this->_base_route.'clients.json');
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* Gets your billing details.
|
165 |
+
* @access public
|
166 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
167 |
+
* {
|
168 |
+
* 'Credits' => The number of credits belonging to the account
|
169 |
+
* }
|
170 |
+
*/
|
171 |
+
function get_billing_details() {
|
172 |
+
return $this->get_request($this->_base_route.'billingdetails.json');
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Gets an array of administrators
|
177 |
+
* @access public
|
178 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
179 |
+
* array(
|
180 |
+
* {
|
181 |
+
* 'EmailAddress' => The administrators email address
|
182 |
+
* 'Name' => The administrators name
|
183 |
+
* 'Status' => The administrators status
|
184 |
+
* }
|
185 |
+
* )
|
186 |
+
*/
|
187 |
+
function get_administrators() {
|
188 |
+
return $this->get_request($this->_base_route.'admins.json');
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Retrieves the email address of the primary contact for this account
|
193 |
+
* @return CS_REST_Wrapper_Result a successful response will be an array in the form:
|
194 |
+
* array('EmailAddress'=> email address of primary contact)
|
195 |
+
*/
|
196 |
+
function get_primary_contact() {
|
197 |
+
return $this->get_request($this->_base_route.'primarycontact.json');
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Assigns the primary contact for this account to the administrator with the specified email address
|
202 |
+
* @param $emailAddress string The email address of the administrator designated to be the primary contact
|
203 |
+
* @return CS_REST_Wrapper_Result a successful response will be an array in the form:
|
204 |
+
* array('EmailAddress'=> email address of primary contact)
|
205 |
+
*/
|
206 |
+
function set_primary_contact($emailAddress) {
|
207 |
+
return $this->put_request($this->_base_route.'primarycontact.json?email=' . urlencode($emailAddress), '');
|
208 |
+
}
|
209 |
+
|
210 |
+
/**
|
211 |
+
* Get a URL which initiates a new external session for the user with the given email.
|
212 |
+
* Full details: http://www.campaignmonitor.com/api/account/#single_sign_on
|
213 |
+
*
|
214 |
+
* @param $session_options array Options for initiating the external login session.
|
215 |
+
* This should be an array of the form:
|
216 |
+
* array(
|
217 |
+
* 'Email' => 'The email address of the Campaign Monitor user for whom the login session should be created',
|
218 |
+
* 'Chrome' => 'Which 'chrome' to display - Must be either "all", "tabs", or "none"',
|
219 |
+
* 'Url' => 'The URL to display once logged in. e.g. "/subscribers/"',
|
220 |
+
* 'IntegratorID' => 'The Integrator ID. You need to contact Campaign Monitor support to get an Integrator ID.',
|
221 |
+
* 'ClientID' => 'The Client ID of the client which should be active once logged in to the Campaign Monitor account.' )
|
222 |
+
*
|
223 |
+
* @return CS_REST_Wrapper_Result A successful response will be an array of the form:
|
224 |
+
* array('SessionUrl'=> 'https://external1.createsend.com/cd/create/ABCDEF12/DEADBEEF?url=FEEDDAD1')
|
225 |
+
*/
|
226 |
+
function external_session_url($session_options) {
|
227 |
+
return $this->put_request($this->_base_route.'externalsession.json', $session_options);
|
228 |
+
}
|
229 |
+
}
|
lib/createsend/csrest_lists.php
ADDED
@@ -0,0 +1,587 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
define('CS_REST_CUSTOM_FIELD_TYPE_TEXT', 'Text');
|
5 |
+
define('CS_REST_CUSTOM_FIELD_TYPE_NUMBER', 'Number');
|
6 |
+
define('CS_REST_CUSTOM_FIELD_TYPE_MULTI_SELECTONE', 'MultiSelectOne');
|
7 |
+
define('CS_REST_CUSTOM_FIELD_TYPE_MULTI_SELECTMANY', 'MultiSelectMany');
|
8 |
+
define('CS_REST_CUSTOM_FIELD_TYPE_DATE', 'Date');
|
9 |
+
define('CS_REST_CUSTOM_FIELD_TYPE_COUNTRY', 'Country');
|
10 |
+
define('CS_REST_CUSTOM_FIELD_TYPE_USSTATE', 'USState');
|
11 |
+
|
12 |
+
define('CS_REST_LIST_WEBHOOK_SUBSCRIBE', 'Subscribe');
|
13 |
+
define('CS_REST_LIST_WEBHOOK_DEACTIVATE', 'Deactivate');
|
14 |
+
define('CS_REST_LIST_WEBHOOK_UPDATE', 'Update');
|
15 |
+
define('CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS', 'AllClientLists');
|
16 |
+
define('CS_REST_LIST_UNSUBSCRIBE_SETTING_ONLY_THIS_LIST', 'OnlyThisList');
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class to access a lists resources from the create send API.
|
20 |
+
* This class includes functions to create lists and custom fields,
|
21 |
+
* along with accessing the subscribers of a specific list
|
22 |
+
* @author tobyb
|
23 |
+
*
|
24 |
+
*/
|
25 |
+
class CS_REST_Lists extends CS_REST_Wrapper_Base {
|
26 |
+
|
27 |
+
/**
|
28 |
+
* The base route of the lists resource.
|
29 |
+
* @var string
|
30 |
+
* @access private
|
31 |
+
*/
|
32 |
+
var $_lists_base_route;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Constructor.
|
36 |
+
* @param $list_id string The list id to access (Ignored for create requests)
|
37 |
+
* @param $auth_details array Authentication details to use for API calls.
|
38 |
+
* This array must take one of the following forms:
|
39 |
+
* If using OAuth to authenticate:
|
40 |
+
* array(
|
41 |
+
* 'access_token' => 'your access token',
|
42 |
+
* 'refresh_token' => 'your refresh token')
|
43 |
+
*
|
44 |
+
* Or if using an API key:
|
45 |
+
* array('api_key' => 'your api key')
|
46 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
47 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
48 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
49 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
50 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
51 |
+
* @param $transport The transport to use. Used for dependency injection
|
52 |
+
* @access public
|
53 |
+
*/
|
54 |
+
function CS_REST_Lists (
|
55 |
+
$list_id,
|
56 |
+
$auth_details,
|
57 |
+
$protocol = 'https',
|
58 |
+
$debug_level = CS_REST_LOG_NONE,
|
59 |
+
$host = 'api.createsend.com',
|
60 |
+
$log = NULL,
|
61 |
+
$serialiser = NULL,
|
62 |
+
$transport = NULL) {
|
63 |
+
|
64 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
65 |
+
$this->set_list_id($list_id);
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Change the list id used for calls after construction
|
70 |
+
* @param $list_id
|
71 |
+
* @access public
|
72 |
+
*/
|
73 |
+
function set_list_id($list_id) {
|
74 |
+
$this->_lists_base_route = $this->_base_route.'lists/'.$list_id.'/';
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Creates a new list based on the provided details.
|
79 |
+
* Both the UnsubscribePage and the ConfirmationSuccessPage parameters are optional
|
80 |
+
* @param string $client_id The client to create the campaign for
|
81 |
+
* @param array $list_details The list details to use during creation.
|
82 |
+
* This array should be of the form
|
83 |
+
* array(
|
84 |
+
* 'Title' => string The list title
|
85 |
+
* 'UnsubscribePage' => string The page to redirect subscribers to when they unsubscribe
|
86 |
+
* 'ConfirmedOptIn' => boolean Whether this list requires confirmation of subscription
|
87 |
+
* 'ConfirmationSuccessPage' => string The page to redirect subscribers to when
|
88 |
+
* they confirm their subscription
|
89 |
+
* 'UnsubscribeSetting' => string Unsubscribe setting must be
|
90 |
+
* CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS or
|
91 |
+
* CS_REST_LIST_UNSUBSCRIBE_SETTING_ONLY_THIS_LIST.
|
92 |
+
* See the documentation for details: http://www.campaignmonitor.com/api/lists/#creating_a_list
|
93 |
+
* )
|
94 |
+
* @access public
|
95 |
+
* @return CS_REST_Wrapper_Result A successful response will be the ID of the newly created list
|
96 |
+
*/
|
97 |
+
function create($client_id, $list_details) {
|
98 |
+
return $this->post_request($this->_base_route.'lists/'.$client_id.'.json', $list_details);
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Updates the details of an existing list
|
103 |
+
* Both the UnsubscribePage and the ConfirmationSuccessPage parameters are optional
|
104 |
+
* @param string $client_id The client to create the campaign for
|
105 |
+
* @param array $list_details The list details to use during creation.
|
106 |
+
* This array should be of the form
|
107 |
+
* array(
|
108 |
+
* 'Title' => string The list title
|
109 |
+
* 'UnsubscribePage' => string The page to redirect subscribers to when they unsubscribe
|
110 |
+
* 'ConfirmedOptIn' => boolean Whether this list requires confirmation of subscription
|
111 |
+
* 'ConfirmationSuccessPage' => string The page to redirect subscribers to when
|
112 |
+
* they confirm their subscription
|
113 |
+
* 'UnsubscribeSetting' => string Unsubscribe setting must be
|
114 |
+
* CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS or
|
115 |
+
* CS_REST_LIST_UNSUBSCRIBE_SETTING_ONLY_THIS_LIST.
|
116 |
+
* See the documentation for details: http://www.campaignmonitor.com/api/lists/#updating_a_list
|
117 |
+
* 'AddUnsubscribesToSuppList' => boolean When UnsubscribeSetting
|
118 |
+
* is CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS,
|
119 |
+
* whether unsubscribes from this list should be added to the
|
120 |
+
* suppression list.
|
121 |
+
* 'ScrubActiveWithSuppList' => boolean When UnsubscribeSetting
|
122 |
+
* is CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS,
|
123 |
+
* whether active subscribers should be scrubbed against the
|
124 |
+
* suppression list.
|
125 |
+
* )
|
126 |
+
* @access public
|
127 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
128 |
+
*/
|
129 |
+
function update($list_details) {
|
130 |
+
return $this->put_request(trim($this->_lists_base_route, '/').'.json', $list_details);
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Creates a new custom field for the current list
|
135 |
+
* @param array $custom_field_details The details of the new custom field.
|
136 |
+
* This array should be of the form
|
137 |
+
* array(
|
138 |
+
* 'FieldName' => string The name of the new custom field
|
139 |
+
* 'DataType' => string The data type of the new custom field
|
140 |
+
* This should be one of
|
141 |
+
* CS_REST_CUSTOM_FIELD_TYPE_TEXT
|
142 |
+
* CS_REST_CUSTOM_FIELD_TYPE_NUMBER
|
143 |
+
* CS_REST_CUSTOM_FIELD_TYPE_MULTI_SELECTONE
|
144 |
+
* CS_REST_CUSTOM_FIELD_TYPE_MULTI_SELECTMANY
|
145 |
+
* CS_REST_CUSTOM_FIELD_TYPE_DATE
|
146 |
+
* CS_REST_CUSTOM_FIELD_TYPE_COUNTRY
|
147 |
+
* CS_REST_CUSTOM_FIELD_TYPE_USSTATE
|
148 |
+
* 'Options' => array<string> Valid options for either
|
149 |
+
* Multi-Optioned field data type.
|
150 |
+
* 'VisibleInPreferenceCenter' => boolean representing whether or
|
151 |
+
* not the field should be visible in the subscriber preference
|
152 |
+
* center.
|
153 |
+
* )
|
154 |
+
* @access public
|
155 |
+
* @return CS_REST_Wrapper_Result A successful response will be the
|
156 |
+
* personalisation tag of the newly created custom field
|
157 |
+
*/
|
158 |
+
function create_custom_field($custom_field_details) {
|
159 |
+
return $this->post_request($this->_lists_base_route.'customfields.json', $custom_field_details);
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Updates a custom field for the current list
|
164 |
+
* @param string $key The personalisation tag of the field to update
|
165 |
+
* @param array $custom_field_details The details of the new custom field.
|
166 |
+
* This array should be of the form
|
167 |
+
* array(
|
168 |
+
* 'FieldName' => string The new name for the field
|
169 |
+
* 'VisibleInPreferenceCenter' => boolean representing whether or
|
170 |
+
* not the field should be visible in the subscriber preference
|
171 |
+
* center.
|
172 |
+
* )
|
173 |
+
* @access public
|
174 |
+
* @return CS_REST_Wrapper_Result A successful response will be the
|
175 |
+
* personalisation tag of the updated custom field
|
176 |
+
*/
|
177 |
+
function update_custom_field($key, $custom_field_details) {
|
178 |
+
return $this->put_request($this->_lists_base_route.'customfields/'.rawurlencode($key).'.json',
|
179 |
+
$custom_field_details);
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Updates the optios for the given multi-optioned custom field
|
184 |
+
* @param string $key The personalisation tag of the field to update
|
185 |
+
* @param array<string> $new_options The set of options to add to the custom field
|
186 |
+
* @param boolean $keep_existing Whether to remove any existing options not contained in $new_options
|
187 |
+
* @access public
|
188 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
189 |
+
*/
|
190 |
+
function update_field_options($key, $new_options, $keep_existing) {
|
191 |
+
$options = array(
|
192 |
+
'KeepExistingOptions' => $keep_existing,
|
193 |
+
'Options' => $new_options
|
194 |
+
);
|
195 |
+
|
196 |
+
return $this->put_request($this->_lists_base_route.'customfields/'.rawurlencode($key).'/options.json',
|
197 |
+
$options);
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Deletes an existing list from the system
|
202 |
+
* @access public
|
203 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
204 |
+
*/
|
205 |
+
function delete() {
|
206 |
+
return $this->delete_request(trim($this->_lists_base_route, '/').'.json');
|
207 |
+
}
|
208 |
+
|
209 |
+
/**
|
210 |
+
* Deletes an existing custom field from the system
|
211 |
+
* @access public
|
212 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
213 |
+
*/
|
214 |
+
function delete_custom_field($key) {
|
215 |
+
return $this->delete_request($this->_lists_base_route.'customfields/'.rawurlencode($key).'.json');
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Gets a list of all custom fields defined for the current list
|
220 |
+
* @access public
|
221 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
222 |
+
* array(
|
223 |
+
* {
|
224 |
+
* 'FieldName' => The name of the custom field
|
225 |
+
* 'Key' => The personalisation tag of the custom field
|
226 |
+
* 'DataType' => The data type of the custom field
|
227 |
+
* 'FieldOptions' => Valid options for a multi-optioned custom field
|
228 |
+
* 'VisibleInPreferenceCenter' => Boolean representing whether or
|
229 |
+
* not the field is visible in the subscriber preference center
|
230 |
+
* }
|
231 |
+
* )
|
232 |
+
*/
|
233 |
+
function get_custom_fields() {
|
234 |
+
return $this->get_request($this->_lists_base_route.'customfields.json');
|
235 |
+
}
|
236 |
+
|
237 |
+
/**
|
238 |
+
* Gets a list of all segments defined for the current list
|
239 |
+
* @access public
|
240 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
241 |
+
* array(
|
242 |
+
* {
|
243 |
+
* 'ListID' => The current list id
|
244 |
+
* 'SegmentID' => The id of this segment
|
245 |
+
* 'Title' => The title of this segment
|
246 |
+
* }
|
247 |
+
* )
|
248 |
+
*/
|
249 |
+
function get_segments() {
|
250 |
+
return $this->get_request($this->_lists_base_route.'segments.json');
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Gets all active subscribers added since the given date
|
255 |
+
* @param string $added_since The date to start getting subscribers from
|
256 |
+
* @param int $page_number The page number to get
|
257 |
+
* @param int $page_size The number of records per page
|
258 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'NAME', 'DATE')
|
259 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
260 |
+
* @access public
|
261 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
262 |
+
* {
|
263 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
264 |
+
* 'OrderDirection' => The order direction
|
265 |
+
* 'PageNumber' => The page number for the result set
|
266 |
+
* 'PageSize' => The page size used
|
267 |
+
* 'RecordsOnThisPage' => The number of records returned
|
268 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
269 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
270 |
+
* 'Results' => array(
|
271 |
+
* {
|
272 |
+
* 'EmailAddress' => The email address of the subscriber
|
273 |
+
* 'Name' => The name of the subscriber
|
274 |
+
* 'Date' => The date that the subscriber was added to the list
|
275 |
+
* 'State' => The current state of the subscriber, will be 'Active'
|
276 |
+
* 'CustomFields' => array (
|
277 |
+
* {
|
278 |
+
* 'Key' => The personalisation tag of the custom field
|
279 |
+
* 'Value' => The value of the custom field for this subscriber
|
280 |
+
* }
|
281 |
+
* )
|
282 |
+
* }
|
283 |
+
* )
|
284 |
+
* }
|
285 |
+
*/
|
286 |
+
function get_active_subscribers($added_since = '', $page_number = NULL,
|
287 |
+
$page_size = NULL, $order_field = NULL, $order_direction = NULL) {
|
288 |
+
|
289 |
+
return $this->get_request_paged($this->_lists_base_route.'active.json?date='.urlencode($added_since),
|
290 |
+
$page_number, $page_size, $order_field, $order_direction);
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* Gets all unconfirmed subscribers added since the given date
|
295 |
+
* @param string $added_since The date to start getting subscribers from
|
296 |
+
* @param int $page_number The page number to get
|
297 |
+
* @param int $page_size The number of records per page
|
298 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'NAME', 'DATE')
|
299 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
300 |
+
* @access public
|
301 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
302 |
+
* {
|
303 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
304 |
+
* 'OrderDirection' => The order direction
|
305 |
+
* 'PageNumber' => The page number for the result set
|
306 |
+
* 'PageSize' => The page size used
|
307 |
+
* 'RecordsOnThisPage' => The number of records returned
|
308 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
309 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
310 |
+
* 'Results' => array(
|
311 |
+
* {
|
312 |
+
* 'EmailAddress' => The email address of the subscriber
|
313 |
+
* 'Name' => The name of the subscriber
|
314 |
+
* 'Date' => The date that the subscriber was added to the list
|
315 |
+
* 'State' => The current state of the subscriber, will be 'Unconfirmed'
|
316 |
+
* 'CustomFields' => array (
|
317 |
+
* {
|
318 |
+
* 'Key' => The personalisation tag of the custom field
|
319 |
+
* 'Value' => The value of the custom field for this subscriber
|
320 |
+
* }
|
321 |
+
* )
|
322 |
+
* }
|
323 |
+
* )
|
324 |
+
* }
|
325 |
+
*/
|
326 |
+
function get_unconfirmed_subscribers($added_since = '', $page_number = NULL,
|
327 |
+
$page_size = NULL, $order_field = NULL, $order_direction = NULL) {
|
328 |
+
|
329 |
+
return $this->get_request_paged($this->_lists_base_route.'unconfirmed.json?date='.urlencode($added_since),
|
330 |
+
$page_number, $page_size, $order_field, $order_direction);
|
331 |
+
}
|
332 |
+
|
333 |
+
/**
|
334 |
+
* Gets all bounced subscribers who have bounced out since the given date
|
335 |
+
* @param string $added_since The date to start getting subscribers from
|
336 |
+
* @param int $page_number The page number to get
|
337 |
+
* @param int $page_size The number of records per page
|
338 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'NAME', 'DATE')
|
339 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
340 |
+
* @access public
|
341 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
342 |
+
* {
|
343 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
344 |
+
* 'OrderDirection' => The order direction
|
345 |
+
* 'PageNumber' => The page number for the result set
|
346 |
+
* 'PageSize' => The page size used
|
347 |
+
* 'RecordsOnThisPage' => The number of records returned
|
348 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
349 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
350 |
+
* 'Results' => array(
|
351 |
+
* {
|
352 |
+
* 'EmailAddress' => The email address of the subscriber
|
353 |
+
* 'Name' => The name of the subscriber
|
354 |
+
* 'Date' => The date that the subscriber bounced out of the list
|
355 |
+
* 'State' => The current state of the subscriber, will be 'Bounced'
|
356 |
+
* 'CustomFields' => array (
|
357 |
+
* {
|
358 |
+
* 'Key' => The personalisation tag of the custom field
|
359 |
+
* 'Value' => The value of the custom field for this subscriber
|
360 |
+
* }
|
361 |
+
* )
|
362 |
+
* }
|
363 |
+
* )
|
364 |
+
* }
|
365 |
+
*/
|
366 |
+
function get_bounced_subscribers($bounced_since = '', $page_number = NULL,
|
367 |
+
$page_size = NULL, $order_field = NULL, $order_direction = NULL) {
|
368 |
+
|
369 |
+
return $this->get_request_paged($this->_lists_base_route.'bounced.json?date='.urlencode($bounced_since),
|
370 |
+
$page_number, $page_size, $order_field, $order_direction);
|
371 |
+
}
|
372 |
+
|
373 |
+
/**
|
374 |
+
* Gets all unsubscribed subscribers who have unsubscribed since the given date
|
375 |
+
* @param string $added_since The date to start getting subscribers from
|
376 |
+
* @param int $page_number The page number to get
|
377 |
+
* @param int $page_size The number of records per page
|
378 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'NAME', 'DATE')
|
379 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
380 |
+
* @access public
|
381 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
382 |
+
* {
|
383 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
384 |
+
* 'OrderDirection' => The order direction
|
385 |
+
* 'PageNumber' => The page number for the result set
|
386 |
+
* 'PageSize' => The page size used
|
387 |
+
* 'RecordsOnThisPage' => The number of records returned
|
388 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
389 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
390 |
+
* 'Results' => array(
|
391 |
+
* {
|
392 |
+
* 'EmailAddress' => The email address of the subscriber
|
393 |
+
* 'Name' => The name of the subscriber
|
394 |
+
* 'Date' => The date that the subscriber was unsubscribed from the list
|
395 |
+
* 'State' => The current state of the subscriber, will be 'Unsubscribed'
|
396 |
+
* 'CustomFields' => array (
|
397 |
+
* {
|
398 |
+
* 'Key' => The personalisation tag of the custom field
|
399 |
+
* 'Value' => The value of the custom field for this subscriber
|
400 |
+
* }
|
401 |
+
* )
|
402 |
+
* }
|
403 |
+
* )
|
404 |
+
* }
|
405 |
+
*/
|
406 |
+
function get_unsubscribed_subscribers($unsubscribed_since = '', $page_number = NULL,
|
407 |
+
$page_size = NULL, $order_field = NULL, $order_direction = NULL) {
|
408 |
+
|
409 |
+
return $this->get_request_paged($this->_lists_base_route.'unsubscribed.json?date='.urlencode($unsubscribed_since),
|
410 |
+
$page_number, $page_size, $order_field, $order_direction);
|
411 |
+
}
|
412 |
+
|
413 |
+
/**
|
414 |
+
* Gets all subscribers who have been deleted since the given date
|
415 |
+
* @param string $deleted_since The date to start getting subscribers from
|
416 |
+
* @param int $page_number The page number to get
|
417 |
+
* @param int $page_size The number of records per page
|
418 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'NAME', 'DATE')
|
419 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
420 |
+
* @access public
|
421 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
422 |
+
* {
|
423 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
424 |
+
* 'OrderDirection' => The order direction
|
425 |
+
* 'PageNumber' => The page number for the result set
|
426 |
+
* 'PageSize' => The page size used
|
427 |
+
* 'RecordsOnThisPage' => The number of records returned
|
428 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
429 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
430 |
+
* 'Results' => array(
|
431 |
+
* {
|
432 |
+
* 'EmailAddress' => The email address of the subscriber
|
433 |
+
* 'Name' => The name of the subscriber
|
434 |
+
* 'Date' => The date that the subscriber was deleted from the list
|
435 |
+
* 'State' => The current state of the subscriber, will be 'Deleted'
|
436 |
+
* 'CustomFields' => array (
|
437 |
+
* {
|
438 |
+
* 'Key' => The personalisation tag of the custom field
|
439 |
+
* 'Value' => The value of the custom field for this subscriber
|
440 |
+
* }
|
441 |
+
* )
|
442 |
+
* }
|
443 |
+
* )
|
444 |
+
* }
|
445 |
+
*/
|
446 |
+
function get_deleted_subscribers($deleted_since = '', $page_number = NULL,
|
447 |
+
$page_size = NULL, $order_field = NULL, $order_direction = NULL) {
|
448 |
+
|
449 |
+
return $this->get_request_paged($this->_lists_base_route.'deleted.json?date='.urlencode($deleted_since),
|
450 |
+
$page_number, $page_size, $order_field, $order_direction);
|
451 |
+
}
|
452 |
+
|
453 |
+
/**
|
454 |
+
* Gets the basic details of the current list
|
455 |
+
* @access public
|
456 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
457 |
+
* {
|
458 |
+
* 'ListID' => The id of the list
|
459 |
+
* 'Title' => The title of the list
|
460 |
+
* 'UnsubscribePage' => The page which subscribers are redirected to upon unsubscribing
|
461 |
+
* 'ConfirmedOptIn' => Whether the list is Double-Opt In
|
462 |
+
* 'ConfirmationSuccessPage' => The page which subscribers are
|
463 |
+
* redirected to upon confirming their subscription
|
464 |
+
* 'UnsubscribeSetting' => The unsubscribe setting for the list. Will
|
465 |
+
* be either CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS or
|
466 |
+
* CS_REST_LIST_UNSUBSCRIBE_SETTING_ONLY_THIS_LIST.
|
467 |
+
* }
|
468 |
+
*/
|
469 |
+
function get() {
|
470 |
+
return $this->get_request(trim($this->_lists_base_route, '/').'.json');
|
471 |
+
}
|
472 |
+
|
473 |
+
/**
|
474 |
+
* Gets statistics for list subscriptions, deletions, bounces and unsubscriptions
|
475 |
+
* @access public
|
476 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
477 |
+
* {
|
478 |
+
* 'TotalActiveSubscribers'
|
479 |
+
* 'NewActiveSubscribersToday'
|
480 |
+
* 'NewActiveSubscribersYesterday'
|
481 |
+
* 'NewActiveSubscribersThisWeek'
|
482 |
+
* 'NewActiveSubscribersThisMonth'
|
483 |
+
* 'NewActiveSubscribersThisYeay'
|
484 |
+
* 'TotalUnsubscribes'
|
485 |
+
* 'UnsubscribesToday'
|
486 |
+
* 'UnsubscribesYesterday'
|
487 |
+
* 'UnsubscribesThisWeek'
|
488 |
+
* 'UnsubscribesThisMonth'
|
489 |
+
* 'UnsubscribesThisYear'
|
490 |
+
* 'TotalDeleted'
|
491 |
+
* 'DeletedToday'
|
492 |
+
* 'DeletedYesterday'
|
493 |
+
* 'DeletedThisWeek'
|
494 |
+
* 'DeletedThisMonth'
|
495 |
+
* 'DeletedThisYear'
|
496 |
+
* 'TotalBounces'
|
497 |
+
* 'BouncesToday'
|
498 |
+
* 'BouncesYesterday'
|
499 |
+
* 'BouncesThisWeek'
|
500 |
+
* 'BouncesThisMonth'
|
501 |
+
* 'BouncesThisYear'
|
502 |
+
* }
|
503 |
+
*/
|
504 |
+
function get_stats() {
|
505 |
+
return $this->get_request($this->_lists_base_route.'stats.json');
|
506 |
+
}
|
507 |
+
|
508 |
+
/**
|
509 |
+
* Gets the webhooks which are currently subcribed to event on this list
|
510 |
+
* @access public
|
511 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
512 |
+
* array(
|
513 |
+
* {
|
514 |
+
* 'WebhookID' => The if of
|
515 |
+
* 'Events' => An array of the events this webhook is subscribed to ('Subscribe', 'Update', 'Deactivate')
|
516 |
+
* 'Url' => The url the webhook data will be POSTed to
|
517 |
+
* 'Status' => The current status of this webhook
|
518 |
+
* 'PayloadFormat' => The format in which data will be POSTed
|
519 |
+
* }
|
520 |
+
* )
|
521 |
+
*/
|
522 |
+
function get_webhooks() {
|
523 |
+
return $this->get_request($this->_lists_base_route.'webhooks.json');
|
524 |
+
}
|
525 |
+
|
526 |
+
/**
|
527 |
+
* Creates a new webhook based on the provided details
|
528 |
+
* @param array $webhook The details of the new webhook
|
529 |
+
* This array should be of the form
|
530 |
+
* array(
|
531 |
+
* 'Events' => array<string> The events to subscribe to. Valid events are
|
532 |
+
* CS_REST_LIST_WEBHOOK_SUBSCRIBE,
|
533 |
+
* CS_REST_LIST_WEBHOOK_DEACTIVATE,
|
534 |
+
* CS_REST_LIST_WEBHOOK_UPDATE
|
535 |
+
* 'Url' => string The url of the page to POST the webhook events to
|
536 |
+
* 'PayloadFormat' => The format to use when POSTing webhook event data, either
|
537 |
+
* CS_REST_WEBHOOK_FORMAT_JSON or
|
538 |
+
* CS_REST_WEBHOOK_FORMAT_XML
|
539 |
+
* (xml or json)
|
540 |
+
* )
|
541 |
+
* @access public
|
542 |
+
* @return CS_REST_Wrapper_Result A successful response will be the ID of the newly created webhook
|
543 |
+
*/
|
544 |
+
function create_webhook($webhook) {
|
545 |
+
return $this->post_request($this->_lists_base_route.'webhooks.json', $webhook);
|
546 |
+
}
|
547 |
+
|
548 |
+
/**
|
549 |
+
* Sends test events for the given webhook id
|
550 |
+
* @param string $webhook_id The id of the webhook to test
|
551 |
+
* @access public
|
552 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty.
|
553 |
+
*/
|
554 |
+
function test_webhook($webhook_id) {
|
555 |
+
return $this->get_request($this->_lists_base_route.'webhooks/'.$webhook_id.'/test.json');
|
556 |
+
}
|
557 |
+
|
558 |
+
/**
|
559 |
+
* Deletes an existing webhook from the system
|
560 |
+
* @param string $webhook_id The id of the webhook to delete
|
561 |
+
* @access public
|
562 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
563 |
+
*/
|
564 |
+
function delete_webhook($webhook_id) {
|
565 |
+
return $this->delete_request($this->_lists_base_route.'webhooks/'.$webhook_id.'.json');
|
566 |
+
}
|
567 |
+
|
568 |
+
/**
|
569 |
+
* Activates an existing deactivated webhook
|
570 |
+
* @param string $webhook_id The id of the webhook to activate
|
571 |
+
* @access public
|
572 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
573 |
+
*/
|
574 |
+
function activate_webhook($webhook_id) {
|
575 |
+
return $this->put_request($this->_lists_base_route.'webhooks/'.$webhook_id.'/activate.json', '');
|
576 |
+
}
|
577 |
+
|
578 |
+
/**
|
579 |
+
* Deactivates an existing activated webhook
|
580 |
+
* @param string $webhook_id The id of the webhook to deactivate
|
581 |
+
* @access public
|
582 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
583 |
+
*/
|
584 |
+
function deactivate_webhook($webhook_id) {
|
585 |
+
return $this->put_request($this->_lists_base_route.'webhooks/'.$webhook_id.'/deactivate.json', '');
|
586 |
+
}
|
587 |
+
}
|
lib/createsend/csrest_people.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class to access the person resources from the create send API.
|
6 |
+
* This class includes functions to add and remove people,
|
7 |
+
* along with getting details for a single person
|
8 |
+
* @author tobyb
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
class CS_REST_People extends CS_REST_Wrapper_Base {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The base route of the people resource.
|
15 |
+
* @var string
|
16 |
+
* @access private
|
17 |
+
*/
|
18 |
+
var $_people_base_route;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Constructor.
|
22 |
+
* @param $client_id string The client id that the people belong to
|
23 |
+
* @param $auth_details array Authentication details to use for API calls.
|
24 |
+
* This array must take one of the following forms:
|
25 |
+
* If using OAuth to authenticate:
|
26 |
+
* array(
|
27 |
+
* 'access_token' => 'your access token',
|
28 |
+
* 'refresh_token' => 'your refresh token')
|
29 |
+
*
|
30 |
+
* Or if using an API key:
|
31 |
+
* array('api_key' => 'your api key')
|
32 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
33 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
34 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
35 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
36 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
37 |
+
* @param $transport The transport to use. Used for dependency injection
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
+
function CS_REST_People (
|
41 |
+
$client_id,
|
42 |
+
$auth_details,
|
43 |
+
$protocol = 'https',
|
44 |
+
$debug_level = CS_REST_LOG_NONE,
|
45 |
+
$host = 'api.createsend.com',
|
46 |
+
$log = NULL,
|
47 |
+
$serialiser = NULL,
|
48 |
+
$transport = NULL) {
|
49 |
+
|
50 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
51 |
+
$this->set_client_id($client_id);
|
52 |
+
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Change the client id used for calls after construction
|
57 |
+
* @param $client_id
|
58 |
+
* @access public
|
59 |
+
*/
|
60 |
+
function set_client_id($client_id) {
|
61 |
+
$this->_people_base_route = $this->_base_route.'clients/'.$client_id . '/people';
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Adds a new person to the specified client
|
66 |
+
* @param array $person The person details to use during creation.
|
67 |
+
* This array should be of the form
|
68 |
+
* array (
|
69 |
+
* 'EmailAddress' => The new person email address
|
70 |
+
* 'Name' => The name of the new person
|
71 |
+
* 'AccessLevel' => The access level of the new person. See http://www.campaignmonitor.com/api/clients/#setting_access_details for details
|
72 |
+
* 'Password' => (optional) if not specified, an invitation will be sent to the person by email
|
73 |
+
* )
|
74 |
+
* @access public
|
75 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
76 |
+
*/
|
77 |
+
function add($person) {
|
78 |
+
return $this->post_request($this->_people_base_route.'.json', $person);
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Updates details for an existing person associated with the specified client.
|
83 |
+
* @param string $email The email address of the person to be updated
|
84 |
+
* @param array $person The updated person details to use for the update.
|
85 |
+
* This array should be of the form
|
86 |
+
* array (
|
87 |
+
* 'EmailAddress' => The new email address
|
88 |
+
* 'Name' => The name of the person
|
89 |
+
* 'AccessLevel' => the access level of the person
|
90 |
+
* 'Password' => (optional) if specified, changes the password to the specified value
|
91 |
+
* )
|
92 |
+
* @access public
|
93 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
94 |
+
*/
|
95 |
+
function update($email, $person) {
|
96 |
+
return $this->put_request($this->_people_base_route.'.json?email='.urlencode($email), $person);
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Gets the details for a specific person
|
101 |
+
* @access public
|
102 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
103 |
+
* {
|
104 |
+
* 'EmailAddress' => The email address of the person
|
105 |
+
* 'Name' => The name of the person
|
106 |
+
* 'Status' => The status of the person
|
107 |
+
* 'AccessLevel' => The access level of the person
|
108 |
+
* )
|
109 |
+
* }
|
110 |
+
*/
|
111 |
+
function get($email) {
|
112 |
+
return $this->get_request($this->_people_base_route.'.json?email='.urlencode($email));
|
113 |
+
}
|
114 |
+
|
115 |
+
|
116 |
+
/**
|
117 |
+
* deletes the given person from the current client
|
118 |
+
* @param string $email The email address of the person to delete
|
119 |
+
* @access public
|
120 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
121 |
+
*/
|
122 |
+
function delete($email) {
|
123 |
+
return $this->delete_request($this->_people_base_route.'.json?email='.urlencode($email));
|
124 |
+
}
|
125 |
+
}
|
lib/createsend/csrest_segments.php
ADDED
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class to access a segments resources from the create send API.
|
6 |
+
* This class includes functions to create and edits segments
|
7 |
+
* along with accessing the subscribers of a specific segment
|
8 |
+
* @author tobyb
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
class CS_REST_Segments extends CS_REST_Wrapper_Base {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The base route of the lists resource.
|
15 |
+
* @var string
|
16 |
+
* @access private
|
17 |
+
*/
|
18 |
+
var $_segments_base_route;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Constructor.
|
22 |
+
* @param $segment_id string The segment id to access (Ignored for create requests)
|
23 |
+
* @param $auth_details array Authentication details to use for API calls.
|
24 |
+
* This array must take one of the following forms:
|
25 |
+
* If using OAuth to authenticate:
|
26 |
+
* array(
|
27 |
+
* 'access_token' => 'your access token',
|
28 |
+
* 'refresh_token' => 'your refresh token')
|
29 |
+
*
|
30 |
+
* Or if using an API key:
|
31 |
+
* array('api_key' => 'your api key')
|
32 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
33 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
34 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
35 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
36 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
37 |
+
* @param $transport The transport to use. Used for dependency injection
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
+
function CS_REST_Segments (
|
41 |
+
$segment_id,
|
42 |
+
$auth_details,
|
43 |
+
$protocol = 'https',
|
44 |
+
$debug_level = CS_REST_LOG_NONE,
|
45 |
+
$host = 'api.createsend.com',
|
46 |
+
$log = NULL,
|
47 |
+
$serialiser = NULL,
|
48 |
+
$transport = NULL) {
|
49 |
+
|
50 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
51 |
+
$this->set_segment_id($segment_id);
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Change the segment id used for calls after construction
|
56 |
+
* @param $segment_id
|
57 |
+
* @access public
|
58 |
+
*/
|
59 |
+
function set_segment_id($segment_id) {
|
60 |
+
$this->_segments_base_route = $this->_base_route.'segments/'.$segment_id;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Creates a new segment on the given list with the provided details
|
65 |
+
* @param int $list_id The list on which to create the segment
|
66 |
+
* @param $segment_details The details of the new segment
|
67 |
+
* This should be an array of the form
|
68 |
+
* array(
|
69 |
+
* 'Title' => The title of the new segment
|
70 |
+
* 'Rules' => array(
|
71 |
+
* array(
|
72 |
+
* 'Subject' => The subject of this rule
|
73 |
+
* 'Clauses' => array<string> The specific clauses for this rule
|
74 |
+
* )
|
75 |
+
* )
|
76 |
+
* )
|
77 |
+
* @return CS_REST_Wrapper_Result A successful response will be the ID of the newly created segment
|
78 |
+
*/
|
79 |
+
function create($list_id, $segment_details) {
|
80 |
+
return $this->post_request($this->_base_route.'segments/'.$list_id.'.json', $segment_details);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Updates the current segment with the provided details. Calls to this route will clear any existing rules
|
85 |
+
* @param $segment_details The new details for the segment
|
86 |
+
* This should be an array of the form
|
87 |
+
* array(
|
88 |
+
* 'Title' => The new title for the segment
|
89 |
+
* 'Rules' => array(
|
90 |
+
* array(
|
91 |
+
* 'Subject' => The subject of this rule
|
92 |
+
* 'Clauses' => array<string> The specific clauses for this rule
|
93 |
+
* )
|
94 |
+
* )
|
95 |
+
* )
|
96 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
97 |
+
*/
|
98 |
+
function update($segment_details) {
|
99 |
+
return $this->put_request($this->_segments_base_route.'.json', $segment_details);
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Adds the given rule to the current segment
|
104 |
+
* @param $rule The rule to add to the segment
|
105 |
+
* This should be an array of the form
|
106 |
+
* array(
|
107 |
+
* 'Subject' => The subject of this rule
|
108 |
+
* 'Clauses' => array<string> The specific clauses for this rule
|
109 |
+
* )
|
110 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
111 |
+
*/
|
112 |
+
function add_rule($rule) {
|
113 |
+
return $this->post_request($this->_segments_base_route.'/rules.json', $rule);
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Gets the details of the current segment
|
118 |
+
* @access public
|
119 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
120 |
+
* {
|
121 |
+
* 'ActiveSubscribers' => The number of active subscribers in this segment
|
122 |
+
* 'Rules' => array(
|
123 |
+
* {
|
124 |
+
* 'Subject' => The subject of the rule
|
125 |
+
* 'Clauses' => array<string> The clauses making up this segment rule
|
126 |
+
* }
|
127 |
+
* ),
|
128 |
+
* 'ListID' => The ID of the list on which this segment is applied
|
129 |
+
* 'SegmentID' => The ID of this segment
|
130 |
+
* 'Title' => The title of this segment
|
131 |
+
* }
|
132 |
+
*/
|
133 |
+
function get() {
|
134 |
+
return $this->get_request($this->_segments_base_route.'.json');
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Deletes an existing segment from the system
|
139 |
+
* @access public
|
140 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
141 |
+
*/
|
142 |
+
function delete() {
|
143 |
+
return $this->delete_request($this->_segments_base_route.'.json');
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Deletes all rules for the current segment
|
148 |
+
* @access public
|
149 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
150 |
+
*/
|
151 |
+
function clear_rules() {
|
152 |
+
return $this->delete_request($this->_segments_base_route.'/rules.json');
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Gets a paged collection of subscribers which fall into the given segment
|
157 |
+
* @param string $subscribed_since The date to start getting subscribers from
|
158 |
+
* @param int $page_number The page number to get
|
159 |
+
* @param int $page_size The number of records per page
|
160 |
+
* @param string $order_field The field to order the record set by ('EMAIL', 'NAME', 'DATE')
|
161 |
+
* @param string $order_direction The direction to order the record set ('ASC', 'DESC')
|
162 |
+
* @access public
|
163 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
164 |
+
* {
|
165 |
+
* 'ResultsOrderedBy' => The field the results are ordered by
|
166 |
+
* 'OrderDirection' => The order direction
|
167 |
+
* 'PageNumber' => The page number for the result set
|
168 |
+
* 'PageSize' => The page size used
|
169 |
+
* 'RecordsOnThisPage' => The number of records returned
|
170 |
+
* 'TotalNumberOfRecords' => The total number of records available
|
171 |
+
* 'NumberOfPages' => The total number of pages for this collection
|
172 |
+
* 'Results' => array(
|
173 |
+
* {
|
174 |
+
* 'EmailAddress' => The email address of the subscriber
|
175 |
+
* 'Name' => The name of the subscriber
|
176 |
+
* 'Date' => The date that the subscriber was added to the list
|
177 |
+
* 'State' => The current state of the subscriber, will be 'Active'
|
178 |
+
* 'CustomFields' => array (
|
179 |
+
* {
|
180 |
+
* 'Key' => The personalisation tag of the custom field
|
181 |
+
* 'Value' => The value of the custom field for this subscriber
|
182 |
+
* }
|
183 |
+
* )
|
184 |
+
* }
|
185 |
+
* )
|
186 |
+
* }
|
187 |
+
*/
|
188 |
+
function get_subscribers($subscribed_since = '', $page_number = NULL,
|
189 |
+
$page_size = NULL, $order_field = NULL, $order_direction = NULL) {
|
190 |
+
|
191 |
+
return $this->get_request_paged($this->_segments_base_route.'/active.json?date='.urlencode($subscribed_since),
|
192 |
+
$page_number, $page_size, $order_field, $order_direction);
|
193 |
+
}
|
194 |
+
}
|
lib/createsend/csrest_subscribers.php
ADDED
@@ -0,0 +1,231 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class to access a subscribers resources from the create send API.
|
6 |
+
* This class includes functions to add and remove subscribers ,
|
7 |
+
* along with accessing statistics for a single subscriber
|
8 |
+
* @author tobyb
|
9 |
+
*
|
10 |
+
*/
|
11 |
+
class CS_REST_Subscribers extends CS_REST_Wrapper_Base {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The base route of the subscriber resource.
|
15 |
+
* @var string
|
16 |
+
* @access private
|
17 |
+
*/
|
18 |
+
var $_subscribers_base_route;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Constructor.
|
22 |
+
* @param $list_id string The list id to access (Ignored for create requests)
|
23 |
+
* @param $auth_details array Authentication details to use for API calls.
|
24 |
+
* This array must take one of the following forms:
|
25 |
+
* If using OAuth to authenticate:
|
26 |
+
* array(
|
27 |
+
* 'access_token' => 'your access token',
|
28 |
+
* 'refresh_token' => 'your refresh token')
|
29 |
+
*
|
30 |
+
* Or if using an API key:
|
31 |
+
* array('api_key' => 'your api key')
|
32 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
33 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
34 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
35 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
36 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
37 |
+
* @param $transport The transport to use. Used for dependency injection
|
38 |
+
* @access public
|
39 |
+
*/
|
40 |
+
function CS_REST_Subscribers (
|
41 |
+
$list_id,
|
42 |
+
$auth_details,
|
43 |
+
$protocol = 'https',
|
44 |
+
$debug_level = CS_REST_LOG_NONE,
|
45 |
+
$host = 'api.createsend.com',
|
46 |
+
$log = NULL,
|
47 |
+
$serialiser = NULL,
|
48 |
+
$transport = NULL) {
|
49 |
+
|
50 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
51 |
+
$this->set_list_id($list_id);
|
52 |
+
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Change the list id used for calls after construction
|
57 |
+
* @param $list_id
|
58 |
+
* @access public
|
59 |
+
*/
|
60 |
+
function set_list_id($list_id) {
|
61 |
+
$this->_subscribers_base_route = $this->_base_route.'subscribers/'.$list_id;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Adds a new subscriber to the specified list
|
66 |
+
* @param array $subscriber The subscriber details to use during creation.
|
67 |
+
* This array should be of the form
|
68 |
+
* array (
|
69 |
+
* 'EmailAddress' => The new subscribers email address
|
70 |
+
* 'Name' => The name of the new subscriber
|
71 |
+
* 'CustomFields' => array(
|
72 |
+
* array(
|
73 |
+
* 'Key' => The custom fields personalisation tag
|
74 |
+
* 'Value' => The value for this subscriber
|
75 |
+
* )
|
76 |
+
* )
|
77 |
+
* 'Resubscribe' => Whether we should resubscribe this subscriber if they already exist in the list
|
78 |
+
* 'RestartSubscriptionBasedAutoResponders' => Whether we should restart subscription based auto responders which are sent when the subscriber first subscribes to a list.
|
79 |
+
* )
|
80 |
+
* @access public
|
81 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
82 |
+
*/
|
83 |
+
function add($subscriber) {
|
84 |
+
return $this->post_request($this->_subscribers_base_route.'.json', $subscriber);
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Updates an existing subscriber (email, name, state, or custom fields) in the specified list.
|
89 |
+
* The update is performed even for inactive subscribers, but will return an error in the event of the
|
90 |
+
* given email not existing in the list.
|
91 |
+
* @param string $email The email address of the susbcriber to be updated
|
92 |
+
* @param array $subscriber The subscriber details to use for the update. Empty parameters will remain unchanged
|
93 |
+
* This array should be of the form
|
94 |
+
* array (
|
95 |
+
* 'EmailAddress' => The new email address
|
96 |
+
* 'Name' => The name of the subscriber
|
97 |
+
* 'CustomFields' => array(
|
98 |
+
* array(
|
99 |
+
* 'Key' => The custom fields personalisation tag
|
100 |
+
* 'Value' => The value for this subscriber
|
101 |
+
* 'Clear' => true/false (pass true to remove this custom field. in the case of a [multi-option, select many] field, pass an option in the 'Value' field to clear that option or leave Value blank to remove all options)
|
102 |
+
* )
|
103 |
+
* )
|
104 |
+
* 'Resubscribe' => Whether we should resubscribe this subscriber if they already exist in the list
|
105 |
+
* 'RestartSubscriptionBasedAutoResponders' => Whether we should restart subscription based auto responders which are sent when the subscriber first subscribes to a list.
|
106 |
+
* )
|
107 |
+
* @access public
|
108 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
109 |
+
*/
|
110 |
+
function update($email, $subscriber) {
|
111 |
+
return $this->put_request($this->_subscribers_base_route.'.json?email='.urlencode($email), $subscriber);
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Imports an array of subscribers into the current list
|
116 |
+
* @param array $subscribers An array of subscribers to import.
|
117 |
+
* This array should be of the form
|
118 |
+
* array (
|
119 |
+
* array (
|
120 |
+
* 'EmailAddress' => The new subscribers email address
|
121 |
+
* 'Name' => The name of the new subscriber
|
122 |
+
* 'CustomFields' => array(
|
123 |
+
* array(
|
124 |
+
* 'Key' => The custom fields personalisation tag
|
125 |
+
* 'Value' => The value for this subscriber
|
126 |
+
* 'Clear' => true/false (pass true to remove this custom field. in the case of a [multi-option, select many] field, pass an option in the 'Value' field to clear that option or leave Value blank to remove all options)
|
127 |
+
* )
|
128 |
+
* )
|
129 |
+
* )
|
130 |
+
* )
|
131 |
+
* @param $resubscribe Whether we should resubscribe any existing subscribers
|
132 |
+
* @param $queueSubscriptionBasedAutoResponders By default, subscription based auto responders do not trigger during an import. Pass a value of true to override this behaviour
|
133 |
+
* @param $restartSubscriptionBasedAutoResponders By default, subscription based auto responders will not be restarted
|
134 |
+
* @access public
|
135 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
136 |
+
* {
|
137 |
+
* 'TotalUniqueEmailsSubmitted' => The number of unique emails submitted in the call
|
138 |
+
* 'TotalExistingSubscribers' => The number of subscribers who already existed in the list
|
139 |
+
* 'TotalNewSubscribers' => The number of new subscriptions to the list
|
140 |
+
* 'DuplicateEmailsInSubmission' => array<string> The emails which appeared more than once in the batch
|
141 |
+
* 'FailureDetails' => array (
|
142 |
+
* {
|
143 |
+
* 'EmailAddress' => The email address which failed
|
144 |
+
* 'Code' => The Create Send API Error code
|
145 |
+
* 'Message' => The reason for the failure
|
146 |
+
* }
|
147 |
+
* )
|
148 |
+
* }
|
149 |
+
*
|
150 |
+
*/
|
151 |
+
function import($subscribers, $resubscribe, $queueSubscriptionBasedAutoResponders = false, $restartSubscriptionBasedAutoResponders = false) {
|
152 |
+
$subscribers = array(
|
153 |
+
'Resubscribe' => $resubscribe,
|
154 |
+
'QueueSubscriptionBasedAutoResponders' => $queueSubscriptionBasedAutoResponders,
|
155 |
+
'Subscribers' => $subscribers,
|
156 |
+
'RestartSubscriptionBasedAutoresponders' => $restartSubscriptionBasedAutoResponders
|
157 |
+
);
|
158 |
+
|
159 |
+
return $this->post_request($this->_subscribers_base_route.'/import.json', $subscribers);
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Gets a subscriber details, including custom fields
|
164 |
+
* @access public
|
165 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
166 |
+
* {
|
167 |
+
* 'EmailAddress' => The subscriber email address
|
168 |
+
* 'Name' => The subscribers name
|
169 |
+
* 'Date' => The date the subscriber was added to the list
|
170 |
+
* 'State' => The current state of the subscriber
|
171 |
+
* 'CustomFields' => array(
|
172 |
+
* {
|
173 |
+
* 'Key' => The custom fields personalisation tag
|
174 |
+
* 'Value' => The custom field value for this subscriber
|
175 |
+
* }
|
176 |
+
* )
|
177 |
+
* }
|
178 |
+
*/
|
179 |
+
function get($email) {
|
180 |
+
return $this->get_request($this->_subscribers_base_route.'.json?email='.urlencode($email));
|
181 |
+
}
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Gets the sending history to a specific subscriber
|
185 |
+
* @access public
|
186 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
187 |
+
* array(
|
188 |
+
* {
|
189 |
+
* ID => The id of the email which was sent
|
190 |
+
* Type => 'Campaign'
|
191 |
+
* Name => The name of the email
|
192 |
+
* Actions => array(
|
193 |
+
* {
|
194 |
+
* Event => The type of action (Click, Open, Unsubscribe etc)
|
195 |
+
* Date => The date the event occurred
|
196 |
+
* IPAddress => The IP that the event originated from
|
197 |
+
* Detail => Any available details about the event i.e the URL for clicks
|
198 |
+
* }
|
199 |
+
* )
|
200 |
+
* }
|
201 |
+
* )
|
202 |
+
*/
|
203 |
+
function get_history($email) {
|
204 |
+
return $this->get_request($this->_subscribers_base_route.'/history.json?email='.urlencode($email));
|
205 |
+
}
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Unsubscribes the given subscriber from the current list
|
209 |
+
* @param string $email The email address to unsubscribe
|
210 |
+
* @access public
|
211 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
212 |
+
*/
|
213 |
+
function unsubscribe($email) {
|
214 |
+
// We need to build the subscriber data structure.
|
215 |
+
$email = array(
|
216 |
+
'EmailAddress' => $email
|
217 |
+
);
|
218 |
+
|
219 |
+
return $this->post_request($this->_subscribers_base_route.'/unsubscribe.json', $email);
|
220 |
+
}
|
221 |
+
|
222 |
+
/**
|
223 |
+
* deletes the given subscriber from the current list
|
224 |
+
* @param string $email The email address to delete
|
225 |
+
* @access public
|
226 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
227 |
+
*/
|
228 |
+
function delete($email) {
|
229 |
+
return $this->delete_request($this->_subscribers_base_route.'.json?email='.urlencode($email));
|
230 |
+
}
|
231 |
+
}
|
lib/createsend/csrest_templates.php
ADDED
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once dirname(__FILE__).'/class/base_classes.php';
|
3 |
+
|
4 |
+
/**
|
5 |
+
* Class to access a templates resources from the create send API.
|
6 |
+
* This class includes functions to create update and delete templates
|
7 |
+
* @author tobyb
|
8 |
+
*
|
9 |
+
*/
|
10 |
+
class CS_REST_Templates extends CS_REST_Wrapper_Base {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* The base route of the lists resource.
|
14 |
+
* @var string
|
15 |
+
* @access private
|
16 |
+
*/
|
17 |
+
var $_templates_base_route;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Constructor.
|
21 |
+
* @param $list_id string The template id to access (Ignored for create requests)
|
22 |
+
* @param $auth_details array Authentication details to use for API calls.
|
23 |
+
* This array must take one of the following forms:
|
24 |
+
* If using OAuth to authenticate:
|
25 |
+
* array(
|
26 |
+
* 'access_token' => 'your access token',
|
27 |
+
* 'refresh_token' => 'your refresh token')
|
28 |
+
*
|
29 |
+
* Or if using an API key:
|
30 |
+
* array('api_key' => 'your api key')
|
31 |
+
* @param $protocol string The protocol to use for requests (http|https)
|
32 |
+
* @param $debug_level int The level of debugging required CS_REST_LOG_NONE | CS_REST_LOG_ERROR | CS_REST_LOG_WARNING | CS_REST_LOG_VERBOSE
|
33 |
+
* @param $host string The host to send API requests to. There is no need to change this
|
34 |
+
* @param $log CS_REST_Log The logger to use. Used for dependency injection
|
35 |
+
* @param $serialiser The serialiser to use. Used for dependency injection
|
36 |
+
* @param $transport The transport to use. Used for dependency injection
|
37 |
+
* @access public
|
38 |
+
*/
|
39 |
+
function CS_REST_Templates (
|
40 |
+
$template_id,
|
41 |
+
$auth_details,
|
42 |
+
$protocol = 'https',
|
43 |
+
$debug_level = CS_REST_LOG_NONE,
|
44 |
+
$host = 'api.createsend.com',
|
45 |
+
$log = NULL,
|
46 |
+
$serialiser = NULL,
|
47 |
+
$transport = NULL) {
|
48 |
+
|
49 |
+
$this->CS_REST_Wrapper_Base($auth_details, $protocol, $debug_level, $host, $log, $serialiser, $transport);
|
50 |
+
$this->set_template_id($template_id);
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Change the template id used for calls after construction
|
55 |
+
* @param $template_id
|
56 |
+
* @access public
|
57 |
+
*/
|
58 |
+
function set_template_id($template_id) {
|
59 |
+
$this->_templates_base_route = $this->_base_route.'templates/'.$template_id.'.json';
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Creates a new template for the specified client based on the provided data
|
64 |
+
* @param string $client_id The client to create the template for
|
65 |
+
* @param array $template_details The details of the template
|
66 |
+
* This should be an array of the form
|
67 |
+
* array(
|
68 |
+
* 'Name' => The name of the template
|
69 |
+
* 'HtmlPageURL' => The url where the template html can be accessed
|
70 |
+
* 'ZipFileURL' => The url where the template image zip can be accessed
|
71 |
+
* )
|
72 |
+
* @access public
|
73 |
+
* @return CS_REST_Wrapper_Result A successful response will be the ID of the newly created template
|
74 |
+
*/
|
75 |
+
function create($client_id, $template_details) {
|
76 |
+
return $this->post_request($this->_base_route.'templates/'.$client_id.'.json', $template_details);
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Updates the current template with the provided code
|
81 |
+
* @param array $template_details The details of the template
|
82 |
+
* This should be an array of the form
|
83 |
+
* array(
|
84 |
+
* 'Name' => The name of the template
|
85 |
+
* 'HtmlPageURL' => The url where the template html can be accessed
|
86 |
+
* 'ZipFileURL' => The url where the template image zip can be accessed
|
87 |
+
* )
|
88 |
+
* @access public
|
89 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
90 |
+
*/
|
91 |
+
function update($template_details) {
|
92 |
+
return $this->put_request($this->_templates_base_route, $template_details);
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Deletes the current template from the system
|
97 |
+
* @access public
|
98 |
+
* @return CS_REST_Wrapper_Result A successful response will be empty
|
99 |
+
*/
|
100 |
+
function delete() {
|
101 |
+
return $this->delete_request($this->_templates_base_route);
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Gets the basic details of the current template
|
106 |
+
* @access public
|
107 |
+
* @return CS_REST_Wrapper_Result A successful response will be an object of the form
|
108 |
+
* {
|
109 |
+
* 'TemplateID' => The id of the template
|
110 |
+
* 'Name' => The name of the template
|
111 |
+
* 'PreviewURL' => A url where the template can be previewed from
|
112 |
+
* 'ScreenshotURL' => The url of the template screenshot if one was provided
|
113 |
+
* }
|
114 |
+
*/
|
115 |
+
function get() {
|
116 |
+
return $this->get_request($this->_templates_base_route);
|
117 |
+
}
|
118 |
+
}
|
lib/createsend/samples/campaign/create.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns(NULL, $auth);
|
9 |
+
|
10 |
+
$result = $wrap->create('Campaigns Client ID', array(
|
11 |
+
'Subject' => 'Campaign Subject',
|
12 |
+
'Name' => 'Campaign Name',
|
13 |
+
'FromName' => 'Campaign From Name',
|
14 |
+
'FromEmail' => 'Campaign From Email Address',
|
15 |
+
'ReplyTo' => 'Campaign Reply To Email Address',
|
16 |
+
'HtmlUrl' => 'Campaign HTML Import URL',
|
17 |
+
# 'TextUrl' => 'Optional campaign text import URL',
|
18 |
+
'ListIDs' => array('First List', 'Second List'),
|
19 |
+
'SegmentIDs' => array('First Segment', 'Second Segment')
|
20 |
+
));
|
21 |
+
|
22 |
+
echo "Result of POST /api/v3/campaigns/{clientID}\n<br />";
|
23 |
+
if($result->was_successful()) {
|
24 |
+
echo "Created with ID\n<br />".$result->response;
|
25 |
+
} else {
|
26 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
27 |
+
var_dump($result->response);
|
28 |
+
echo '</pre>';
|
29 |
+
}
|
lib/createsend/samples/campaign/create_from_template.php
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns(NULL, $auth);
|
9 |
+
|
10 |
+
$template_content = array(
|
11 |
+
'Singlelines' => array(
|
12 |
+
array(
|
13 |
+
'Content' => 'This is a heading',
|
14 |
+
'Href' => 'http://example.com/'
|
15 |
+
)
|
16 |
+
),
|
17 |
+
'Multilines' => array(
|
18 |
+
array(
|
19 |
+
'Content' => '<p>This is example</p><p>multiline <a href=\"http://example.com\">content</a>...</p>'
|
20 |
+
)
|
21 |
+
),
|
22 |
+
'Images' => array(
|
23 |
+
array(
|
24 |
+
'Content' => 'http://example.com/image.png',
|
25 |
+
'Alt' => 'This is alt text for an image',
|
26 |
+
'Href' => 'http://example.com/'
|
27 |
+
)
|
28 |
+
),
|
29 |
+
'Repeaters' => array(
|
30 |
+
array(
|
31 |
+
'Items' => array(
|
32 |
+
array(
|
33 |
+
'Layout' => 'My layout',
|
34 |
+
'Singlelines' => array(
|
35 |
+
array(
|
36 |
+
'Content' => 'This is a repeater heading',
|
37 |
+
'Href' => 'http://example.com/'
|
38 |
+
)
|
39 |
+
),
|
40 |
+
'Multilines' => array(
|
41 |
+
array(
|
42 |
+
'Content' => '<p>This is example</p><p>multiline <a href=\"http://example.com\">content</a>...</p>'
|
43 |
+
)
|
44 |
+
),
|
45 |
+
'Images' => array(
|
46 |
+
array(
|
47 |
+
'Content' => 'http://example.com/image.png',
|
48 |
+
'Alt' => 'This is alt text for a repeater image',
|
49 |
+
'Href' => 'http://example.com/'
|
50 |
+
)
|
51 |
+
)
|
52 |
+
)
|
53 |
+
)
|
54 |
+
)
|
55 |
+
)
|
56 |
+
);
|
57 |
+
|
58 |
+
# $template_content as defined above would be used to fill the content of
|
59 |
+
# a template with markup similar to the following:
|
60 |
+
#
|
61 |
+
# <html>
|
62 |
+
# <head><title>My Template</title></head>
|
63 |
+
# <body>
|
64 |
+
# <p><singleline>Enter heading...</singleline></p>
|
65 |
+
# <div><multiline>Enter description...</multiline></div>
|
66 |
+
# <img id="header-image" editable="true" width="500" />
|
67 |
+
# <repeater>
|
68 |
+
# <layout label="My layout">
|
69 |
+
# <div class="repeater-item">
|
70 |
+
# <p><singleline></singleline></p>
|
71 |
+
# <div><multiline></multiline></div>
|
72 |
+
# <img editable="true" width="500" />
|
73 |
+
# </div>
|
74 |
+
# </layout>
|
75 |
+
# </repeater>
|
76 |
+
# <p><unsubscribe>Unsubscribe</unsubscribe></p>
|
77 |
+
# </body>
|
78 |
+
# </html>
|
79 |
+
|
80 |
+
$result = $wrap->create_from_template('Campaigns Client ID', array(
|
81 |
+
'Subject' => 'Campaign Subject',
|
82 |
+
'Name' => 'Campaign Name',
|
83 |
+
'FromName' => 'Campaign From Name',
|
84 |
+
'FromEmail' => 'Campaign From Email Address',
|
85 |
+
'ReplyTo' => 'Campaign Reply To Email Address',
|
86 |
+
'ListIDs' => array('First List', 'Second List'),
|
87 |
+
'SegmentIDs' => array('First Segment', 'Second Segment'),
|
88 |
+
'TemplateID' => 'Template ID',
|
89 |
+
'TemplateContent' => $template_content
|
90 |
+
));
|
91 |
+
|
92 |
+
echo "Result of POST /api/v3/campaigns/{clientID}/fromtemplate\n<br />";
|
93 |
+
if($result->was_successful()) {
|
94 |
+
echo "Created with ID\n<br />".$result->response;
|
95 |
+
} else {
|
96 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
97 |
+
var_dump($result->response);
|
98 |
+
echo '</pre>';
|
99 |
+
}
|
lib/createsend/samples/campaign/delete.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to Delete', $auth);
|
9 |
+
$result = $wrap->delete();
|
10 |
+
|
11 |
+
echo "Result of DELETE /api/v3/campaigns/{id}\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Deleted with code\n<br />".$result->http_status_code;
|
14 |
+
} else {
|
15 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
16 |
+
var_dump($result->response);
|
17 |
+
echo '</pre>';
|
18 |
+
}
|
lib/createsend/samples/campaign/get_bounces.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get bounces for', $auth);
|
9 |
+
$result = $wrap->get_bounces('Get bounces since', 1, 50, 'email', 'asc');
|
10 |
+
//$result = $wrap->get_bounces(page, page size, order field, order direction);
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/campaigns/{id}/bounces\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got bounces\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_clicks.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get clicks for', $auth);
|
9 |
+
$result = $wrap->get_clicks('Get clicks since', 1, 50, 'email', 'asc');
|
10 |
+
//$result = $wrap->get_clicks(date('Y-m-d', strtotime('-30 days')), page, page size, order field, order direction);
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/campaigns/{id}/clicks\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got clicks\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_email_client_usage.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get the email client usage for', $auth);
|
9 |
+
$result = $wrap->get_email_client_usage();
|
10 |
+
|
11 |
+
echo "Result of GET /api/v3/campaigns/{id}/emailclientusage\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Got email client usage\n<br /><pre>";
|
14 |
+
var_dump($result->response);
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
}
|
19 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_lists_and_segments.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get lists for', $auth);
|
9 |
+
$result = $wrap->get_lists_and_segments();
|
10 |
+
|
11 |
+
echo "Result of GET /api/v3/campaigns/{id}/listsandsegments\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Got lists and segments\n<br /><pre>";
|
14 |
+
var_dump($result->response);
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
}
|
19 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_opens.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get opens for', $auth);
|
9 |
+
$result = $wrap->get_opens('Get opens since', 1, 50, 'email', 'asc');
|
10 |
+
//$result = $wrap->get_opens(date('Y-m-d', strtotime('-30 days')), page, page size, order field, order direction);
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/campaigns/{id}/opens\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got opens\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_recipients.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get recipients for', $auth);
|
9 |
+
$result = $wrap->get_recipients(1, 50, 'email', 'asc');
|
10 |
+
//$result = $wrap->get_recipients(page number, page size, order by, order direction);
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/campaigns/{id}/recipients\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got recipients\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_spam.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get spam complaints for', $auth);
|
9 |
+
$result = $wrap->get_spam('Get spam complaints since', 1, 50, 'email', 'asc');
|
10 |
+
//$result = $wrap->get_spam(date('Y-m-d', strtotime('-30 days')), page, page size, order field, order direction);
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/campaigns/{id}/spam\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got spam complaints\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_summary.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get the summary of', $auth);
|
9 |
+
$result = $wrap->get_summary();
|
10 |
+
|
11 |
+
echo "Result of GET /api/v3/campaigns/{id}/summary\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Got summary\n<br /><pre>";
|
14 |
+
var_dump($result->response);
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
}
|
19 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/get_unsubscribes.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to get unsubscribes for', $auth);
|
9 |
+
$result = $wrap->get_unsubscribes('Get unsubscribes since', 1, 50, 'email', 'asc');
|
10 |
+
//$result = $wrap->get_unsubscribes(date('Y-m-d', strtotime('-30 days')), page, page size, order field, order direction);
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/campaigns/{id}/unsubscribes\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got unsubscribes\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/campaign/send.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to Send', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->send(array(
|
11 |
+
'ConfirmationEmail' => 'Confirmation Email Address',
|
12 |
+
'SendDate' => 'Date to send (yyyy-mm-dd or immediately)'
|
13 |
+
));
|
14 |
+
|
15 |
+
echo "Result of POST /api/v3/campaigns/{id}/send\n<br />";
|
16 |
+
if($result->was_successful()) {
|
17 |
+
echo "Scheduled with code\n<br />".$result->http_status_code;
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
echo '</pre>';
|
22 |
+
}
|
lib/createsend/samples/campaign/send_preview.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to Test', $auth);
|
9 |
+
$result = $wrap->send_preview(array(
|
10 |
+
'test1@test.com',
|
11 |
+
'test2@test.com'
|
12 |
+
), 'Fallback');
|
13 |
+
|
14 |
+
echo "Result of POST /api/v3/campaigns/{id}/sendpreview\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Preview sent with code\n<br />".$result->http_status_code;
|
17 |
+
} else {
|
18 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
19 |
+
var_dump($result->response);
|
20 |
+
echo '</pre>';
|
21 |
+
}
|
lib/createsend/samples/campaign/unschedule.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_campaigns.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Campaigns('Campaign ID to unschedule', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->unschedule();
|
11 |
+
|
12 |
+
echo "Result of POST /api/v3/campaigns/{id}/unschedule\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Scheduled with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/client/create.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(NULL, $auth);
|
9 |
+
|
10 |
+
$result = $wrap->create(array(
|
11 |
+
'CompanyName' => 'Clients company name',
|
12 |
+
'Country' => 'Clients country',
|
13 |
+
'Timezone' => 'Clients timezone'
|
14 |
+
));
|
15 |
+
|
16 |
+
echo "Result of POST /api/v3/clients\n<br />";
|
17 |
+
if($result->was_successful()) {
|
18 |
+
echo "Created with ID\n<br />".$result->response;
|
19 |
+
} else {
|
20 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
21 |
+
var_dump($result->response);
|
22 |
+
echo '</pre>';
|
23 |
+
}
|
lib/createsend/samples/client/delete.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Client ID to Delete', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->delete();
|
11 |
+
|
12 |
+
echo "Result of DELETE /api/v3/clients/{id}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo 'Deleted';
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/client/get.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Your client ID', $auth);
|
9 |
+
$result = $wrap->get();
|
10 |
+
|
11 |
+
echo "Result of GET /api/v3/clients/{id}\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Got client <pre>";
|
14 |
+
var_dump($result->response);
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
}
|
19 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_campaigns.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get Campaigns for',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$result = $wrap->get_campaigns();
|
13 |
+
|
14 |
+
echo "Result of /api/v3/clients/{id}/campaigns\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got campaigns\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_drafts.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get drafts for',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$result = $wrap->get_drafts();
|
13 |
+
|
14 |
+
echo "Result of /api/v3/clients/{id}/drafts\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got drafts\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_lists.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get Lists for',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$result = $wrap->get_lists();
|
13 |
+
|
14 |
+
echo "Result of /api/v3/clients/{id}/lists\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got lists\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_lists_for_email.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get Lists for',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$email_address = 'your_email_address@example.com';
|
13 |
+
|
14 |
+
$result = $wrap->get_lists_for_email($email_address);
|
15 |
+
|
16 |
+
echo "Result of /api/v3/clients/{id}/listsforemail\n<br />";
|
17 |
+
if($result->was_successful()) {
|
18 |
+
echo "Got lists to which email address ".$email_address." is subscribed\n<br /><pre>";
|
19 |
+
var_dump($result->response);
|
20 |
+
} else {
|
21 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
22 |
+
var_dump($result->response);
|
23 |
+
}
|
24 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_scheduled.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get scheduled campaigns for',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$result = $wrap->get_scheduled();
|
13 |
+
|
14 |
+
echo "Result of /api/v3/clients/{id}/scheduled\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got scheduled campaigns\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_segments.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get segments for',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$result = $wrap->get_segments();
|
13 |
+
|
14 |
+
echo "Result of /api/v3/clients/{id}/segments\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got segments\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_suppressionlist.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get the suppression list of',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$result = $wrap->get_suppressionlist(1, 50, 'email', 'asc');
|
13 |
+
//$result = $wrap->get_suppressionlist(page number, page size, order by, order direction);
|
14 |
+
|
15 |
+
echo "Result of /api/v3/clients/{id}/suppressionlist\n<br />";
|
16 |
+
if($result->was_successful()) {
|
17 |
+
echo "Got suppression list\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
} else {
|
20 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
21 |
+
var_dump($result->response);
|
22 |
+
}
|
23 |
+
echo '</pre>';
|
lib/createsend/samples/client/get_templates.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients(
|
9 |
+
'ClientID to get the templates of',
|
10 |
+
$auth);
|
11 |
+
|
12 |
+
$result = $wrap->get_templates();
|
13 |
+
|
14 |
+
echo "Result of /api/v3/clients/{id}/templates\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got templates\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/client/set_basics.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Your client ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->set_basics(array(
|
11 |
+
'CompanyName' => 'Clients company name',
|
12 |
+
'Country' => 'Clients country',
|
13 |
+
'Timezone' => 'Clients timezone'
|
14 |
+
));
|
15 |
+
|
16 |
+
echo "Result of PUT /api/v3/clients/{id}/setbasics\n<br />";
|
17 |
+
if($result->was_successful()) {
|
18 |
+
echo "Updated with Code ".$result->http_status_code;
|
19 |
+
} else {
|
20 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
21 |
+
var_dump($result->response);
|
22 |
+
echo '</pre>';
|
23 |
+
}
|
lib/createsend/samples/client/set_monthly_billing.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Your client ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->set_monthly_billing(array(
|
11 |
+
'Currency' => 'USD',
|
12 |
+
'ClientPays' => true,
|
13 |
+
'MarkupPercentage' => 100/*,
|
14 |
+
'MonthlyScheme' => 'Basic' */
|
15 |
+
));
|
16 |
+
|
17 |
+
echo "Result of PUT /api/v3/clients/{id}/setmonthlybilling\n<br />";
|
18 |
+
if($result->was_successful()) {
|
19 |
+
echo "Updated with Code ".$result->http_status_code;
|
20 |
+
} else {
|
21 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
22 |
+
var_dump($result->response);
|
23 |
+
echo '</pre>';
|
24 |
+
}
|
lib/createsend/samples/client/set_payg_billing.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Your client ID', $auth);
|
9 |
+
|
10 |
+
/*
|
11 |
+
* Specific markup values can be set via the
|
12 |
+
*
|
13 |
+
* MarkupOnDelivery
|
14 |
+
* MarkupPerRecipient
|
15 |
+
* MarkupOnDesignSpamTest
|
16 |
+
*
|
17 |
+
* fields
|
18 |
+
*/
|
19 |
+
$result = $wrap->set_payg_billing(array(
|
20 |
+
'Currency' => 'USD',
|
21 |
+
'ClientPays' => true,
|
22 |
+
'MarkupPercentage' => 100,
|
23 |
+
'CanPurchaseCredits' => false/*,
|
24 |
+
'MarkupOnDelivery' => 4,
|
25 |
+
'MarkupPerRecipient' => 3,
|
26 |
+
'MarkupOnDesignSpamTest' => 7 */
|
27 |
+
));
|
28 |
+
|
29 |
+
echo "Result of PUT /api/v3/clients/{id}/setpaygbilling\n<br />";
|
30 |
+
if($result->was_successful()) {
|
31 |
+
echo "Updated with Code ".$result->http_status_code;
|
32 |
+
} else {
|
33 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
34 |
+
var_dump($result->response);
|
35 |
+
echo '</pre>';
|
36 |
+
}
|
lib/createsend/samples/client/suppress.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Your client ID', $auth);
|
9 |
+
|
10 |
+
$emails = array(
|
11 |
+
'example@example.com',
|
12 |
+
'another@example.com'
|
13 |
+
);
|
14 |
+
|
15 |
+
$result = $wrap->suppress($emails);
|
16 |
+
|
17 |
+
echo "Result of PUT /api/v3/clients/{id}/suppress\n<br />";
|
18 |
+
if($result->was_successful()) {
|
19 |
+
echo "Updated with Code ".$result->http_status_code;
|
20 |
+
} else {
|
21 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
22 |
+
var_dump($result->response);
|
23 |
+
echo '</pre>';
|
24 |
+
}
|
lib/createsend/samples/client/transfer_credits.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Client ID', $auth);
|
9 |
+
|
10 |
+
$transfer_details = array(
|
11 |
+
'Credits' => 200,
|
12 |
+
'CanUseMyCreditsWhenTheyRunOut' => false
|
13 |
+
);
|
14 |
+
|
15 |
+
$result = $wrap->transfer_credits($transfer_details);
|
16 |
+
|
17 |
+
echo "Result of POST /api/v3/clients/{id}/credits\n<br />";
|
18 |
+
if($result->was_successful()) {
|
19 |
+
echo "Transferred with response\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
} else {
|
22 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
23 |
+
var_dump($result->response);
|
24 |
+
echo '</pre>';
|
25 |
+
}
|
lib/createsend/samples/client/unsuppress.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_clients.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Clients('Your client ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->unsuppress('Email address to unsuppress');
|
11 |
+
|
12 |
+
echo "Result of PUT /api/v3/clients/{id}/unsuppress\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Updated with Code ".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/get_apikey.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../csrest_general.php';
|
4 |
+
|
5 |
+
$wrap = new CS_REST_General(NULL);
|
6 |
+
|
7 |
+
$result = $wrap->get_apikey('Your username', 'Your password', 'account.test.createsend.com');
|
8 |
+
|
9 |
+
echo "Result of /api/v3/apikey\n<br />";
|
10 |
+
if($result->was_successful()) {
|
11 |
+
echo "Got API Key\n<br />".$result->response->ApiKey;
|
12 |
+
} else {
|
13 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
14 |
+
var_dump($result->response);
|
15 |
+
echo '</pre>';
|
16 |
+
}
|
17 |
+
|
lib/createsend/samples/get_billing_details.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../csrest_general.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_General($auth);
|
9 |
+
|
10 |
+
|
11 |
+
$result = $wrap->get_billing_details();
|
12 |
+
|
13 |
+
echo "Result of /api/v3/billingdetails\n<br />";
|
14 |
+
if($result->was_successful()) {
|
15 |
+
echo "Got billing details\n<br /><pre>";
|
16 |
+
var_dump($result->response);
|
17 |
+
} else {
|
18 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
19 |
+
var_dump($result->response);
|
20 |
+
}
|
21 |
+
echo '</pre>';
|
lib/createsend/samples/get_clients.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../csrest_general.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_General($auth);
|
9 |
+
|
10 |
+
|
11 |
+
$result = $wrap->get_clients();
|
12 |
+
|
13 |
+
|
14 |
+
echo "Result of /api/v3/clients\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got clients\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/get_countries.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../csrest_general.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_General($auth);
|
9 |
+
|
10 |
+
|
11 |
+
$result = $wrap->get_countries();
|
12 |
+
|
13 |
+
echo "Result of /api/v3/countries\n<br />";
|
14 |
+
if($result->was_successful()) {
|
15 |
+
echo "Got countries\n<br /><pre>";
|
16 |
+
var_dump($result->response);
|
17 |
+
} else {
|
18 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
19 |
+
var_dump($result->response);
|
20 |
+
}
|
21 |
+
echo '</pre>';
|
lib/createsend/samples/get_systemdate.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../csrest_general.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_General($auth);
|
9 |
+
|
10 |
+
|
11 |
+
$result = $wrap->get_systemdate();
|
12 |
+
|
13 |
+
echo "Result of /api/v3/systemdate\n<br />";
|
14 |
+
if($result->was_successful()) {
|
15 |
+
echo "Got system date\n<br />".$result->response->SystemDate;
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
echo '</pre>';
|
20 |
+
}
|
lib/createsend/samples/get_timezones.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../csrest_general.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_General($auth);
|
9 |
+
|
10 |
+
|
11 |
+
$result = $wrap->get_timezones();
|
12 |
+
|
13 |
+
echo "Result of /api/v3/timezones\n<br />";
|
14 |
+
if($result->was_successful()) {
|
15 |
+
echo "Got timezones\n<br /><pre>";
|
16 |
+
var_dump($result->response);
|
17 |
+
} else {
|
18 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
19 |
+
var_dump($result->response);
|
20 |
+
}
|
21 |
+
echo '</pre>';
|
lib/createsend/samples/list/activate_webhook.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->activate_webhook('Webhook ID');
|
11 |
+
|
12 |
+
echo "Result of PUT /api/v3/lists/{ID}/webhooks/{WHID}/activate\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Activated with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/list/create.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists(NULL, $auth);
|
9 |
+
|
10 |
+
$result = $wrap->create('Lists Client ID', array(
|
11 |
+
'Title' => 'List Title',
|
12 |
+
'UnsubscribePage' => 'List unsubscribe page',
|
13 |
+
'ConfirmedOptIn' => true,
|
14 |
+
'ConfirmationSuccessPage' => 'List confirmation success page',
|
15 |
+
'UnsubscribeSetting' => CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS
|
16 |
+
));
|
17 |
+
|
18 |
+
echo "Result of POST /api/v3/lists/{clientID}\n<br />";
|
19 |
+
if($result->was_successful()) {
|
20 |
+
echo "Created with ID\n<br />".$result->response;
|
21 |
+
} else {
|
22 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
23 |
+
var_dump($result->response);
|
24 |
+
echo '</pre>';
|
25 |
+
}
|
lib/createsend/samples/list/create_custom_field.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
/*
|
11 |
+
* The DataType parameter must be one of
|
12 |
+
* CS_REST_CUSTOM_FIELD_TYPE_TEXT
|
13 |
+
* CS_REST_CUSTOM_FIELD_TYPE_NUMBER
|
14 |
+
* CS_REST_CUSTOM_FIELD_TYPE_MULTI_SELECTONE
|
15 |
+
* CS_REST_CUSTOM_FIELD_TYPE_MULTI_SELECTMANY
|
16 |
+
* CS_REST_CUSTOM_FIELD_TYPE_DATE
|
17 |
+
* CS_REST_CUSTOM_FIELD_TYPE_COUNTRY
|
18 |
+
* CS_REST_CUSTOM_FIELD_TYPE_USSTATE
|
19 |
+
*
|
20 |
+
*/
|
21 |
+
$result = $wrap->create_custom_field(array(
|
22 |
+
'FieldName' => 'Custom field name',
|
23 |
+
'DataType' => CS_REST_CUSTOM_FIELD_TYPE_MULTI_SELECTONE,
|
24 |
+
'Options' => array('First option', 'Second Option')
|
25 |
+
));
|
26 |
+
|
27 |
+
echo "Result of POST /api/v3/lists/{ID}/customfields\n<br />";
|
28 |
+
if($result->was_successful()) {
|
29 |
+
echo "Created with ID\n<br />".$result->response;
|
30 |
+
} else {
|
31 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
32 |
+
var_dump($result->response);
|
33 |
+
echo '</pre>';
|
34 |
+
}
|
lib/createsend/samples/list/create_webhook.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
/*
|
11 |
+
* The Events array must contain a combination of
|
12 |
+
* CS_REST_LIST_WEBHOOK_SUBSCRIBE
|
13 |
+
* CS_REST_LIST_WEBHOOK_DEACTIVATE
|
14 |
+
* CS_REST_LIST_WEBHOOK_UPDATE
|
15 |
+
*
|
16 |
+
* The payload format must be one of
|
17 |
+
* CS_REST_WEBHOOK_FORMAT_JSON or
|
18 |
+
* CS_REST_WEBHOOK_FORMAT_XML
|
19 |
+
*/
|
20 |
+
$result = $wrap->create_webhook(array(
|
21 |
+
'Events' => array(CS_REST_LIST_WEBHOOK_SUBSCRIBE, CS_REST_LIST_WEBHOOK_DEACTIVATE),
|
22 |
+
'Url' => 'http://www.example.com/webhook_receiver.php',
|
23 |
+
'PayloadFormat' => CS_REST_WEBHOOK_FORMAT_JSON
|
24 |
+
));
|
25 |
+
|
26 |
+
echo "Result of POST /api/v3/lists/{ID}/webhooks\n<br />";
|
27 |
+
if($result->was_successful()) {
|
28 |
+
echo "Created with ID\n<br />".$result->response;
|
29 |
+
} else {
|
30 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
31 |
+
var_dump($result->response);
|
32 |
+
echo '</pre>';
|
33 |
+
}
|
lib/createsend/samples/list/deactivate_webhook.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->deactivate_webhook('Webhook ID');
|
11 |
+
|
12 |
+
echo "Result of PUT /api/v3/lists/{ID}/webhooks/{WHID}/deactivate\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Deactivated with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/list/delete.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->delete();
|
11 |
+
|
12 |
+
echo "Result of DELETE /api/v3/lists/{ID}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Deleted with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/list/delete_custom_field.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->delete_custom_field('Custom field key');
|
11 |
+
|
12 |
+
echo "Result of DELETE /api/v3/lists/{ID}/{Key}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Deleted with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/list/delete_webhook.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->delete_webhook('Webhook ID');
|
11 |
+
|
12 |
+
echo "Result of DELETE /api/v3/lists/{ID}/webhooks/{WHID}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Deleted with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/list/get.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get();
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/lists/{ID}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got list details\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_active_subscribers.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_active_subscribers('Added since', 1, 50, 'email', 'asc');
|
11 |
+
//$result = $wrap->get_active_subscribers(date('Y-m-d', strtotime('-30 days')),
|
12 |
+
// page number, page size, order by, order direction);
|
13 |
+
|
14 |
+
echo "Result of GET /api/v3/lists/{ID}/active\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got subscribers\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_bounced_subscribers.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_bounced_subscribers('Bounced Since', 1, 50, 'email', 'asc');
|
11 |
+
//$result = $wrap->get_bounced_subscribers(date('Y-m-d', strtotime('-30 days')),
|
12 |
+
// page number, page size, order by, order direction);
|
13 |
+
|
14 |
+
echo "Result of GET /api/v3/lists/{ID}/bounced\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got subscribers\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_custom_fields.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_custom_fields();
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/lists/{ID}/customfields\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got custom fields\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_deleted_subscribers.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_deleted_subscribers('Deleted Since', 1, 50, 'email', 'asc');
|
11 |
+
//$result = $wrap->get_bounced_subscribers(date('Y-m-d', strtotime('-30 days')),
|
12 |
+
// page number, page size, order by, order direction);
|
13 |
+
|
14 |
+
echo "Result of GET /api/v3/lists/{ID}/deleted\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got subscribers\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_segments.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_segments();
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/lists/{ID}/segments\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got custom fields\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_stats.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_stats();
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/lists/{ID}/stats\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got list stats\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_unconfirmed_subscribers.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_unconfirmed_subscribers('Added since', 1, 50, 'email', 'asc');
|
11 |
+
//$result = $wrap->get_active_subscribers(date('Y-m-d', strtotime('-30 days')),
|
12 |
+
// page number, page size, order by, order direction);
|
13 |
+
|
14 |
+
echo "Result of GET /api/v3/lists/{ID}/unconfirmed\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got subscribers\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_unsubscribed_subscribers.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_unsubscribed_subscribers('Unsubscribed Since', 1, 50, 'email', 'asc');
|
11 |
+
//$result = $wrap->get_bounced_subscribers(date('Y-m-d', strtotime('-30 days')),
|
12 |
+
// page number, page size, order by, order direction);
|
13 |
+
|
14 |
+
echo "Result of GET /api/v3/lists/{ID}/unsubscribed\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got subscribers\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/list/get_webhooks.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_webhooks();
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/lists/{ID}/webhooks\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got list webhooks\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/list/list_webhook_receiver.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../class/serialisation.php';
|
4 |
+
require_once '../../class/log.php';
|
5 |
+
|
6 |
+
// Get a serialiser for the webhook data - We assume here that we're dealing with json
|
7 |
+
$serialiser = CS_REST_SERIALISATION_get_available(new CS_REST_Log(CS_REST_LOG_NONE));
|
8 |
+
|
9 |
+
// Read all the posted data from the input stream
|
10 |
+
$raw_post = file_get_contents("php://input");
|
11 |
+
|
12 |
+
// We can log the raw data straight to disk
|
13 |
+
$raw_log = fopen('raw_log.txt', 'a') or die('Can\'t open raw log');
|
14 |
+
fwrite($raw_log, date('H:i:s').$raw_post."\n\n\n");
|
15 |
+
fclose($raw_log);
|
16 |
+
|
17 |
+
// And deserialise the data
|
18 |
+
$deserialised_data = $serialiser->deserialise($raw_post);
|
19 |
+
|
20 |
+
$parsed_log = fopen('parsed_log.txt', 'a') or die('Can\'t open parsed log');
|
21 |
+
|
22 |
+
fwrite($parsed_log, date('H:i:s').' Got hook data for list: '.$deserialised_data->ListID."\n");
|
23 |
+
|
24 |
+
// And now just do something with the data
|
25 |
+
foreach ($deserialised_data->Events as $event) {
|
26 |
+
fwrite($parsed_log, 'Got '.$event->Type.' event for: '.$event->EmailAddress."\n");
|
27 |
+
fwrite($parsed_log, var_export($event, true));
|
28 |
+
}
|
29 |
+
|
30 |
+
fclose($parsed_log);
|
31 |
+
?>
|
lib/createsend/samples/list/test_webhook.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->test_webhook('Webhook ID');
|
11 |
+
|
12 |
+
echo "Result of POST /api/v3/lists/{ID}/webhooks/{WHID}/test\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Test was successful";
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/list/update.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->update(array(
|
11 |
+
'Title' => 'List Title',
|
12 |
+
'UnsubscribePage' => 'List unsubscribe page',
|
13 |
+
'ConfirmedOptIn' => true,
|
14 |
+
'ConfirmationSuccessPage' => 'List confirmation success page',
|
15 |
+
'UnsubscribeSetting' => CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS,
|
16 |
+
'AddUnsubscribesToSuppList' => true,
|
17 |
+
'ScrubActiveWithSuppList' => true
|
18 |
+
));
|
19 |
+
|
20 |
+
echo "Result of PUT /api/v3/lists/{ID}\n<br />";
|
21 |
+
if($result->was_successful()) {
|
22 |
+
echo "Updated with code\n<br />".$result->http_status_code;
|
23 |
+
} else {
|
24 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
25 |
+
var_dump($result->response);
|
26 |
+
echo '</pre>';
|
27 |
+
}
|
lib/createsend/samples/list/update_custom_field.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->update_custom_field(
|
11 |
+
'[CustomFieldKey]',
|
12 |
+
array(
|
13 |
+
'FieldName' => 'new field name',
|
14 |
+
'VisibleInPreferenceCenter' => true
|
15 |
+
)
|
16 |
+
);
|
17 |
+
|
18 |
+
echo "Result of PUT /api/v3/lists/{ID}/customfields/{fieldkey}\n<br />";
|
19 |
+
if($result->was_successful()) {
|
20 |
+
echo "Updated with code\n<br />".$result->http_status_code;
|
21 |
+
} else {
|
22 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
23 |
+
var_dump($result->response);
|
24 |
+
echo '</pre>';
|
25 |
+
}
|
lib/createsend/samples/list/update_field_options.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_lists.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Lists('List ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->update_field_options('[CustomFieldKey]',
|
11 |
+
array('Option 1', 'Option 2'), true);
|
12 |
+
|
13 |
+
echo "Result of PUT /api/v3/lists/{ID}/customfields/{fieldkey}/options\n<br />";
|
14 |
+
if($result->was_successful()) {
|
15 |
+
echo "Updated with code\n<br />".$result->http_status_code;
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
echo '</pre>';
|
20 |
+
}
|
lib/createsend/samples/segment/add_rule.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_segments.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Segments('Segment ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->add_rule(array(
|
11 |
+
'Subject' => 'EmailAddress',
|
12 |
+
'Clauses' => array('CONTAINS example.com')
|
13 |
+
));
|
14 |
+
|
15 |
+
echo "Result of PUT /api/v3/segments/{segmentID}/rules\n<br />";
|
16 |
+
if($result->was_successful()) {
|
17 |
+
echo "Updated with code\n<br />".$result->http_status_code;
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
echo '</pre>';
|
22 |
+
}
|
lib/createsend/samples/segment/clear_rules.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_segments.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Segments('Segment ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->clear_rules();
|
11 |
+
|
12 |
+
echo "Result of DELETE /api/v3/segments/{ID}/rules\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Cleared with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/segment/create.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_segments.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Segments(NULL, $auth);
|
9 |
+
|
10 |
+
$result = $wrap->create('Segments List ID', array(
|
11 |
+
'Title' => 'Segment Title',
|
12 |
+
'Rules' => array(
|
13 |
+
array(
|
14 |
+
'Subject' => 'EmailAddress',
|
15 |
+
'Clauses' => array('CONTAINS example.com')
|
16 |
+
),
|
17 |
+
array(
|
18 |
+
'Subject' => '[customfield]',
|
19 |
+
'Clauses' => array('PROVIDED', 'EQUALS 1')
|
20 |
+
)
|
21 |
+
)
|
22 |
+
));
|
23 |
+
|
24 |
+
echo "Result of POST /api/v3/segments/{listID}\n<br />";
|
25 |
+
if($result->was_successful()) {
|
26 |
+
echo "Created with ID\n<br />".$result->response;
|
27 |
+
} else {
|
28 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
29 |
+
var_dump($result->response);
|
30 |
+
echo '</pre>';
|
31 |
+
}
|
lib/createsend/samples/segment/delete.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_segments.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Segments('Segment ID', $auth);
|
9 |
+
|
10 |
+
|
11 |
+
$result = $wrap->delete();
|
12 |
+
|
13 |
+
echo "Result of DELETE /api/v3/segments/{ID}\n<br />";
|
14 |
+
if($result->was_successful()) {
|
15 |
+
echo "Deleted with code\n<br />".$result->http_status_code;
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
echo '</pre>';
|
20 |
+
}
|
lib/createsend/samples/segment/get.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_segments.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Segments('Segment ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get();
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/segments/{ID}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got segment details\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/segment/get_subscribers.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_segments.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Segments('Segment ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get_subscribers('Added since', 1, 50, 'email', 'asc');
|
11 |
+
//$result = $wrap->get_subscribers(date('Y-m-d', strtotime('-30 days')),
|
12 |
+
// page number, page size, order by, order description);
|
13 |
+
|
14 |
+
echo "Result of GET /api/v3/segments/{segment id}/active\n<br />";
|
15 |
+
if($result->was_successful()) {
|
16 |
+
echo "Got subscribers\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
} else {
|
19 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
20 |
+
var_dump($result->response);
|
21 |
+
}
|
22 |
+
echo '</pre>';
|
lib/createsend/samples/segment/update.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_segments.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Segments('Segment ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->update(array(
|
11 |
+
'Title' => 'Segment Title',
|
12 |
+
'Rules' => array(
|
13 |
+
array(
|
14 |
+
'Subject' => 'EmailAddress',
|
15 |
+
'Clauses' => array('CONTAINS example.com')
|
16 |
+
),
|
17 |
+
array(
|
18 |
+
'Subject' => '[customfield]',
|
19 |
+
'Clauses' => array('PROVIDED', 'EQUALS 1')
|
20 |
+
)
|
21 |
+
)
|
22 |
+
));
|
23 |
+
|
24 |
+
echo "Result of PUT /api/v3/segments/{segmentID}\n<br />";
|
25 |
+
if($result->was_successful()) {
|
26 |
+
echo "Updated with code\n<br />".$result->http_status_code;
|
27 |
+
} else {
|
28 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
29 |
+
var_dump($result->response);
|
30 |
+
echo '</pre>';
|
31 |
+
}
|
lib/createsend/samples/subscriber/add.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_subscribers.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Subscribers('Your list ID', $auth);
|
9 |
+
$result = $wrap->add(array(
|
10 |
+
'EmailAddress' => 'Subscriber email',
|
11 |
+
'Name' => 'Subscriber name',
|
12 |
+
'CustomFields' => array(
|
13 |
+
array(
|
14 |
+
'Key' => 'Field 1 Key',
|
15 |
+
'Value' => 'Field Value'
|
16 |
+
),
|
17 |
+
array(
|
18 |
+
'Key' => 'Field 2 Key',
|
19 |
+
'Value' => 'Field Value'
|
20 |
+
),
|
21 |
+
array(
|
22 |
+
'Key' => 'Multi Option Field 1',
|
23 |
+
'Value' => 'Option 1'
|
24 |
+
),
|
25 |
+
array(
|
26 |
+
'Key' => 'Multi Option Field 1',
|
27 |
+
'Value' => 'Option 2'
|
28 |
+
)
|
29 |
+
),
|
30 |
+
'Resubscribe' => true
|
31 |
+
));
|
32 |
+
|
33 |
+
echo "Result of POST /api/v3/subscribers/{list id}.{format}\n<br />";
|
34 |
+
if($result->was_successful()) {
|
35 |
+
echo "Subscribed with code ".$result->http_status_code;
|
36 |
+
} else {
|
37 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
38 |
+
var_dump($result->response);
|
39 |
+
echo '</pre>';
|
40 |
+
}
|
lib/createsend/samples/subscriber/delete.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_subscribers.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Subscribers('Your list ID', $auth);
|
9 |
+
$result = $wrap->delete('Email Address');
|
10 |
+
|
11 |
+
echo "Result of DELETE /api/v3/subscribers/{list id}.{format}?email={emailAddress}\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Unsubscribed with code ".$result->http_status_code;
|
14 |
+
} else {
|
15 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
16 |
+
var_dump($result->response);
|
17 |
+
echo '</pre>';
|
18 |
+
}
|
lib/createsend/samples/subscriber/get.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_subscribers.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Subscribers('Your list ID', $auth);
|
9 |
+
$result = $wrap->get('Email address');
|
10 |
+
|
11 |
+
echo "Result of GET /api/v3/subscribers/{list id}.{format}?email={email}\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Got subscriber <pre>";
|
14 |
+
var_dump($result->response);
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
}
|
19 |
+
echo '</pre>';
|
lib/createsend/samples/subscriber/get_history.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_subscribers.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Subscribers('Your list ID', $auth);
|
9 |
+
$result = $wrap->get_history('Email address');
|
10 |
+
|
11 |
+
echo "Result of GET /api/v3/subscribers/{list id}/history.{format}?email={email}\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Got subscriber history <pre>";
|
14 |
+
var_dump($result->response);
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
}
|
19 |
+
echo '</pre>';
|
lib/createsend/samples/subscriber/import.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_subscribers.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Subscribers('Your list ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->import(array(
|
11 |
+
array(
|
12 |
+
'EmailAddress' => 'Subscriber email',
|
13 |
+
'Name' => 'Subscriber name',
|
14 |
+
'CustomFields' => array(
|
15 |
+
array(
|
16 |
+
'Key' => 'Field 1 Key',
|
17 |
+
'Value' => 'Field Value'
|
18 |
+
),
|
19 |
+
array(
|
20 |
+
'Key' => 'Field 2 Key',
|
21 |
+
'Value' => 'Field Value'
|
22 |
+
),
|
23 |
+
array(
|
24 |
+
'Key' => 'Multi Option Field 1',
|
25 |
+
'Value' => 'Option 1'
|
26 |
+
),
|
27 |
+
array(
|
28 |
+
'Key' => 'Multi Option Field 1',
|
29 |
+
'Value' => 'Option 2'
|
30 |
+
)
|
31 |
+
)
|
32 |
+
),
|
33 |
+
array(
|
34 |
+
'EmailAddress' => '2nd Subscriber email',
|
35 |
+
'Name' => '2nd Subscriber name',
|
36 |
+
'CustomFields' => array(
|
37 |
+
array(
|
38 |
+
'Key' => 'Field 1 Key',
|
39 |
+
'Value' => 'Field Value'
|
40 |
+
),
|
41 |
+
array(
|
42 |
+
'Key' => 'Field 2 Key',
|
43 |
+
'Value' => 'Field Value'
|
44 |
+
),
|
45 |
+
array(
|
46 |
+
'Key' => 'Multi Option Field 1',
|
47 |
+
'Value' => 'Option 1'
|
48 |
+
),
|
49 |
+
array(
|
50 |
+
'Key' => 'Multi Option Field 1',
|
51 |
+
'Value' => 'Option 2'
|
52 |
+
)
|
53 |
+
)
|
54 |
+
)
|
55 |
+
), true);
|
56 |
+
|
57 |
+
echo "Result of POST /api/v3/subscribers/{list id}/import.{format}\n<br />";
|
58 |
+
if($result->was_successful()) {
|
59 |
+
echo "Subscribed with results <pre>";
|
60 |
+
var_dump($result->response);
|
61 |
+
} else {
|
62 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
63 |
+
var_dump($result->response);
|
64 |
+
echo '</pre>';
|
65 |
+
|
66 |
+
if($result->response->ResultData->TotalExistingSubscribers > 0) {
|
67 |
+
echo 'Updated '.$result->response->ResultData->TotalExistingSubscribers.' existing subscribers in the list';
|
68 |
+
} else if($result->response->ResultData->TotalNewSubscribers > 0) {
|
69 |
+
echo 'Added '.$result->response->ResultData->TotalNewSubscribers.' to the list';
|
70 |
+
} else if(count($result->response->ResultData->DuplicateEmailsInSubmission) > 0) {
|
71 |
+
echo $result->response->ResultData->DuplicateEmailsInSubmission.' were duplicated in the provided array.';
|
72 |
+
}
|
73 |
+
|
74 |
+
echo 'The following emails failed to import correctly.<pre>';
|
75 |
+
var_dump($result->response->ResultData->FailureDetails);
|
76 |
+
}
|
77 |
+
echo '</pre>';
|
lib/createsend/samples/subscriber/unsubscribe.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_subscribers.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Subscribers('Your list ID', $auth);
|
9 |
+
$result = $wrap->unsubscribe('Email Address');
|
10 |
+
|
11 |
+
echo "Result of GET /api/v3/subscribers/{list id}/unsubscribe.{format}\n<br />";
|
12 |
+
if($result->was_successful()) {
|
13 |
+
echo "Unsubscribed with code ".$result->http_status_code;
|
14 |
+
} else {
|
15 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
16 |
+
var_dump($result->response);
|
17 |
+
echo '</pre>';
|
18 |
+
}
|
lib/createsend/samples/subscriber/update.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_subscribers.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Subscribers('Your list ID', $auth);
|
9 |
+
$result = $wrap->update('Old Email Address', array(
|
10 |
+
'EmailAddress' => 'New Email Address',
|
11 |
+
'Name' => 'Subscriber name',
|
12 |
+
'CustomFields' => array(
|
13 |
+
array(
|
14 |
+
'Key' => 'Field Key',
|
15 |
+
'Value' => 'Field Value'
|
16 |
+
)
|
17 |
+
),
|
18 |
+
'Resubscribe' => true
|
19 |
+
));
|
20 |
+
|
21 |
+
echo "Result of PUT /api/v3/subscribers/{list id}.{format}?email={email}\n<br />";
|
22 |
+
if($result->was_successful()) {
|
23 |
+
echo "Subscribed with code ".$result->http_status_code;
|
24 |
+
} else {
|
25 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
26 |
+
var_dump($result->response);
|
27 |
+
echo '</pre>';
|
28 |
+
}
|
lib/createsend/samples/template/create.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_templates.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Templates(NULL, $auth);
|
9 |
+
|
10 |
+
$result = $wrap->create('Templates Client ID', array(
|
11 |
+
'Name' => 'Template Name',
|
12 |
+
'HtmlPageURL' => 'Template HTML Url',
|
13 |
+
'ZipFileURL' => 'Template Images Zip URL'
|
14 |
+
));
|
15 |
+
|
16 |
+
echo "Result of POST /api/v3/templates/{clientID}\n<br />";
|
17 |
+
if($result->was_successful()) {
|
18 |
+
echo "Created with ID\n<br />".$result->response;
|
19 |
+
} else {
|
20 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
21 |
+
var_dump($result->response);
|
22 |
+
echo '</pre>';
|
23 |
+
}
|
lib/createsend/samples/template/delete.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_templates.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Templates('Template ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->delete();
|
11 |
+
|
12 |
+
echo "Result of DELETE /api/v3/templates/{ID}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Deleted with code\n<br />".$result->http_status_code;
|
15 |
+
} else {
|
16 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
17 |
+
var_dump($result->response);
|
18 |
+
echo '</pre>';
|
19 |
+
}
|
lib/createsend/samples/template/get.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_templates.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Templates('Template ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->get();
|
11 |
+
|
12 |
+
echo "Result of GET /api/v3/templates/{ID}\n<br />";
|
13 |
+
if($result->was_successful()) {
|
14 |
+
echo "Got template details\n<br /><pre>";
|
15 |
+
var_dump($result->response);
|
16 |
+
} else {
|
17 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
18 |
+
var_dump($result->response);
|
19 |
+
}
|
20 |
+
echo '</pre>';
|
lib/createsend/samples/template/update.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once '../../csrest_templates.php';
|
4 |
+
|
5 |
+
$auth = array(
|
6 |
+
'access_token' => 'your access token',
|
7 |
+
'refresh_token' => 'your refresh token');
|
8 |
+
$wrap = new CS_REST_Templates('Template ID', $auth);
|
9 |
+
|
10 |
+
$result = $wrap->update(array(
|
11 |
+
'Name' => 'Template Name',
|
12 |
+
'HtmlPageURL' => 'Template HTML Url',
|
13 |
+
'ZipFileURL' => 'Template Images Zip URL'
|
14 |
+
));
|
15 |
+
|
16 |
+
echo "Result of PUT /api/v3/templates/{ID}\n<br />";
|
17 |
+
if($result->was_successful()) {
|
18 |
+
echo "Updated with code\n<br />".$result->http_status_code;
|
19 |
+
} else {
|
20 |
+
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
|
21 |
+
var_dump($result->response);
|
22 |
+
echo '</pre>';
|
23 |
+
}
|
lib/createsend/tests/all_tests.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
3 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/mock_objects.php';
|
5 |
+
|
6 |
+
class AllTests extends TestSuite {
|
7 |
+
function AllTests() {
|
8 |
+
$this->TestSuite('All Tests');
|
9 |
+
$this->addFile('class_tests/transport_test.php');
|
10 |
+
$this->addFile('class_tests/response_tests.php');
|
11 |
+
$this->addFile('csrest_test.php');
|
12 |
+
$this->addFile('csrest_clients_test.php');
|
13 |
+
$this->addFile('csrest_campaigns_test.php');
|
14 |
+
$this->addFile('csrest_lists_test.php');
|
15 |
+
$this->addFile('csrest_subscribers_test.php');
|
16 |
+
$this->addFile('csrest_template_test.php');
|
17 |
+
$this->addFile('csrest_segments_test.php');
|
18 |
+
$this->addFile('csrest_people_test.php');
|
19 |
+
$this->addFile('csrest_administrators_test.php');
|
20 |
+
}
|
21 |
+
}
|
lib/createsend/tests/class_tests/response_tests.php
ADDED
@@ -0,0 +1,943 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
require_once '../class/serialisation.php';
|
6 |
+
require_once '../class/log.php';
|
7 |
+
|
8 |
+
@Mock::generate('CS_REST_Log');
|
9 |
+
|
10 |
+
class CS_REST_TestResponseDeserialisation extends UnitTestCase {
|
11 |
+
var $responses;
|
12 |
+
var $deserialiser;
|
13 |
+
|
14 |
+
function setUp() {
|
15 |
+
$util_responses = array(
|
16 |
+
'clients' => array(
|
17 |
+
array(
|
18 |
+
'ClientID' => '4a397ccaaa55eb4e6aa1221e1e2d7122',
|
19 |
+
'Name' => 'Client One'
|
20 |
+
),
|
21 |
+
array(
|
22 |
+
'ClientID' => 'a206def0582eec7dae47d937a4109cb2',
|
23 |
+
'Name' => 'Client Two'
|
24 |
+
)
|
25 |
+
),
|
26 |
+
'apikey' => array(
|
27 |
+
'ApiKey' => '981298u298ue98u219e8u2e98u2'
|
28 |
+
),
|
29 |
+
'systemdate' => array(
|
30 |
+
'SystemDate' => '2010-10-15 09:27:00'
|
31 |
+
),
|
32 |
+
'custom_api_error' => array(
|
33 |
+
'Code' => 98798,
|
34 |
+
'Message' => 'A crazy API error'
|
35 |
+
),
|
36 |
+
'countries' => array(
|
37 |
+
"Afghanistan",
|
38 |
+
"Albania",
|
39 |
+
"Algeria",
|
40 |
+
"American Samoa",
|
41 |
+
"Andorra",
|
42 |
+
"Angola",
|
43 |
+
"Anguilla",
|
44 |
+
"Antigua & Barbuda",
|
45 |
+
"Argentina"
|
46 |
+
),
|
47 |
+
'timezones' => array(
|
48 |
+
"(GMT) Casablanca",
|
49 |
+
"(GMT) Coordinated Universal Time",
|
50 |
+
"(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London",
|
51 |
+
"(GMT) Monrovia, Reykjavik",
|
52 |
+
"(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",
|
53 |
+
"(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",
|
54 |
+
"(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
|
55 |
+
)
|
56 |
+
);
|
57 |
+
|
58 |
+
$client_responses = array(
|
59 |
+
'client_details' => array(
|
60 |
+
'ApiKey' => '7c86c29e930f4a1c3836eb57e9e3f4b283b06857489a750e',
|
61 |
+
'BasicDetails' => array(
|
62 |
+
'ClientID' => '4a397ccaaa55eb4e6aa1221e1e2d7122',
|
63 |
+
'CompanyName' => 'Client One',
|
64 |
+
'Country' => 'Australia',
|
65 |
+
'TimeZone' => '(GMT+10:00) Canberra, Melbourne, Sydney'
|
66 |
+
),
|
67 |
+
'BillingDetails' => array(
|
68 |
+
'CanPurchaseCredits' => true,
|
69 |
+
'MarkupOnDesignSpamTest' => 0,
|
70 |
+
'ClientPays' => true,
|
71 |
+
'BaseRatePerRecipient' => 1,
|
72 |
+
'MarkupPerRecipient' => 0,
|
73 |
+
'MarkupOnDelivery' => 0,
|
74 |
+
'BaseDeliveryRate' => 5,
|
75 |
+
'Currency' => 'USD',
|
76 |
+
'BaseDesignSpamTestRate' => 5
|
77 |
+
)
|
78 |
+
),
|
79 |
+
'create_client' => '32a381c49a2df99f1d0c6f3c112352b9',
|
80 |
+
'campaigns' => array(
|
81 |
+
array(
|
82 |
+
'WebVersionURL' => 'http://hello.createsend.com/t/ViewEmail/r/765E86829575EE2C/C67FD2F38AC4859C/',
|
83 |
+
'WebVersionTextURL' => 'http://createsend.com/t/r-765E86829575EE2C/t',
|
84 |
+
'CampaignID' => 'fc0ce7105baeaf97f47c99be31d02a91',
|
85 |
+
'Subject' => 'Campaign One',
|
86 |
+
'Name' => 'Campaign One',
|
87 |
+
'FromName' => 'My Name',
|
88 |
+
'FromEmail' => 'myemail@example.com',
|
89 |
+
'ReplyTo' => 'myemail@example.com',
|
90 |
+
'SentDate' => '2010-10-12 12:58:00',
|
91 |
+
'TotalRecipients' => 2245
|
92 |
+
),
|
93 |
+
array(
|
94 |
+
'WebVersionURL' => 'http://hello.createsend.com/t/ViewEmail/r/DD543566A87C9B8B/C67FD2F38AC4859C/',
|
95 |
+
'WebVersionTextURL' => 'http://createsend.com/t/r-DD543566A87C9B8B/t',
|
96 |
+
'CampaignID' => '072472b88c853ae5dedaeaf549a8d607',
|
97 |
+
'Subject' => 'Campaign Two',
|
98 |
+
'Name' => 'Campaign Two',
|
99 |
+
'FromName' => 'My Name',
|
100 |
+
'FromEmail' => 'myemail@example.com',
|
101 |
+
'ReplyTo' => 'myemail@example.com',
|
102 |
+
'SentDate' => '2010-10-06 16:20:00',
|
103 |
+
'TotalRecipients' => 11222
|
104 |
+
)
|
105 |
+
),
|
106 |
+
'scheduled' => array(
|
107 |
+
array(
|
108 |
+
"DateScheduled" => "2011-05-25 10:40:00",
|
109 |
+
"ScheduledTimeZone" => "(GMT+10:00) Canberra, Melbourne, Sydney",
|
110 |
+
"CampaignID" => "827dbbd2161ea9989fa11ad562c66937",
|
111 |
+
"Name" => "Magic Issue One",
|
112 |
+
"Subject" => "Magic Issue One",
|
113 |
+
'FromName' => 'My Name',
|
114 |
+
'FromEmail' => 'myemail@example.com',
|
115 |
+
'ReplyTo' => 'myemail@example.com',
|
116 |
+
"DateCreated" => "2011-05-24 10:37:00",
|
117 |
+
"PreviewURL" => "http://createsend.com/t/r-DD543521A87C9B8B",
|
118 |
+
"PreviewTextURL" => "http://createsend.com/t/r-DD543521A87C9B8B/t"
|
119 |
+
),
|
120 |
+
array(
|
121 |
+
"DateScheduled" => "2011-05-29 11:20:00",
|
122 |
+
"ScheduledTimeZone" => "(GMT+10:00) Canberra, Melbourne, Sydney",
|
123 |
+
"CampaignID" => "4f54bbd2161e65789fa11ad562c66937",
|
124 |
+
"Name" => "Magic Issue Two",
|
125 |
+
"Subject" => "Magic Issue Two",
|
126 |
+
'FromName' => 'My Name',
|
127 |
+
'FromEmail' => 'myemail@example.com',
|
128 |
+
'ReplyTo' => 'myemail@example.com',
|
129 |
+
"DateCreated" => "2011-05-24 10:39:00",
|
130 |
+
"PreviewURL" => "http://createsend.com/t/r-DD913521A87C9B8B",
|
131 |
+
"PreviewTextURL" => "http://createsend.com/t/r-DD913521A87C9B8B/t"
|
132 |
+
)
|
133 |
+
),
|
134 |
+
'drafts' => array(
|
135 |
+
array(
|
136 |
+
"CampaignID" => "7c7424792065d92627139208c8c01db1",
|
137 |
+
"Name" => "Draft One",
|
138 |
+
"Subject" => "Draft One",
|
139 |
+
'FromName' => 'My Name',
|
140 |
+
'FromEmail' => 'myemail@example.com',
|
141 |
+
'ReplyTo' => 'myemail@example.com',
|
142 |
+
"DateCreated" => "2010-08-19 16:08:00",
|
143 |
+
"PreviewURL" => "http://hello.createsend.com/t/ViewEmail/r/E97A7BB2E6983DA1/C67FD2F38AC4859C/",
|
144 |
+
"PreviewTextURL" => "http://createsend.com/t/r-E97A7BB2E6983DA1/t"
|
145 |
+
),
|
146 |
+
array(
|
147 |
+
"CampaignID" => "2e928e982065d92627139208c8c01db1",
|
148 |
+
"Name" => "Draft Two",
|
149 |
+
"Subject" => "Draft Two",
|
150 |
+
'FromName' => 'My Name',
|
151 |
+
'FromEmail' => 'myemail@example.com',
|
152 |
+
'ReplyTo' => 'myemail@example.com',
|
153 |
+
"DateCreated" => "2010-08-19 16:08:00",
|
154 |
+
"PreviewURL" => "http://hello.createsend.com/t/ViewEmail/r/E97A7BB2E6983DA1/C67FD2F38AC4859C/",
|
155 |
+
"PreviewTextURL" => "http://createsend.com/t/r-E97A7BB2E6983DA1/t"
|
156 |
+
)
|
157 |
+
),
|
158 |
+
'lists' => array(
|
159 |
+
array(
|
160 |
+
"ListID" => "a58ee1d3039b8bec838e6d1482a8a965",
|
161 |
+
"Name" => "List One"
|
162 |
+
),
|
163 |
+
array(
|
164 |
+
"ListID" => "99bc35084a5739127a8ab81eae5bd305",
|
165 |
+
"Name" => "List Two"
|
166 |
+
)
|
167 |
+
),
|
168 |
+
'segments' => array(
|
169 |
+
array(
|
170 |
+
'ListID' => 'a58ee1d3039b8bec838e6d1482a8a965',
|
171 |
+
'SegmentID' => '46aa5e01fd43381863d4e42cf277d3a9',
|
172 |
+
'Title' => 'Segment One'
|
173 |
+
),
|
174 |
+
array(
|
175 |
+
'ListID' => '8dffb94c60c5faa3d40f496f2aa58a8a',
|
176 |
+
'SegmentID' => 'dhw9q8jd9q8wd09quw0d909wid9i09iq',
|
177 |
+
'Title' => 'Segment Two'
|
178 |
+
)
|
179 |
+
),
|
180 |
+
'suppressionlist' => array(
|
181 |
+
"Results" => array(
|
182 |
+
array(
|
183 |
+
"SuppressionReason" => "Unsubscribed",
|
184 |
+
"EmailAddress" => "example+1@example.com",
|
185 |
+
"Date" => "2010-10-26 10:55:31",
|
186 |
+
"State" => "Suppressed"
|
187 |
+
),
|
188 |
+
array(
|
189 |
+
"SuppressionReason" => "Unsubscribed",
|
190 |
+
"EmailAddress" => "example+2@example.com",
|
191 |
+
"Date" => "2010-10-26 10:55:31",
|
192 |
+
"State" => "Suppressed"
|
193 |
+
),
|
194 |
+
array(
|
195 |
+
"SuppressionReason" => "Unsubscribed",
|
196 |
+
"EmailAddress" => "example+3@example.com",
|
197 |
+
"Date" => "2010-10-26 10:55:31",
|
198 |
+
"State" => "Suppressed"
|
199 |
+
),
|
200 |
+
array(
|
201 |
+
"SuppressionReason" => "Unsubscribed",
|
202 |
+
"EmailAddress" => "subscriber@example.com",
|
203 |
+
"Date" => "2010-10-25 13:11:04",
|
204 |
+
"State" => "Suppressed"
|
205 |
+
),
|
206 |
+
array(
|
207 |
+
"SuppressionReason" => "Unsubscribed",
|
208 |
+
"EmailAddress" => "subscriberone@example.com",
|
209 |
+
"Date" => "2010-10-25 13:04:15",
|
210 |
+
"State" => "Suppressed"
|
211 |
+
)
|
212 |
+
),
|
213 |
+
"ResultsOrderedBy" => "email",
|
214 |
+
"OrderDirection" => "asc",
|
215 |
+
"PageNumber" => 1,
|
216 |
+
"PageSize" => 1000,
|
217 |
+
"RecordsOnThisPage" => 5,
|
218 |
+
"TotalNumberOfRecords" => 5,
|
219 |
+
"NumberOfPages" => 1
|
220 |
+
)
|
221 |
+
);
|
222 |
+
|
223 |
+
$subscriber_responses = array(
|
224 |
+
'active_subscribers' => array(
|
225 |
+
"Results" => array(
|
226 |
+
array(
|
227 |
+
"EmailAddress" => "subs+7t8787Y@example.com",
|
228 |
+
"Name" => "Person One",
|
229 |
+
"Date" => "2010-10-25 10:28:00",
|
230 |
+
"State" => "Active",
|
231 |
+
"CustomFields" => array(
|
232 |
+
array(
|
233 |
+
"Key" => "website",
|
234 |
+
"Value" => "http://example.com"
|
235 |
+
),
|
236 |
+
array(
|
237 |
+
"Key" => "age",
|
238 |
+
"Value" => "24"
|
239 |
+
),
|
240 |
+
array(
|
241 |
+
"Key" => "subscription date",
|
242 |
+
"Value" => "2010-03-09"
|
243 |
+
)
|
244 |
+
)
|
245 |
+
),
|
246 |
+
array(
|
247 |
+
"EmailAddress" => "subs+7878787y8ggg@example.com",
|
248 |
+
"Name" => "Person Two",
|
249 |
+
"Date" => "2010-10-25 12:17:00",
|
250 |
+
"State" => "Active",
|
251 |
+
"CustomFields" => array(
|
252 |
+
array(
|
253 |
+
"Key" => "website",
|
254 |
+
"Value" => "http://subdomain.example.com"
|
255 |
+
)
|
256 |
+
)
|
257 |
+
),
|
258 |
+
array(
|
259 |
+
"EmailAddress" => "subs+7890909i0ggg@example.com",
|
260 |
+
"Name" => "Person Three",
|
261 |
+
"Date" => "2010-10-25 12:52:00",
|
262 |
+
"State" => "Active",
|
263 |
+
"CustomFields" => array(
|
264 |
+
array(
|
265 |
+
"Key" => "website",
|
266 |
+
"Value" => "http://subdomain.example.com"
|
267 |
+
)
|
268 |
+
)
|
269 |
+
),
|
270 |
+
array(
|
271 |
+
"EmailAddress" => "subs@example.com",
|
272 |
+
"Name" => "Person Four",
|
273 |
+
"Date" => "2010-10-27 13:13:00",
|
274 |
+
"State" => "Active",
|
275 |
+
"CustomFields" => array()
|
276 |
+
),
|
277 |
+
array(
|
278 |
+
"EmailAddress" => "joey@example.com",
|
279 |
+
"Name" => "Person Five",
|
280 |
+
"Date" => "2010-10-27 13:13:00",
|
281 |
+
"State" => "Active",
|
282 |
+
"CustomFields" => array()
|
283 |
+
)
|
284 |
+
),
|
285 |
+
"ResultsOrderedBy" => "email",
|
286 |
+
"OrderDirection" => "asc",
|
287 |
+
"PageNumber" => 1,
|
288 |
+
"PageSize" => 1000,
|
289 |
+
"RecordsOnThisPage" => 5,
|
290 |
+
"TotalNumberOfRecords" => 5,
|
291 |
+
"NumberOfPages" => 1
|
292 |
+
),
|
293 |
+
'add_subscriber' => 'subscriber@example.com',
|
294 |
+
'import_subscribers' => array(
|
295 |
+
'FailureDetails' => array(),
|
296 |
+
'TotalUniqueEmailsSubmitted' => 3,
|
297 |
+
'TotalExistingSubscribers' => 0,
|
298 |
+
'TotalNewSubscribers' => 3,
|
299 |
+
'DuplicateEmailsInSubmission' => array()
|
300 |
+
),
|
301 |
+
'import_subscribers_partial_success' => array(
|
302 |
+
"ResultData" => array(
|
303 |
+
"TotalUniqueEmailsSubmitted" => 3,
|
304 |
+
"TotalExistingSubscribers" => 2,
|
305 |
+
"TotalNewSubscribers" => 0,
|
306 |
+
"DuplicateEmailsInSubmission" => array(),
|
307 |
+
"FailureDetails" => array(
|
308 |
+
array(
|
309 |
+
"EmailAddress" => "example+1@example",
|
310 |
+
"Code" => 1,
|
311 |
+
"Message" => "Invalid Email Address"
|
312 |
+
)
|
313 |
+
)
|
314 |
+
),
|
315 |
+
"Code" => 210,
|
316 |
+
"Message" => "Subscriber Import had some failures"
|
317 |
+
),
|
318 |
+
'subscriber_details' => array(
|
319 |
+
'EmailAddress' => 'subscriber@example.com',
|
320 |
+
'Name' => 'Subscriber One',
|
321 |
+
'Date' => '2010-10-25 10:28:00',
|
322 |
+
'State' => 'Active',
|
323 |
+
'CustomFields' => array(
|
324 |
+
array(
|
325 |
+
'Key' => 'website',
|
326 |
+
'Value' => 'http://example.com'
|
327 |
+
),
|
328 |
+
array(
|
329 |
+
'Key' => 'age',
|
330 |
+
'Value' => '24'
|
331 |
+
),
|
332 |
+
array(
|
333 |
+
'Key' => 'subscription date',
|
334 |
+
'Value' => '2010-03-09'
|
335 |
+
)
|
336 |
+
)
|
337 |
+
),
|
338 |
+
'subscriber_history' => array(
|
339 |
+
array(
|
340 |
+
'ID' => 'fc0ce7105baeaf97f47c99be31d02a91',
|
341 |
+
'Type' => 'Campaign',
|
342 |
+
'Name' => 'Campaign One',
|
343 |
+
'Actions' => array(
|
344 |
+
array(
|
345 |
+
'Event' => 'Open',
|
346 |
+
'Date' => '2010-10-12 13:18:00',
|
347 |
+
'IPAddress' => '192.168.126.87',
|
348 |
+
'Detail' => ''
|
349 |
+
),
|
350 |
+
array(
|
351 |
+
'Event' => 'Click',
|
352 |
+
'Date' => '2010-10-12 13:16:00',
|
353 |
+
'IPAddress' => '192.168.126.87',
|
354 |
+
'Detail' => 'http://example.com/post/12323/'
|
355 |
+
),
|
356 |
+
array(
|
357 |
+
'Event' => 'Click',
|
358 |
+
'Date' => '2010-10-12 13:15:00',
|
359 |
+
'IPAddress' => '192.168.126.87',
|
360 |
+
'Detail' => 'http://example.com/post/29889/'
|
361 |
+
),
|
362 |
+
array(
|
363 |
+
'Event' => 'Open',
|
364 |
+
'Date' => '2010-10-12 13:15:00',
|
365 |
+
'IPAddress' => '192.168.126.87',
|
366 |
+
'Detail' => ''
|
367 |
+
),
|
368 |
+
array(
|
369 |
+
'Event' => 'Click',
|
370 |
+
'Date' => '2010-10-12 13:01:00',
|
371 |
+
'IPAddress' => '192.168.126.87',
|
372 |
+
'Detail' => 'http://example.com/post/82211/'
|
373 |
+
),
|
374 |
+
array(
|
375 |
+
'Event' => 'Open',
|
376 |
+
'Date' => '2010-10-12 13:01:00',
|
377 |
+
'IPAddress' => '192.168.126.87',
|
378 |
+
'Detail' => ''
|
379 |
+
)
|
380 |
+
)
|
381 |
+
)
|
382 |
+
)
|
383 |
+
);
|
384 |
+
|
385 |
+
$list_responses = array (
|
386 |
+
'custom_fields' => array(
|
387 |
+
array(
|
388 |
+
"FieldName" => "website",
|
389 |
+
"Key" => "[website]",
|
390 |
+
"DataType" => "Text",
|
391 |
+
"FieldOptions" => array()
|
392 |
+
),
|
393 |
+
array(
|
394 |
+
"FieldName" => "age",
|
395 |
+
"Key" => "[age]",
|
396 |
+
"DataType" => "Number",
|
397 |
+
"FieldOptions" => array()
|
398 |
+
),
|
399 |
+
array(
|
400 |
+
"FieldName" => "subscription date",
|
401 |
+
"Key" => "[subscriptiondate]",
|
402 |
+
"DataType" => "Date",
|
403 |
+
"FieldOptions" => array()
|
404 |
+
)
|
405 |
+
),
|
406 |
+
'create_list' => 'e3c5f034d68744f7881fdccf13c2daee',
|
407 |
+
'create_custom_field' => '[newdatefield]',
|
408 |
+
'list_details' => array(
|
409 |
+
'ConfirmedOptIn' => false,
|
410 |
+
'Title' => 'a non-basic list :)',
|
411 |
+
'UnsubscribePage' => '',
|
412 |
+
'ListID' => '2fe4c8f0373ce320e2200596d7ef168f',
|
413 |
+
'ConfirmationSuccessPage' => ''
|
414 |
+
),
|
415 |
+
'list_stats' => array(
|
416 |
+
"TotalActiveSubscribers" => 6,
|
417 |
+
"NewActiveSubscribersToday" => 0,
|
418 |
+
"NewActiveSubscribersYesterday" => 8,
|
419 |
+
"NewActiveSubscribersThisWeek" => 8,
|
420 |
+
"NewActiveSubscribersThisMonth" => 8,
|
421 |
+
"NewActiveSubscribersThisYear" => 8,
|
422 |
+
"TotalUnsubscribes" => 2,
|
423 |
+
"UnsubscribesToday" => 0,
|
424 |
+
"UnsubscribesYesterday" => 2,
|
425 |
+
"UnsubscribesThisWeek" => 2,
|
426 |
+
"UnsubscribesThisMonth" => 2,
|
427 |
+
"UnsubscribesThisYear" => 2,
|
428 |
+
"TotalDeleted" => 0,
|
429 |
+
"DeletedToday" => 0,
|
430 |
+
"DeletedYesterday" => 0,
|
431 |
+
"DeletedThisWeek" => 0,
|
432 |
+
"DeletedThisMonth" => 0,
|
433 |
+
"DeletedThisYear" => 0,
|
434 |
+
"TotalBounces" => 0,
|
435 |
+
"BouncesToday" => 0,
|
436 |
+
"BouncesYesterday" => 0,
|
437 |
+
"BouncesThisWeek" => 0,
|
438 |
+
"BouncesThisMonth" => 0,
|
439 |
+
"BouncesThisYear" => 0
|
440 |
+
),
|
441 |
+
'bounced_subscribers' => array(
|
442 |
+
'Results' => array(
|
443 |
+
array(
|
444 |
+
'EmailAddress' => 'bouncedsubscriber@example.com',
|
445 |
+
'Name' => 'Bounced One',
|
446 |
+
'Date' => '2010-10-25 13:11:00',
|
447 |
+
'State' => 'Bounced',
|
448 |
+
'CustomFields' => array()
|
449 |
+
)
|
450 |
+
),
|
451 |
+
'ResultsOrderedBy' => 'email',
|
452 |
+
'OrderDirection' => 'asc',
|
453 |
+
'PageNumber' => 1,
|
454 |
+
'PageSize' => 1000,
|
455 |
+
'RecordsOnThisPage' => 1,
|
456 |
+
'TotalNumberOfRecords' => 1,
|
457 |
+
'NumberOfPages' => 1
|
458 |
+
),
|
459 |
+
'unsubscribed_subscribers' => array(
|
460 |
+
"Results" => array(
|
461 |
+
array(
|
462 |
+
"EmailAddress" => "subscriber@example.com",
|
463 |
+
"Name" => "Unsub One",
|
464 |
+
"Date" => "2010-10-25 13:11:00",
|
465 |
+
"State" => "Unsubscribed",
|
466 |
+
"CustomFields" => array()
|
467 |
+
),
|
468 |
+
array(
|
469 |
+
"EmailAddress" => "subscriberone@example.com",
|
470 |
+
"Name" => "Subscriber",
|
471 |
+
"Date" => "2010-10-25 13:04:00",
|
472 |
+
"State" => "Unsubscribed",
|
473 |
+
"CustomFields" => array(
|
474 |
+
array(
|
475 |
+
"Key" => "website",
|
476 |
+
"Value" => "http://google.com"
|
477 |
+
)
|
478 |
+
)
|
479 |
+
),
|
480 |
+
array(
|
481 |
+
"EmailAddress" => "example+1@example.com",
|
482 |
+
"Name" => "Example One",
|
483 |
+
"Date" => "2010-10-26 10:56:00",
|
484 |
+
"State" => "Unsubscribed",
|
485 |
+
"CustomFields" => array()
|
486 |
+
),
|
487 |
+
array(
|
488 |
+
"EmailAddress" => "example+2@example.com",
|
489 |
+
"Name" => "Example Two",
|
490 |
+
"Date" => "2010-10-26 10:56:00",
|
491 |
+
"State" => "Unsubscribed",
|
492 |
+
"CustomFields" => array()
|
493 |
+
),
|
494 |
+
array(
|
495 |
+
"EmailAddress" => "example+3@example.com",
|
496 |
+
"Name" => "Example Three",
|
497 |
+
"Date" => "2010-10-26 10:56:00",
|
498 |
+
"State" => "Unsubscribed",
|
499 |
+
"CustomFields" => array()
|
500 |
+
)
|
501 |
+
),
|
502 |
+
"ResultsOrderedBy" => "email",
|
503 |
+
"OrderDirection" => "asc",
|
504 |
+
"PageNumber" => 1,
|
505 |
+
"PageSize" => 1000,
|
506 |
+
"RecordsOnThisPage" => 5,
|
507 |
+
"TotalNumberOfRecords" => 5,
|
508 |
+
"NumberOfPages" => 1
|
509 |
+
),
|
510 |
+
'list_webhooks' => array(
|
511 |
+
array(
|
512 |
+
"WebhookID" => "943678317049bc13",
|
513 |
+
"Events" => array(
|
514 |
+
"Bounce",
|
515 |
+
"Spam"
|
516 |
+
),
|
517 |
+
"Url" => "http://www.postbin.org/d9w8ud9wud9w",
|
518 |
+
"Status" => "Active",
|
519 |
+
"PayloadFormat" => "Json"
|
520 |
+
),
|
521 |
+
array(
|
522 |
+
"WebhookID" => "ee1b3864e5ca6161",
|
523 |
+
"Events" => array(
|
524 |
+
"Subscribe"
|
525 |
+
),
|
526 |
+
"Url" => "http://www.postbin.org/hiuhiu2h2u",
|
527 |
+
"Status" => "Active",
|
528 |
+
"PayloadFormat" => "Xml"
|
529 |
+
)
|
530 |
+
),
|
531 |
+
'create_list_webhook' => '6a783d359bd44ef62c6ca0d3eda4412a'
|
532 |
+
);
|
533 |
+
|
534 |
+
$campaign_responses = array(
|
535 |
+
'create_campaign' => '787y87y87y87y87y87y87',
|
536 |
+
'campaign_unsubscribes' => array(
|
537 |
+
'Results' => array(
|
538 |
+
array(
|
539 |
+
'EmailAddress' => 'subs+6576576576@example.com',
|
540 |
+
'ListID' => '512a3bc577a58fdf689c654329b50fa0',
|
541 |
+
'Date' => '2010-10-11 08:29:00',
|
542 |
+
'IPAddress' => '192.168.126.87'
|
543 |
+
)
|
544 |
+
),
|
545 |
+
'ResultsOrderedBy' => 'date',
|
546 |
+
'OrderDirection' => 'asc',
|
547 |
+
'PageNumber' => 1,
|
548 |
+
'PageSize' => 1000,
|
549 |
+
'RecordsOnThisPage' => 1,
|
550 |
+
'TotalNumberOfRecords' => 1,
|
551 |
+
'NumberOfPages' => 1
|
552 |
+
),
|
553 |
+
'campaign_summary' => array(
|
554 |
+
'Recipients' => 5,
|
555 |
+
'TotalOpened' => 10,
|
556 |
+
'Clicks' => 0,
|
557 |
+
'Unsubscribed' => 0,
|
558 |
+
'Bounced' => 0,
|
559 |
+
'UniqueOpened' => 5,
|
560 |
+
'WebVersionURL' => 'http://clientone.createsend.com/t/ViewEmail/r/3A433FC72FFE3B8B/C67FD2F38AC4859C/',
|
561 |
+
'WebVersionTextURL' => 'http://createsend.com/t/r-3A433FC72FFE3B8B/t',
|
562 |
+
'WorldviewURL' => 'http://clientone.createsend.com/reports/wv/r/3A433FC72FFE3B8B',
|
563 |
+
'ForwardToAFriends' => 18,
|
564 |
+
'FacebookLikes' => 25,
|
565 |
+
'TwitterTweets' => 11
|
566 |
+
),
|
567 |
+
'campaign_listsandsegments' => array(
|
568 |
+
'Lists' => array(
|
569 |
+
array(
|
570 |
+
'ListID' => 'a58ee1d3039b8bec838e6d1482a8a965',
|
571 |
+
'Name' => 'List One'
|
572 |
+
)
|
573 |
+
),
|
574 |
+
'Segments' => array(
|
575 |
+
array(
|
576 |
+
'ListID' => '2bea949d0bf96148c3e6a209d2e82060',
|
577 |
+
'SegmentID' => 'dba84a225d5ce3d19105d7257baac46f',
|
578 |
+
'Title' => 'Segment for campaign'
|
579 |
+
)
|
580 |
+
)
|
581 |
+
),
|
582 |
+
'campaign_opens' => array(
|
583 |
+
"Results" => array(
|
584 |
+
array(
|
585 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
586 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
587 |
+
"Date" => "2010-10-11 08:29:00",
|
588 |
+
"IPAddress" => "192.168.126.87",
|
589 |
+
"Latitude" => -33.8683,
|
590 |
+
"Longitude" => 151.2086,
|
591 |
+
"City" => "Sydney",
|
592 |
+
"Region" => "New South Wales",
|
593 |
+
"CountryCode" => "AU",
|
594 |
+
"CountryName" => "Australia"
|
595 |
+
),
|
596 |
+
array(
|
597 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
598 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
599 |
+
"Date" => "2010-10-08 14:24:00",
|
600 |
+
"IPAddress" => "192.168.126.87",
|
601 |
+
"Latitude" => -33.8683,
|
602 |
+
"Longitude" => 151.2086,
|
603 |
+
"City" => "Sydney",
|
604 |
+
"Region" => "New South Wales",
|
605 |
+
"CountryCode" => "AU",
|
606 |
+
"CountryName" => "Australia"
|
607 |
+
),
|
608 |
+
array(
|
609 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
610 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
611 |
+
"Date" => "2010-10-07 10:20:00",
|
612 |
+
"IPAddress" => "192.168.126.87",
|
613 |
+
"Latitude" => -33.8683,
|
614 |
+
"Longitude" => 151.2086,
|
615 |
+
"City" => "Sydney",
|
616 |
+
"Region" => "New South Wales",
|
617 |
+
"CountryCode" => "AU",
|
618 |
+
"CountryName" => "Australia"
|
619 |
+
),
|
620 |
+
array(
|
621 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
622 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
623 |
+
"Date" => "2010-10-07 07:15:00",
|
624 |
+
"IPAddress" => "192.168.126.87",
|
625 |
+
"Latitude" => -33.8683,
|
626 |
+
"Longitude" => 151.2086,
|
627 |
+
"City" => "Sydney",
|
628 |
+
"Region" => "New South Wales",
|
629 |
+
"CountryCode" => "AU",
|
630 |
+
"CountryName" => "Australia"
|
631 |
+
),
|
632 |
+
array(
|
633 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
634 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
635 |
+
"Date" => "2010-10-07 06:58:00",
|
636 |
+
"IPAddress" => "192.168.126.87",
|
637 |
+
"Latitude" => -33.8683,
|
638 |
+
"Longitude" => 151.2086,
|
639 |
+
"City" => "Sydney",
|
640 |
+
"Region" => "New South Wales",
|
641 |
+
"CountryCode" => "AU",
|
642 |
+
"CountryName" => "Australia"
|
643 |
+
)
|
644 |
+
),
|
645 |
+
"ResultsOrderedBy" => "date",
|
646 |
+
"OrderDirection" => "asc",
|
647 |
+
"PageNumber" => 1,
|
648 |
+
"PageSize" => 1000,
|
649 |
+
"RecordsOnThisPage" => 5,
|
650 |
+
"TotalNumberOfRecords" => 5,
|
651 |
+
"NumberOfPages" => 1
|
652 |
+
),
|
653 |
+
'campaign_recipients' => array(
|
654 |
+
'Results' => array(
|
655 |
+
array(
|
656 |
+
"EmailAddress" => "subs+6g76t7t0@example.com",
|
657 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
658 |
+
),
|
659 |
+
array(
|
660 |
+
"EmailAddress" => "subs+6g76t7t1@example.com",
|
661 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
662 |
+
),
|
663 |
+
array(
|
664 |
+
"EmailAddress" => "subs+6g76t7t10@example.com",
|
665 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
666 |
+
),
|
667 |
+
array(
|
668 |
+
"EmailAddress" => "subs+6g76t7t100@example.com",
|
669 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
670 |
+
),
|
671 |
+
array(
|
672 |
+
"EmailAddress" => "subs+6g76t7t1000@example.com",
|
673 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
674 |
+
),
|
675 |
+
array(
|
676 |
+
"EmailAddress" => "subs+6g76t7t1001@example.com",
|
677 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
678 |
+
),
|
679 |
+
array(
|
680 |
+
"EmailAddress" => "subs+6g76t7t1002@example.com",
|
681 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
682 |
+
),
|
683 |
+
array(
|
684 |
+
"EmailAddress" => "subs+6g76t7t1003@example.com",
|
685 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
686 |
+
),
|
687 |
+
array(
|
688 |
+
"EmailAddress" => "subs+6g76t7t1004@example.com",
|
689 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
690 |
+
),
|
691 |
+
array(
|
692 |
+
"EmailAddress" => "subs+6g76t7t1005@example.com",
|
693 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
694 |
+
),
|
695 |
+
array(
|
696 |
+
"EmailAddress" => "subs+6g76t7t1006@example.com",
|
697 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
698 |
+
),
|
699 |
+
array(
|
700 |
+
"EmailAddress" => "subs+6g76t7t1007@example.com",
|
701 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
702 |
+
),
|
703 |
+
array(
|
704 |
+
"EmailAddress" => "subs+6g76t7t1008@example.com",
|
705 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
706 |
+
),
|
707 |
+
array(
|
708 |
+
"EmailAddress" => "subs+6g76t7t1009@example.com",
|
709 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
710 |
+
),
|
711 |
+
array(
|
712 |
+
"EmailAddress" => "subs+6g76t7t101@example.com",
|
713 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
714 |
+
),
|
715 |
+
array(
|
716 |
+
"EmailAddress" => "subs+6g76t7t1010@example.com",
|
717 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
718 |
+
),
|
719 |
+
array(
|
720 |
+
"EmailAddress" => "subs+6g76t7t1011@example.com",
|
721 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
722 |
+
),
|
723 |
+
array(
|
724 |
+
"EmailAddress" => "subs+6g76t7t1012@example.com",
|
725 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
726 |
+
),
|
727 |
+
array(
|
728 |
+
"EmailAddress" => "subs+6g76t7t1013@example.com",
|
729 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
730 |
+
),
|
731 |
+
array(
|
732 |
+
"EmailAddress" => "subs+6g76t7t1014@example.com",
|
733 |
+
"ListID" => "a994a3caf1328a16af9a69a730eaa706"
|
734 |
+
)
|
735 |
+
),
|
736 |
+
'ResultsOrderedBy' => 'email',
|
737 |
+
'OrderDirection' => 'asc',
|
738 |
+
'PageNumber' => 1,
|
739 |
+
'PageSize' => 20,
|
740 |
+
'RecordsOnThisPage' => 20,
|
741 |
+
'TotalNumberOfRecords' => 2200,
|
742 |
+
'NumberOfPages' => 110
|
743 |
+
),
|
744 |
+
'campaign_clicks' => array(
|
745 |
+
"Results" => array(
|
746 |
+
array(
|
747 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
748 |
+
"URL" => "http://video.google.com.au/?hl=en&tab=wv",
|
749 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
750 |
+
"Date" => "2010-10-11 08:29:00",
|
751 |
+
"IPAddress" => "192.168.126.87",
|
752 |
+
"Latitude" => -33.8683,
|
753 |
+
"Longitude" => 151.2086,
|
754 |
+
"City" => "Sydney",
|
755 |
+
"Region" => "New South Wales",
|
756 |
+
"CountryCode" => "AU",
|
757 |
+
"CountryName" => "Australia"
|
758 |
+
),
|
759 |
+
array(
|
760 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
761 |
+
"URL" => "http://mail.google.com/mail/?hl=en&tab=wm",
|
762 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
763 |
+
"Date" => "2010-10-11 08:29:00",
|
764 |
+
"IPAddress" => "192.168.126.87",
|
765 |
+
"Latitude" => -33.8683,
|
766 |
+
"Longitude" => 151.2086,
|
767 |
+
"City" => "Sydney",
|
768 |
+
"Region" => "New South Wales",
|
769 |
+
"CountryCode" => "AU",
|
770 |
+
"CountryName" => "Australia"
|
771 |
+
),
|
772 |
+
array(
|
773 |
+
"EmailAddress" => "subs+6576576576@example.com",
|
774 |
+
"URL" => "http://mail.google.com/mail/?hl=en&tab=wm",
|
775 |
+
"ListID" => "512a3bc577a58fdf689c654329b50fa0",
|
776 |
+
"Date" => "2010-10-06 17:24:00",
|
777 |
+
"IPAddress" => "192.168.126.87",
|
778 |
+
"Latitude" => -33.8683,
|
779 |
+
"Longitude" => 151.2086,
|
780 |
+
"City" => "Sydney",
|
781 |
+
"Region" => "New South Wales",
|
782 |
+
"CountryCode" => "AU",
|
783 |
+
"CountryName" => "Australia"
|
784 |
+
)
|
785 |
+
),
|
786 |
+
"ResultsOrderedBy" => "date",
|
787 |
+
"OrderDirection" => "asc",
|
788 |
+
"PageNumber" => 1,
|
789 |
+
"PageSize" => 1000,
|
790 |
+
"RecordsOnThisPage" => 3,
|
791 |
+
"TotalNumberOfRecords" => 3,
|
792 |
+
"NumberOfPages" => 1
|
793 |
+
),
|
794 |
+
'campaign_bounces' => array(
|
795 |
+
"Results" => array(
|
796 |
+
array(
|
797 |
+
"EmailAddress" => "asdf@softbouncemyemail.com",
|
798 |
+
"ListID" => "654523a5855b4a440bae3fb295641546",
|
799 |
+
"BounceType" => "Soft",
|
800 |
+
"Date" => "2010-07-02 16:46:00",
|
801 |
+
"Reason" => "Bounce - But No Email Address Returned "
|
802 |
+
),
|
803 |
+
array(
|
804 |
+
"EmailAddress" => "asdf@hardbouncemyemail.com",
|
805 |
+
"ListID" => "654523a5855b4a440bae3fb295641546",
|
806 |
+
"BounceType" => "Soft",
|
807 |
+
"Date" => "2010-07-02 16:46:00",
|
808 |
+
"Reason" => "Soft Bounce - General"
|
809 |
+
)
|
810 |
+
),
|
811 |
+
"ResultsOrderedBy" => "date",
|
812 |
+
"OrderDirection" => "asc",
|
813 |
+
"PageNumber" => 1,
|
814 |
+
"PageSize" => 1000,
|
815 |
+
"RecordsOnThisPage" => 2,
|
816 |
+
"TotalNumberOfRecords" => 2,
|
817 |
+
"NumberOfPages" => 1
|
818 |
+
)
|
819 |
+
);
|
820 |
+
|
821 |
+
$segment_responses = array(
|
822 |
+
'segment_subscribers' => array(
|
823 |
+
"Results" => array(
|
824 |
+
array(
|
825 |
+
"EmailAddress" => "personone@example.com",
|
826 |
+
"Name" => "Person One",
|
827 |
+
"Date" => "2010-10-27 13:13:00",
|
828 |
+
"State" => "Active",
|
829 |
+
"CustomFields" => array()
|
830 |
+
),
|
831 |
+
array(
|
832 |
+
"EmailAddress" => "persontwo@example.com",
|
833 |
+
"Name" => "Person Two",
|
834 |
+
"Date" => "2010-10-27 13:13:00",
|
835 |
+
"State" => "Active",
|
836 |
+
"CustomFields" => array()
|
837 |
+
)
|
838 |
+
),
|
839 |
+
"ResultsOrderedBy" => "email",
|
840 |
+
"OrderDirection" => "asc",
|
841 |
+
"PageNumber" => 1,
|
842 |
+
"PageSize" => 1000,
|
843 |
+
"RecordsOnThisPage" => 2,
|
844 |
+
"TotalNumberOfRecords" => 2,
|
845 |
+
"NumberOfPages" => 1
|
846 |
+
),
|
847 |
+
'create_segment' => '0246c2aea610a3545d9780bf6ab89006'
|
848 |
+
);
|
849 |
+
|
850 |
+
$template_responses = array(
|
851 |
+
'create_template' => '98y2e98y289dh89h938389',
|
852 |
+
'template_details' => array(
|
853 |
+
'TemplateID' => '98y2e98y289dh89h938389',
|
854 |
+
'Name' => 'Template One',
|
855 |
+
'PreviewURL' => 'http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=01AF532CD8889B33&d=r&c=E816F55BFAD1A753',
|
856 |
+
'ScreenshotURL' => 'http://preview.createsend.com/ts/r/14/833/263/14833263.jpg?0318092600'
|
857 |
+
),
|
858 |
+
'templates' => array(
|
859 |
+
array(
|
860 |
+
"TemplateID" => "5cac213cf061dd4e008de5a82b7a3621",
|
861 |
+
"Name" => "Template One",
|
862 |
+
"PreviewURL" => "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=01AF532CD8889B33&d=r&c=E816F55BFAD1A753",
|
863 |
+
"ScreenshotURL" => "http://preview.createsend.com/ts/r/14/833/263/14833263.jpg?0318092541"
|
864 |
+
),
|
865 |
+
array(
|
866 |
+
"TemplateID" => "da645c271bc85fb6550acff937c2ab2e",
|
867 |
+
"Name" => "Template Two",
|
868 |
+
"PreviewURL" => "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=C8A180629495E798&d=r&c=E816F55BFAD1A753",
|
869 |
+
"ScreenshotURL" => "http://preview.createsend.com/ts/r/18/7B3/552/187B3552.jpg?0705043527"
|
870 |
+
)
|
871 |
+
)
|
872 |
+
);
|
873 |
+
|
874 |
+
$this->responses = array_merge(
|
875 |
+
array_merge(
|
876 |
+
array_merge(
|
877 |
+
array_merge(
|
878 |
+
array_merge(
|
879 |
+
array_merge(
|
880 |
+
$util_responses,
|
881 |
+
$client_responses
|
882 |
+
),
|
883 |
+
$subscriber_responses
|
884 |
+
),
|
885 |
+
$list_responses
|
886 |
+
),
|
887 |
+
$campaign_responses
|
888 |
+
),
|
889 |
+
$segment_responses
|
890 |
+
),
|
891 |
+
$template_responses
|
892 |
+
);
|
893 |
+
}
|
894 |
+
|
895 |
+
|
896 |
+
function do_test_response_deserialisation() {
|
897 |
+
if(!is_null($this->deserialiser)) {
|
898 |
+
$response_dir = 'responses/';
|
899 |
+
foreach ($this->responses as $k => $v) {
|
900 |
+
$filename = $response_dir.$k.'.json';
|
901 |
+
if(file_exists($filename)) {
|
902 |
+
$response = file_get_contents($filename);
|
903 |
+
$result = $this->deserialiser->deserialise($response);
|
904 |
+
$this->assert_identical_ignoring_type($result, $v,
|
905 |
+
'Failed to deserialise response for '.$k);
|
906 |
+
}
|
907 |
+
}
|
908 |
+
}
|
909 |
+
}
|
910 |
+
|
911 |
+
function test_services_json_serializer() {
|
912 |
+
$log = new MockCS_REST_Log($this);
|
913 |
+
$this->deserialiser = new CS_REST_ServicesJsonSerialiser($log);
|
914 |
+
$this->do_test_response_deserialisation();
|
915 |
+
}
|
916 |
+
|
917 |
+
function test_services_native_serializer() {
|
918 |
+
if(function_exists('json_decode') && function_exists('json_encode')):
|
919 |
+
$log = new MockCS_REST_Log($this);
|
920 |
+
$this->deserialiser = new CS_REST_NativeJsonSerialiser($log);
|
921 |
+
$this->do_test_response_deserialisation();
|
922 |
+
endif;
|
923 |
+
}
|
924 |
+
|
925 |
+
function assert_identical_ignoring_type($object, $expected, $message) {
|
926 |
+
if(is_array($expected)) {
|
927 |
+
if(isset($expected[0])) {
|
928 |
+
$this->assertIsA($object, 'array', $message.' Item is not an array');
|
929 |
+
$this->assertIdentical(count($expected), count($object), $message.' Invalid array length');
|
930 |
+
for($i = 0; $i < count($expected); $i++) {
|
931 |
+
$this->assert_identical_ignoring_type($object[$i], $expected[$i],
|
932 |
+
$message.' Checking #'.$i);
|
933 |
+
}
|
934 |
+
} else {
|
935 |
+
foreach($expected as $k => $v) {
|
936 |
+
$this->assert_identical_ignoring_type($object->$k, $v, $message.' Checking '.$k);
|
937 |
+
}
|
938 |
+
}
|
939 |
+
} else {
|
940 |
+
$this->assertEqual($expected, $object, $message.' Items are not equal');
|
941 |
+
}
|
942 |
+
}
|
943 |
+
}
|
lib/createsend/tests/class_tests/transport_test.php
ADDED
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
require_once '../class/transport.php';
|
6 |
+
require_once '../class/log.php';
|
7 |
+
|
8 |
+
@Mock::generate('CS_REST_Log');
|
9 |
+
@Mock::generate('CS_REST_SocketWrapper');
|
10 |
+
@Mock::generatePartial(
|
11 |
+
'CS_REST_SocketTransport',
|
12 |
+
'PartialSocketTransport',
|
13 |
+
array('_build_request', '_get_status_code')
|
14 |
+
);
|
15 |
+
|
16 |
+
class CS_REST_TestSocketTransport extends UnitTestCase {
|
17 |
+
var $mock_wrapper;
|
18 |
+
var $mock_log;
|
19 |
+
|
20 |
+
var $transport;
|
21 |
+
var $partial;
|
22 |
+
|
23 |
+
function setUp() {
|
24 |
+
$this->mock_log = new MockCS_REST_Log($this);
|
25 |
+
$this->mock_wrapper = new MockCS_REST_SocketWrapper($this);
|
26 |
+
|
27 |
+
$this->transport = new CS_REST_SocketTransport($this->mock_log, $this->mock_wrapper);
|
28 |
+
$this->partial = new PartialSocketTransport($this);
|
29 |
+
$this->partial->CS_REST_SocketTransport($this->mock_log, $this->mock_wrapper);
|
30 |
+
}
|
31 |
+
|
32 |
+
function test_make_call_http() {
|
33 |
+
$this->make_call_base('http', 80, '');
|
34 |
+
}
|
35 |
+
|
36 |
+
function test_make_call_https() {
|
37 |
+
$this->make_call_base('https', 443, 'ssl://');
|
38 |
+
}
|
39 |
+
|
40 |
+
function make_call_base($protocol, $port, $domain_prefix) {
|
41 |
+
$host = 'api.test.createsend.com';
|
42 |
+
$path = '/path/to/stuff';
|
43 |
+
$call_options = array(
|
44 |
+
'method' => 'CONJURE',
|
45 |
+
'route' => $protocol.'://'.$host.$path,
|
46 |
+
'host' => $host
|
47 |
+
);
|
48 |
+
|
49 |
+
$request = 'Get me some data!';
|
50 |
+
$body = 'Some data';
|
51 |
+
$headers = '
|
52 |
+
HTTP/1.1 200 OK
|
53 |
+
Cache-Control: private, s-maxage=0
|
54 |
+
Content-Type: application/json; charset=utf-8
|
55 |
+
Server: Microsoft-IIS/7.0';
|
56 |
+
$response = $headers."\r\n\r\n".$body;
|
57 |
+
$status = '200';
|
58 |
+
|
59 |
+
|
60 |
+
$this->partial->setReturnValue('_build_request', $request);
|
61 |
+
$this->partial->expectOnce('_build_request',
|
62 |
+
array(
|
63 |
+
new IdenticalExpectation($call_options),
|
64 |
+
new IdenticalExpectation($host),
|
65 |
+
new IdenticalExpectation($path),
|
66 |
+
new IdenticalExpectation(true)
|
67 |
+
)
|
68 |
+
);
|
69 |
+
|
70 |
+
$this->mock_wrapper->setReturnValue('open', true);
|
71 |
+
$this->mock_wrapper->expectOnce('open',
|
72 |
+
array(
|
73 |
+
new IdenticalExpectation($domain_prefix.$host),
|
74 |
+
new IdenticalExpectation($port)
|
75 |
+
)
|
76 |
+
);
|
77 |
+
|
78 |
+
$this->mock_wrapper->expectOnce('write', array(new IdenticalExpectation($request)));
|
79 |
+
|
80 |
+
$this->mock_wrapper->setReturnValue('read', $response);
|
81 |
+
|
82 |
+
$this->partial->setReturnValue('_get_status_code', $status);
|
83 |
+
$this->partial->expectOnce('_get_status_code', array(new IdenticalExpectation($headers)));
|
84 |
+
|
85 |
+
$this->assertIdentical(array (
|
86 |
+
'code' => $status,
|
87 |
+
'response' => $body
|
88 |
+
), $this->partial->make_call($call_options));
|
89 |
+
}
|
90 |
+
|
91 |
+
function test_get_type() {
|
92 |
+
$this->assertIdentical($this->transport->get_type(), 'Socket');
|
93 |
+
}
|
94 |
+
|
95 |
+
function test_get_status_code_200() {
|
96 |
+
$headers =
|
97 |
+
'
|
98 |
+
HTTP/1.1 200 OK
|
99 |
+
Cache-Control: private, s-maxage=0
|
100 |
+
Content-Type: application/json; charset=utf-8
|
101 |
+
Server: Microsoft-IIS/7.0';
|
102 |
+
|
103 |
+
$this->assertIdentical($this->transport->_get_status_code($headers), '200');
|
104 |
+
}
|
105 |
+
|
106 |
+
function test_get_status_code_404() {
|
107 |
+
$headers =
|
108 |
+
'HTTP/1.1 404 Not Found
|
109 |
+
Cache-Control: private, s-maxage=0
|
110 |
+
Content-Type: application/json; charset=utf-8
|
111 |
+
Server: Microsoft-IIS/7.0';
|
112 |
+
|
113 |
+
$this->assertIdentical($this->transport->_get_status_code($headers), '404');
|
114 |
+
}
|
115 |
+
|
116 |
+
function test_build_request_no_data_or_gzip() {
|
117 |
+
$call_options = array(
|
118 |
+
'method' => 'CONJURE',
|
119 |
+
'authdetails' => array('api_key' => 'chucknorris'),
|
120 |
+
'userAgent' => 'Nozilla/ Firechuck',
|
121 |
+
'contentType' => 'application/visa'
|
122 |
+
);
|
123 |
+
|
124 |
+
$host = 'api.test.createsend.com';
|
125 |
+
$path = '/path/to/resource';
|
126 |
+
|
127 |
+
$expected =
|
128 |
+
$call_options['method'].' '.$path." HTTP/1.1\n".
|
129 |
+
'Host: '.$host."\n".
|
130 |
+
'Authorization: Basic '.base64_encode($call_options['authdetails']['api_key'].":nopass")."\n".
|
131 |
+
'User-Agent: '.$call_options['userAgent']."\n".
|
132 |
+
"Connection: Close\n".
|
133 |
+
'Content-Type: '.$call_options['contentType']."\n\n\n";
|
134 |
+
|
135 |
+
$this->assertIdentical($this->transport->_build_request($call_options, $host, $path, false), $expected);
|
136 |
+
}
|
137 |
+
|
138 |
+
function test_build_request_no_data_with_gzip() {
|
139 |
+
$call_options = array(
|
140 |
+
'method' => 'CONJURE',
|
141 |
+
'authdetails' => array('api_key' => 'chucknorris'),
|
142 |
+
'userAgent' => 'Nozilla/ Firechuck',
|
143 |
+
'contentType' => 'application/visa'
|
144 |
+
);
|
145 |
+
|
146 |
+
$host = 'api.test.createsend.com';
|
147 |
+
$path = '/path/to/resource';
|
148 |
+
|
149 |
+
$expected =
|
150 |
+
$call_options['method'].' '.$path." HTTP/1.1\n".
|
151 |
+
'Host: '.$host."\n".
|
152 |
+
'Authorization: Basic '.base64_encode($call_options['authdetails']['api_key'].":nopass")."\n".
|
153 |
+
'User-Agent: '.$call_options['userAgent']."\n".
|
154 |
+
"Connection: Close\n".
|
155 |
+
'Content-Type: '.$call_options['contentType']."\n".
|
156 |
+
"Accept-Encoding: gzip\n\n\n";
|
157 |
+
|
158 |
+
$this->assertIdentical($this->transport->_build_request($call_options, $host, $path, true), $expected);
|
159 |
+
}
|
160 |
+
|
161 |
+
function test_build_request_with_data_no_gzip() {
|
162 |
+
$call_options = array(
|
163 |
+
'method' => 'CONJURE',
|
164 |
+
'authdetails' => array('api_key' => 'chucknorris'),
|
165 |
+
'userAgent' => 'Nozilla/ Firechuck',
|
166 |
+
'contentType' => 'application/visa',
|
167 |
+
'data' => 'Send this to your bank for a new Credit Card!'
|
168 |
+
);
|
169 |
+
|
170 |
+
$host = 'api.test.createsend.com';
|
171 |
+
$path = '/path/to/resource';
|
172 |
+
|
173 |
+
$expected =
|
174 |
+
$call_options['method'].' '.$path." HTTP/1.1\n".
|
175 |
+
'Host: '.$host."\n".
|
176 |
+
'Authorization: Basic '.base64_encode($call_options['authdetails']['api_key'].":nopass")."\n".
|
177 |
+
'User-Agent: '.$call_options['userAgent']."\n".
|
178 |
+
"Connection: Close\n".
|
179 |
+
'Content-Type: '.$call_options['contentType']."\n".
|
180 |
+
'Content-Length: '.strlen($call_options['data'])."\n\n".
|
181 |
+
$call_options['data']."\n\n";
|
182 |
+
|
183 |
+
$this->assertIdentical($this->transport->_build_request($call_options, $host, $path, false), $expected);
|
184 |
+
}
|
185 |
+
|
186 |
+
function test_build_request_with_data_and_gzip() {
|
187 |
+
$call_options = array(
|
188 |
+
'method' => 'CONJURE',
|
189 |
+
'authdetails' => array('api_key' => 'chucknorris'),
|
190 |
+
'userAgent' => 'Nozilla/ Firechuck',
|
191 |
+
'contentType' => 'application/visa',
|
192 |
+
'data' => 'Send this to your bank for a new Credit Card!'
|
193 |
+
);
|
194 |
+
|
195 |
+
$host = 'api.test.createsend.com';
|
196 |
+
$path = '/path/to/resource';
|
197 |
+
|
198 |
+
$expected =
|
199 |
+
$call_options['method'].' '.$path." HTTP/1.1\n".
|
200 |
+
'Host: '.$host."\n".
|
201 |
+
'Authorization: Basic '.base64_encode($call_options['authdetails']['api_key'].":nopass")."\n".
|
202 |
+
'User-Agent: '.$call_options['userAgent']."\n".
|
203 |
+
"Connection: Close\n".
|
204 |
+
'Content-Type: '.$call_options['contentType']."\n".
|
205 |
+
"Accept-Encoding: gzip\n".
|
206 |
+
'Content-Length: '.strlen($call_options['data'])."\n\n".
|
207 |
+
$call_options['data']."\n\n";
|
208 |
+
|
209 |
+
$this->assertIdentical($this->transport->_build_request($call_options, $host, $path, true), $expected);
|
210 |
+
}
|
211 |
+
}
|
lib/createsend/tests/csrest_administrators_test.php
ADDED
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestAdministrator extends CS_REST_TestAdministrator {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestAdministrator extends CS_REST_TestAdministrator {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestAdministrator extends CS_REST_TestBase {
|
21 |
+
var $admins_base_route;
|
22 |
+
|
23 |
+
function set_up_inner() {
|
24 |
+
$this->admins_base_route = $this->base_route.'admins';
|
25 |
+
$this->wrapper = new CS_REST_Administrators($this->auth, $this->protocol, $this->log_level,
|
26 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
27 |
+
}
|
28 |
+
|
29 |
+
function testadd() {
|
30 |
+
$raw_result = '';
|
31 |
+
|
32 |
+
$call_options = $this->get_call_options($this->admins_base_route.'.json', 'POST');
|
33 |
+
|
34 |
+
$admin = array (
|
35 |
+
'EmailAddress' => 'test@test.com',
|
36 |
+
'Name' => 'Widget Man!'
|
37 |
+
);
|
38 |
+
|
39 |
+
$this->general_test_with_argument('add', $admin, $call_options,
|
40 |
+
$raw_result, $raw_result, 'administrator was serialised to this');
|
41 |
+
}
|
42 |
+
|
43 |
+
function testupdate() {
|
44 |
+
$raw_result = '';
|
45 |
+
$email = 'test@test.com';
|
46 |
+
$serialised_admin = 'subscriber data';
|
47 |
+
|
48 |
+
$call_options = $this->get_call_options(
|
49 |
+
$this->admins_base_route.'.json?email='.urlencode($email), 'PUT');
|
50 |
+
|
51 |
+
$admin = array (
|
52 |
+
'EmailAddress' => 'test2@test.com',
|
53 |
+
'Name' => 'Widget Man!',
|
54 |
+
);
|
55 |
+
|
56 |
+
$transport_result = array (
|
57 |
+
'code' => 200,
|
58 |
+
'response' => $raw_result
|
59 |
+
);
|
60 |
+
|
61 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, 200);
|
62 |
+
$call_options['data'] = $serialised_admin;
|
63 |
+
|
64 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
65 |
+
$raw_result, $raw_result, $serialised_admin,
|
66 |
+
$admin, 200);
|
67 |
+
|
68 |
+
$result = $this->wrapper->update($email, $admin);
|
69 |
+
|
70 |
+
$this->assertIdentical($expected_result, $result);
|
71 |
+
}
|
72 |
+
|
73 |
+
function testget() {
|
74 |
+
$raw_result = 'administrator details';
|
75 |
+
$deserialised = array(1,2,34,5);
|
76 |
+
$response_code = 200;
|
77 |
+
$email = 'test@test.com';
|
78 |
+
|
79 |
+
$call_options = $this->get_call_options(
|
80 |
+
$this->admins_base_route.'.json?email='.urlencode($email), 'GET');
|
81 |
+
|
82 |
+
$transport_result = array (
|
83 |
+
'code' => $response_code,
|
84 |
+
'response' => $raw_result
|
85 |
+
);
|
86 |
+
|
87 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
88 |
+
|
89 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
90 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
91 |
+
|
92 |
+
$result = $this->wrapper->get($email);
|
93 |
+
|
94 |
+
$this->assertIdentical($expected_result, $result);
|
95 |
+
}
|
96 |
+
|
97 |
+
|
98 |
+
function testdelete() {
|
99 |
+
$raw_result = '';
|
100 |
+
$response_code = 200;
|
101 |
+
$email = 'test@test.com';
|
102 |
+
|
103 |
+
$call_options = $this->get_call_options($this->admins_base_route.'.json?email='.urlencode($email), 'DELETE');
|
104 |
+
|
105 |
+
$transport_result = array (
|
106 |
+
'code' => $response_code,
|
107 |
+
'response' => $raw_result
|
108 |
+
);
|
109 |
+
|
110 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
111 |
+
|
112 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
113 |
+
$raw_result, $raw_result, NULL, NULL, $response_code);
|
114 |
+
|
115 |
+
$result = $this->wrapper->delete($email);
|
116 |
+
|
117 |
+
$this->assertIdentical($expected_result, $result);
|
118 |
+
}
|
119 |
+
}
|
lib/createsend/tests/csrest_campaigns_test.php
ADDED
@@ -0,0 +1,371 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestCampaigns extends CS_REST_TestCampaigns {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestCampaigns extends CS_REST_TestCampaigns {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestCampaigns extends CS_REST_TestBase {
|
21 |
+
var $campaign_id = 'not a real campaign id';
|
22 |
+
var $campaign_base_route;
|
23 |
+
|
24 |
+
function set_up_inner() {
|
25 |
+
$this->campaign_base_route = $this->base_route.'campaigns/'.$this->campaign_id.'/';
|
26 |
+
$this->wrapper = new CS_REST_Campaigns($this->campaign_id, $this->auth, $this->protocol, $this->log_level,
|
27 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
28 |
+
}
|
29 |
+
|
30 |
+
function testcreate() {
|
31 |
+
$raw_result = 'the new campaign id';
|
32 |
+
$client_id = 'not a real client id';
|
33 |
+
$response_code = 200;
|
34 |
+
|
35 |
+
$call_options = $this->get_call_options(
|
36 |
+
$this->base_route.'campaigns/'.$client_id.'.json', 'POST');
|
37 |
+
|
38 |
+
$campaign_data = array (
|
39 |
+
'Name' => 'ABC Widgets',
|
40 |
+
'Subject' => 'Widget Man!',
|
41 |
+
'ListIDs' => array(1,2,3),
|
42 |
+
'SegmentIDs' => array(4,5,6)
|
43 |
+
);
|
44 |
+
|
45 |
+
$transport_result = array (
|
46 |
+
'code' => $response_code,
|
47 |
+
'response' => $raw_result
|
48 |
+
);
|
49 |
+
|
50 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
51 |
+
$call_options['data'] = 'campaign data was serialised to this';
|
52 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
53 |
+
$raw_result, $raw_result, 'campaign data was serialised to this',
|
54 |
+
$campaign_data, $response_code);
|
55 |
+
|
56 |
+
$result = $this->wrapper->create($client_id, $campaign_data);
|
57 |
+
|
58 |
+
$this->assertIdentical($expected_result, $result);
|
59 |
+
}
|
60 |
+
|
61 |
+
function testcreate_from_template() {
|
62 |
+
$raw_result = 'the new campaign id';
|
63 |
+
$client_id = 'not a real client id';
|
64 |
+
$response_code = 200;
|
65 |
+
|
66 |
+
$call_options = $this->get_call_options(
|
67 |
+
$this->base_route.'campaigns/'.$client_id.'/fromtemplate.json', 'POST');
|
68 |
+
|
69 |
+
$template_content = array(
|
70 |
+
'Singlelines' => array(
|
71 |
+
array(
|
72 |
+
'Content' => 'This is a heading',
|
73 |
+
'Href' => 'http://example.com/'
|
74 |
+
)
|
75 |
+
),
|
76 |
+
'Multilines' => array(
|
77 |
+
array(
|
78 |
+
'Content' => '<p>This is example</p><p>multiline <a href=\"http://example.com\">content</a>...</p>'
|
79 |
+
)
|
80 |
+
),
|
81 |
+
'Images' => array(
|
82 |
+
array(
|
83 |
+
'Content' => 'http://example.com/image.png',
|
84 |
+
'Alt' => 'This is alt text for an image',
|
85 |
+
'Href' => 'http://example.com/'
|
86 |
+
)
|
87 |
+
),
|
88 |
+
'Repeaters' => array(
|
89 |
+
array(
|
90 |
+
'Items' => array(
|
91 |
+
array(
|
92 |
+
'Layout' => 'My layout',
|
93 |
+
'Singlelines' => array(
|
94 |
+
array(
|
95 |
+
'Content' => 'This is a repeater heading',
|
96 |
+
'Href' => 'http://example.com/'
|
97 |
+
)
|
98 |
+
),
|
99 |
+
'Multilines' => array(
|
100 |
+
array(
|
101 |
+
'Content' => '<p>This is example</p><p>multiline <a href=\"http://example.com\">content</a>...</p>'
|
102 |
+
)
|
103 |
+
),
|
104 |
+
'Images' => array(
|
105 |
+
array(
|
106 |
+
'Content' => 'http://example.com/image.png',
|
107 |
+
'Alt' => 'This is alt text for a repeater image',
|
108 |
+
'Href' => 'http://example.com/'
|
109 |
+
)
|
110 |
+
)
|
111 |
+
)
|
112 |
+
)
|
113 |
+
)
|
114 |
+
)
|
115 |
+
);
|
116 |
+
|
117 |
+
$campaign_data = array (
|
118 |
+
'Name' => 'ABC Widgets',
|
119 |
+
'Subject' => 'Widget Man!',
|
120 |
+
'ListIDs' => array(1,2,3),
|
121 |
+
'SegmentIDs' => array(4,5,6),
|
122 |
+
'TemplateID' => 'dj9qw8jdq98wjdqd2112e',
|
123 |
+
'TemplateContent' => $template_content
|
124 |
+
);
|
125 |
+
|
126 |
+
$transport_result = array (
|
127 |
+
'code' => $response_code,
|
128 |
+
'response' => $raw_result
|
129 |
+
);
|
130 |
+
|
131 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
132 |
+
$call_options['data'] = 'campaign data was serialised to this';
|
133 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
134 |
+
$raw_result, $raw_result, 'campaign data was serialised to this',
|
135 |
+
$campaign_data, $response_code);
|
136 |
+
|
137 |
+
$result = $this->wrapper->create_from_template($client_id, $campaign_data);
|
138 |
+
|
139 |
+
$this->assertIdentical($expected_result, $result);
|
140 |
+
}
|
141 |
+
|
142 |
+
function testsend_preview() {
|
143 |
+
$raw_result = '';
|
144 |
+
$response_code = 200;
|
145 |
+
|
146 |
+
$call_options = $this->get_call_options(
|
147 |
+
$this->campaign_base_route.'sendpreview.json', 'POST');
|
148 |
+
|
149 |
+
$recipients = array (
|
150 |
+
'test1@test.com',
|
151 |
+
'test1@test.com'
|
152 |
+
);
|
153 |
+
$personalise = 'Random';
|
154 |
+
|
155 |
+
$preview_info = array(
|
156 |
+
'PreviewRecipients' => $recipients,
|
157 |
+
'Personalize' => $personalise
|
158 |
+
);
|
159 |
+
|
160 |
+
$transport_result = array (
|
161 |
+
'code' => $response_code,
|
162 |
+
'response' => $raw_result
|
163 |
+
);
|
164 |
+
|
165 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
166 |
+
$call_options['data'] = 'campaign data was serialised to this';
|
167 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
168 |
+
$raw_result, $raw_result, 'campaign data was serialised to this',
|
169 |
+
$preview_info);
|
170 |
+
|
171 |
+
$result = $this->wrapper->send_preview($recipients, $personalise);
|
172 |
+
|
173 |
+
$this->assertIdentical($expected_result, $result);
|
174 |
+
}
|
175 |
+
|
176 |
+
function testsend() {
|
177 |
+
$raw_result = '';
|
178 |
+
|
179 |
+
$call_options = $this->get_call_options(
|
180 |
+
$this->campaign_base_route.'send.json', 'POST');
|
181 |
+
|
182 |
+
$schedule = array (
|
183 |
+
'CompanyName' => 'ABC Widgets',
|
184 |
+
'ContactName' => 'Widget Man!',
|
185 |
+
'EmailAddress' => 'widgets@abc.net.au'
|
186 |
+
);
|
187 |
+
|
188 |
+
$this->general_test_with_argument('send', $schedule, $call_options,
|
189 |
+
$raw_result, $raw_result, 'scheduling was serialised to this');
|
190 |
+
}
|
191 |
+
|
192 |
+
function testdelete() {
|
193 |
+
$raw_result = '';
|
194 |
+
|
195 |
+
$call_options = $this->get_call_options(
|
196 |
+
trim($this->campaign_base_route, '/').'.json', 'DELETE');
|
197 |
+
|
198 |
+
$this->general_test('delete', $call_options, $raw_result, $raw_result);
|
199 |
+
}
|
200 |
+
|
201 |
+
function testget_recipients() {
|
202 |
+
$raw_result = 'some recipients';
|
203 |
+
$deserialised = array('Recipient 1', 'Recipient 2');
|
204 |
+
$call_options = $this->get_call_options($this->campaign_base_route.'recipients.json');
|
205 |
+
|
206 |
+
$this->general_test('get_recipients', $call_options, $raw_result, $deserialised);
|
207 |
+
}
|
208 |
+
|
209 |
+
function testget_bounces() {
|
210 |
+
$raw_result = 'some bounces';
|
211 |
+
$since = '2020';
|
212 |
+
$response_code = 200;
|
213 |
+
$deserialised = array('Bounce 1', 'Bounce 2');
|
214 |
+
$call_options = $this->get_call_options(
|
215 |
+
$this->campaign_base_route.'bounces.json?date='.$since);
|
216 |
+
|
217 |
+
$transport_result = array (
|
218 |
+
'code' => $response_code,
|
219 |
+
'response' => $raw_result
|
220 |
+
);
|
221 |
+
|
222 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
223 |
+
|
224 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
225 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
226 |
+
|
227 |
+
$result = $this->wrapper->get_bounces($since);
|
228 |
+
|
229 |
+
$this->assertIdentical($expected_result, $result);
|
230 |
+
}
|
231 |
+
|
232 |
+
function testget_lists_and_segments() {
|
233 |
+
$raw_result = 'some lists';
|
234 |
+
$deserialised = array('List 1', 'List 2');
|
235 |
+
$call_options = $this->get_call_options(
|
236 |
+
$this->campaign_base_route.'listsandsegments.json');
|
237 |
+
|
238 |
+
$this->general_test('get_lists_and_segments', $call_options, $raw_result, $deserialised);
|
239 |
+
}
|
240 |
+
|
241 |
+
function testget_summary() {
|
242 |
+
$raw_result = 'campaign summary';
|
243 |
+
$deserialised = array(1,2,3,4,5);
|
244 |
+
$call_options = $this->get_call_options(
|
245 |
+
$this->campaign_base_route.'summary.json');
|
246 |
+
|
247 |
+
$this->general_test('get_summary', $call_options, $raw_result, $deserialised);
|
248 |
+
}
|
249 |
+
|
250 |
+
function testget_email_client_usage() {
|
251 |
+
$raw_result = 'campaign email client usage';
|
252 |
+
$deserialised = array(1,2,3,4,5);
|
253 |
+
$call_options = $this->get_call_options(
|
254 |
+
$this->campaign_base_route.'emailclientusage.json');
|
255 |
+
|
256 |
+
$this->general_test('get_email_client_usage', $call_options, $raw_result, $deserialised);
|
257 |
+
}
|
258 |
+
|
259 |
+
function testget_opens() {
|
260 |
+
$raw_result = 'some opens';
|
261 |
+
$since = '2020';
|
262 |
+
$response_code = 200;
|
263 |
+
$deserialised = array('Open 1', 'Open 2');
|
264 |
+
$call_options = $this->get_call_options(
|
265 |
+
$this->campaign_base_route.'opens.json?date='.$since);
|
266 |
+
|
267 |
+
$transport_result = array (
|
268 |
+
'code' => $response_code,
|
269 |
+
'response' => $raw_result
|
270 |
+
);
|
271 |
+
|
272 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
273 |
+
|
274 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
275 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
276 |
+
|
277 |
+
$result = $this->wrapper->get_opens($since);
|
278 |
+
|
279 |
+
$this->assertIdentical($expected_result, $result);
|
280 |
+
}
|
281 |
+
|
282 |
+
function testget_clicks() {
|
283 |
+
$raw_result = 'some clicks';
|
284 |
+
$since = '2020';
|
285 |
+
$response_code = 200;
|
286 |
+
$deserialised = array('Click 1', 'Click 2');
|
287 |
+
$call_options = $this->get_call_options(
|
288 |
+
$this->campaign_base_route.'clicks.json?date='.$since);
|
289 |
+
|
290 |
+
$transport_result = array (
|
291 |
+
'code' => $response_code,
|
292 |
+
'response' => $raw_result
|
293 |
+
);
|
294 |
+
|
295 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
296 |
+
|
297 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
298 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
299 |
+
|
300 |
+
$result = $this->wrapper->get_clicks($since);
|
301 |
+
|
302 |
+
$this->assertIdentical($expected_result, $result);
|
303 |
+
}
|
304 |
+
|
305 |
+
function testget_unsubscribes() {
|
306 |
+
$raw_result = 'some unsubscribed';
|
307 |
+
$since = '2020';
|
308 |
+
$response_code = 200;
|
309 |
+
$deserialised = array('Unsubscribe 1', 'Unsubscribe 2');
|
310 |
+
$call_options = $this->get_call_options(
|
311 |
+
$this->campaign_base_route.'unsubscribes.json?date='.$since);
|
312 |
+
|
313 |
+
$transport_result = array (
|
314 |
+
'code' => $response_code,
|
315 |
+
'response' => $raw_result
|
316 |
+
);
|
317 |
+
|
318 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
319 |
+
|
320 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
321 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
322 |
+
|
323 |
+
$result = $this->wrapper->get_unsubscribes($since);
|
324 |
+
|
325 |
+
$this->assertIdentical($expected_result, $result);
|
326 |
+
}
|
327 |
+
|
328 |
+
function testget_spam() {
|
329 |
+
$raw_result = 'some spam';
|
330 |
+
$since = '2020';
|
331 |
+
$response_code = 200;
|
332 |
+
$deserialised = array('Spam 1', 'Spam 2');
|
333 |
+
$call_options = $this->get_call_options(
|
334 |
+
$this->campaign_base_route.'spam.json?date='.$since);
|
335 |
+
|
336 |
+
$transport_result = array (
|
337 |
+
'code' => $response_code,
|
338 |
+
'response' => $raw_result
|
339 |
+
);
|
340 |
+
|
341 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
342 |
+
|
343 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
344 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
345 |
+
|
346 |
+
$result = $this->wrapper->get_spam($since);
|
347 |
+
|
348 |
+
$this->assertIdentical($expected_result, $result);
|
349 |
+
}
|
350 |
+
|
351 |
+
function testunschedule() {
|
352 |
+
$raw_result = '';
|
353 |
+
$response_code = 200;
|
354 |
+
|
355 |
+
$call_options = $this->get_call_options($this->campaign_base_route.'unschedule.json', 'POST');
|
356 |
+
|
357 |
+
$transport_result = array (
|
358 |
+
'code' => $response_code,
|
359 |
+
'response' => $raw_result
|
360 |
+
);
|
361 |
+
|
362 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
363 |
+
|
364 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
365 |
+
$raw_result, $raw_result, NULL, NULL, $response_code);
|
366 |
+
|
367 |
+
$result = $this->wrapper->unschedule();
|
368 |
+
|
369 |
+
$this->assertIdentical($expected_result, $result);
|
370 |
+
}
|
371 |
+
}
|
lib/createsend/tests/csrest_clients_test.php
ADDED
@@ -0,0 +1,275 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestClients extends CS_REST_TestClients {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestClients extends CS_REST_TestClients {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestClients extends CS_REST_TestBase {
|
21 |
+
var $client_id = 'not a real client id';
|
22 |
+
var $client_base_route;
|
23 |
+
|
24 |
+
function set_up_inner() {
|
25 |
+
$this->client_base_route = $this->base_route.'clients/'.$this->client_id.'/';
|
26 |
+
$this->wrapper = new CS_REST_Clients($this->client_id, $this->auth, $this->protocol, $this->log_level,
|
27 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
28 |
+
}
|
29 |
+
|
30 |
+
function testget_campaigns() {
|
31 |
+
$raw_result = 'some campaigns';
|
32 |
+
$deserialised = array('Campaign 1', 'Campaign 2');
|
33 |
+
$call_options = $this->get_call_options($this->client_base_route.'campaigns.json');
|
34 |
+
|
35 |
+
$this->general_test('get_campaigns', $call_options, $raw_result, $deserialised);
|
36 |
+
}
|
37 |
+
|
38 |
+
function testget_scheduled() {
|
39 |
+
$raw_result = 'some scheduled campaigns';
|
40 |
+
$deserialised = array('Campaign 1', 'Campaign 2');
|
41 |
+
$call_options = $this->get_call_options($this->client_base_route.'scheduled.json');
|
42 |
+
|
43 |
+
$this->general_test('get_scheduled', $call_options, $raw_result, $deserialised);
|
44 |
+
}
|
45 |
+
|
46 |
+
function testget_drafts() {
|
47 |
+
$raw_result = 'some drafts';
|
48 |
+
$deserialised = array('Campaign 1', 'Campaign 2');
|
49 |
+
$call_options = $this->get_call_options($this->client_base_route.'drafts.json');
|
50 |
+
|
51 |
+
$this->general_test('get_drafts', $call_options, $raw_result, $deserialised);
|
52 |
+
}
|
53 |
+
|
54 |
+
function testget_lists() {
|
55 |
+
$raw_result = 'some lists';
|
56 |
+
$deserialised = array('List 1', 'List 2');
|
57 |
+
$call_options = $this->get_call_options($this->client_base_route.'lists.json');
|
58 |
+
|
59 |
+
$this->general_test('get_lists', $call_options, $raw_result, $deserialised);
|
60 |
+
}
|
61 |
+
|
62 |
+
function testget_lists_for_email() {
|
63 |
+
$email = 'valid@example.com';
|
64 |
+
$raw_result = 'lists to which email is subscribed';
|
65 |
+
$deserialised = array('List 1', 'List 2');
|
66 |
+
$response_code = 200;
|
67 |
+
$call_options = $this->get_call_options($this->client_base_route .
|
68 |
+
'listsforemail.json?email='.urlencode($email), 'GET');
|
69 |
+
$transport_result = array (
|
70 |
+
'code' => $response_code,
|
71 |
+
'response' => $raw_result
|
72 |
+
);
|
73 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
74 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
75 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
76 |
+
|
77 |
+
$result = $this->wrapper->get_lists_for_email($email);
|
78 |
+
|
79 |
+
$this->assertIdentical($expected_result, $result);
|
80 |
+
}
|
81 |
+
|
82 |
+
function testget_segments() {
|
83 |
+
$raw_result = 'some segments';
|
84 |
+
$deserialised = array('Segment 1', 'Segment 2');
|
85 |
+
$call_options = $this->get_call_options($this->client_base_route.'segments.json');
|
86 |
+
|
87 |
+
$this->general_test('get_segments', $call_options, $raw_result, $deserialised);
|
88 |
+
}
|
89 |
+
|
90 |
+
function testget_suppressionlist() {
|
91 |
+
$raw_result = 'some emails';
|
92 |
+
$deserialised = array('dont@email.me', 'go@away.com');
|
93 |
+
$call_options = $this->get_call_options($this->client_base_route.'suppressionlist.json');
|
94 |
+
|
95 |
+
$this->general_test('get_suppressionlist', $call_options, $raw_result, $deserialised);
|
96 |
+
}
|
97 |
+
|
98 |
+
function testsuppress() {
|
99 |
+
$raw_result = '';
|
100 |
+
$response_code = 200;
|
101 |
+
$call_options = $this->get_call_options(
|
102 |
+
$this->client_base_route.'suppress.json', 'POST');
|
103 |
+
$emails = array (
|
104 |
+
'test1@test.com',
|
105 |
+
'test1@test.com'
|
106 |
+
);
|
107 |
+
$suppression_info = array(
|
108 |
+
'EmailAddresses' => $emails
|
109 |
+
);
|
110 |
+
$transport_result = array (
|
111 |
+
'code' => $response_code,
|
112 |
+
'response' => $raw_result
|
113 |
+
);
|
114 |
+
|
115 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
116 |
+
$call_options['data'] = 'suppression data was serialised to this';
|
117 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
118 |
+
$raw_result, $raw_result, 'suppression data was serialised to this',
|
119 |
+
$suppression_info);
|
120 |
+
|
121 |
+
$result = $this->wrapper->suppress($emails);
|
122 |
+
|
123 |
+
$this->assertIdentical($expected_result, $result);
|
124 |
+
}
|
125 |
+
|
126 |
+
function testunsuppress() {
|
127 |
+
$raw_result = '';
|
128 |
+
$response_code = 200;
|
129 |
+
$email = 'example@example.com';
|
130 |
+
$call_options = $this->get_call_options($this->client_base_route.'unsuppress.json?email=' . urlencode($email), 'PUT');
|
131 |
+
$call_options['data'] = '';
|
132 |
+
|
133 |
+
$transport_result = array (
|
134 |
+
'code' => $response_code,
|
135 |
+
'response' => $raw_result
|
136 |
+
);
|
137 |
+
|
138 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
139 |
+
|
140 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
141 |
+
$raw_result, $raw_result, '', '', $response_code);
|
142 |
+
|
143 |
+
$result = $this->wrapper->unsuppress($email);
|
144 |
+
|
145 |
+
$this->assertIdentical($expected_result, $result);
|
146 |
+
}
|
147 |
+
|
148 |
+
function testget_templates() {
|
149 |
+
$raw_result = 'some templates';
|
150 |
+
$deserialised = array('Template 1', 'Template 2');
|
151 |
+
$call_options = $this->get_call_options($this->client_base_route.'templates.json');
|
152 |
+
|
153 |
+
$this->general_test('get_templates', $call_options, $raw_result, $deserialised);
|
154 |
+
}
|
155 |
+
|
156 |
+
function testget() {
|
157 |
+
$raw_result = 'client data';
|
158 |
+
$deserialised = array('CompanyName' => 'Widget Land');
|
159 |
+
$call_options = $this->get_call_options(trim($this->client_base_route, '/').'.json');
|
160 |
+
|
161 |
+
$this->general_test('get', $call_options, $raw_result, $deserialised);
|
162 |
+
}
|
163 |
+
|
164 |
+
function testdelete() {
|
165 |
+
$raw_result = '';
|
166 |
+
|
167 |
+
$call_options = $this->get_call_options(
|
168 |
+
trim($this->client_base_route, '/').'.json', 'DELETE');
|
169 |
+
|
170 |
+
$this->general_test('delete', $call_options, $raw_result, $raw_result);
|
171 |
+
}
|
172 |
+
|
173 |
+
function testcreate() {
|
174 |
+
$raw_result = 'the new client id';
|
175 |
+
|
176 |
+
$call_options = $this->get_call_options($this->base_route.'clients.json', 'POST');
|
177 |
+
|
178 |
+
$client_data = array (
|
179 |
+
'CompanyName' => 'ABC Widgets',
|
180 |
+
);
|
181 |
+
|
182 |
+
$this->general_test_with_argument('create', $client_data, $call_options,
|
183 |
+
$raw_result, $raw_result, 'client data was serialised to this');
|
184 |
+
}
|
185 |
+
|
186 |
+
function testset_basics() {
|
187 |
+
$raw_result = '';
|
188 |
+
|
189 |
+
$call_options = $this->get_call_options($this->client_base_route.'setbasics.json', 'PUT');
|
190 |
+
|
191 |
+
$client_data = array (
|
192 |
+
'CompanyName' => 'ABC Widgets',
|
193 |
+
'ContactName' => 'Widget Man!',
|
194 |
+
'EmailAddress' => 'widgets@abc.net.au'
|
195 |
+
);
|
196 |
+
|
197 |
+
$this->general_test_with_argument('set_basics', $client_data, $call_options,
|
198 |
+
$raw_result, $raw_result, 'client data was serialised to this');
|
199 |
+
}
|
200 |
+
|
201 |
+
function testset_payg() {
|
202 |
+
$raw_result = '';
|
203 |
+
|
204 |
+
$call_options = $this->get_call_options($this->client_base_route.'setpaygbilling.json', 'PUT');
|
205 |
+
|
206 |
+
$client_data = array (
|
207 |
+
'Current' => 'PZD',
|
208 |
+
'ClientPays' => true,
|
209 |
+
'MarkupPercentage' => 1000
|
210 |
+
);
|
211 |
+
|
212 |
+
$this->general_test_with_argument('set_payg_billing', $client_data, $call_options,
|
213 |
+
$raw_result, $raw_result, 'client data was serialised to this');
|
214 |
+
}
|
215 |
+
|
216 |
+
function testset_monthly() {
|
217 |
+
$raw_result = '';
|
218 |
+
|
219 |
+
$call_options = $this->get_call_options($this->client_base_route.'setmonthlybilling.json', 'PUT');
|
220 |
+
|
221 |
+
$client_data = array (
|
222 |
+
'Current' => 'PZD',
|
223 |
+
'ClientPays' => true,
|
224 |
+
'MarkupPercentage' => 1000
|
225 |
+
);
|
226 |
+
|
227 |
+
$this->general_test_with_argument('set_monthly_billing', $client_data, $call_options,
|
228 |
+
$raw_result, $raw_result, 'client data was serialised to this');
|
229 |
+
}
|
230 |
+
|
231 |
+
function testtransfer_credits() {
|
232 |
+
$raw_result = 'the result';
|
233 |
+
|
234 |
+
$call_options = $this->get_call_options($this->client_base_route.'credits.json', 'POST');
|
235 |
+
|
236 |
+
$transfer_data = array(
|
237 |
+
'Credits' => 200,
|
238 |
+
'CanUseMyCreditsWhenTheyRunOut' => false
|
239 |
+
);
|
240 |
+
|
241 |
+
$this->general_test_with_argument('transfer_credits', $transfer_data, $call_options,
|
242 |
+
$raw_result, $raw_result, 'transfer data was serialised to this');
|
243 |
+
}
|
244 |
+
|
245 |
+
function testget_primary_contact() {
|
246 |
+
$raw_result = 'primary contact result';
|
247 |
+
$deserialized = array('EmailAddress' => 'test@foo.bar');
|
248 |
+
$call_options = $this->get_call_options($this->client_base_route.'primarycontact.json', 'GET');
|
249 |
+
|
250 |
+
$this->general_test('get_primary_contact', $call_options,
|
251 |
+
$raw_result, $deserialized);
|
252 |
+
}
|
253 |
+
|
254 |
+
function testset_primary_contact() {
|
255 |
+
$raw_result = '';
|
256 |
+
$response_code = 200;
|
257 |
+
$email = 'test@foo.bar';
|
258 |
+
$call_options = $this->get_call_options($this->client_base_route.'primarycontact.json?email=' . urlencode($email), 'PUT');
|
259 |
+
$call_options['data'] = '';
|
260 |
+
|
261 |
+
$transport_result = array (
|
262 |
+
'code' => $response_code,
|
263 |
+
'response' => $raw_result
|
264 |
+
);
|
265 |
+
|
266 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
267 |
+
|
268 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
269 |
+
$raw_result, $raw_result, '', '', $response_code);
|
270 |
+
|
271 |
+
$result = $this->wrapper->set_primary_contact($email);
|
272 |
+
|
273 |
+
$this->assertIdentical($expected_result, $result);
|
274 |
+
}
|
275 |
+
}
|
lib/createsend/tests/csrest_lists_test.php
ADDED
@@ -0,0 +1,485 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestLists extends CS_REST_TestLists {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestLists extends CS_REST_TestLists {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestLists extends CS_REST_TestBase {
|
21 |
+
var $list_id = 'not a real list id';
|
22 |
+
var $list_base_route;
|
23 |
+
|
24 |
+
function set_up_inner() {
|
25 |
+
$this->list_base_route = $this->base_route.'lists/'.$this->list_id.'/';
|
26 |
+
$this->wrapper = new CS_REST_Lists($this->list_id, $this->auth, $this->protocol, $this->log_level,
|
27 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
28 |
+
}
|
29 |
+
|
30 |
+
function testcreate_without_unsubscribe_setting() {
|
31 |
+
$raw_result = 'the new list id';
|
32 |
+
$client_id = 'not a real client id';
|
33 |
+
$response_code = 200;
|
34 |
+
|
35 |
+
$call_options = $this->get_call_options($this->base_route.'lists/'.$client_id.'.json', 'POST');
|
36 |
+
|
37 |
+
$list_info = array (
|
38 |
+
'Title' => 'ABC Widgets',
|
39 |
+
'UnsubscribeURL' => 'Widget Man!'
|
40 |
+
);
|
41 |
+
|
42 |
+
$transport_result = array (
|
43 |
+
'code' => $response_code,
|
44 |
+
'response' => $raw_result
|
45 |
+
);
|
46 |
+
|
47 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
48 |
+
|
49 |
+
$call_options['data'] = 'list info was serialised to this';
|
50 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
51 |
+
$raw_result, $raw_result, 'list info was serialised to this', $list_info, $response_code);
|
52 |
+
|
53 |
+
$result = $this->wrapper->create($client_id, $list_info);
|
54 |
+
|
55 |
+
$this->assertIdentical($expected_result, $result);
|
56 |
+
}
|
57 |
+
|
58 |
+
function testcreate_with_unsubscribe_setting() {
|
59 |
+
$raw_result = 'the new list id';
|
60 |
+
$client_id = 'not a real client id';
|
61 |
+
$response_code = 200;
|
62 |
+
|
63 |
+
$call_options = $this->get_call_options($this->base_route.'lists/'.$client_id.'.json', 'POST');
|
64 |
+
|
65 |
+
$list_info = array (
|
66 |
+
'Title' => 'ABC Widgets',
|
67 |
+
'UnsubscribeURL' => 'Widget Man!',
|
68 |
+
'UnsubscribeSetting' => CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS
|
69 |
+
);
|
70 |
+
|
71 |
+
$transport_result = array (
|
72 |
+
'code' => $response_code,
|
73 |
+
'response' => $raw_result
|
74 |
+
);
|
75 |
+
|
76 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
77 |
+
|
78 |
+
$call_options['data'] = 'list info was serialised to this';
|
79 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
80 |
+
$raw_result, $raw_result, 'list info was serialised to this', $list_info, $response_code);
|
81 |
+
|
82 |
+
$result = $this->wrapper->create($client_id, $list_info);
|
83 |
+
|
84 |
+
$this->assertIdentical($expected_result, $result);
|
85 |
+
}
|
86 |
+
|
87 |
+
function testupdate_without_unsubscribe_setting() {
|
88 |
+
$raw_result = '';
|
89 |
+
|
90 |
+
$call_options = $this->get_call_options(trim($this->list_base_route, '/').'.json', 'PUT');
|
91 |
+
|
92 |
+
$list_info = array (
|
93 |
+
'Title' => 'ABC Widgets',
|
94 |
+
'UnsubscribeURL' => 'Widget Man!'
|
95 |
+
);
|
96 |
+
|
97 |
+
$this->general_test_with_argument('update', $list_info, $call_options,
|
98 |
+
$raw_result, $raw_result, 'list info was serialised to this');
|
99 |
+
}
|
100 |
+
|
101 |
+
function testupdate_with_unsubscribe_setting() {
|
102 |
+
$raw_result = '';
|
103 |
+
|
104 |
+
$call_options = $this->get_call_options(trim($this->list_base_route, '/').'.json', 'PUT');
|
105 |
+
|
106 |
+
$list_info = array (
|
107 |
+
'Title' => 'ABC Widgets',
|
108 |
+
'UnsubscribeURL' => 'Widget Man!',
|
109 |
+
'UnsubscribeSetting' => CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS
|
110 |
+
);
|
111 |
+
|
112 |
+
$this->general_test_with_argument('update', $list_info, $call_options,
|
113 |
+
$raw_result, $raw_result, 'list info was serialised to this');
|
114 |
+
}
|
115 |
+
|
116 |
+
function testupdate_with_unsubscribe_setting_and_supp_list_options() {
|
117 |
+
$raw_result = '';
|
118 |
+
|
119 |
+
$call_options = $this->get_call_options(trim($this->list_base_route, '/').'.json', 'PUT');
|
120 |
+
|
121 |
+
$list_info = array (
|
122 |
+
'Title' => 'ABC Widgets',
|
123 |
+
'UnsubscribeURL' => 'Widget Man!',
|
124 |
+
'UnsubscribeSetting' => CS_REST_LIST_UNSUBSCRIBE_SETTING_ALL_CLIENT_LISTS,
|
125 |
+
'AddUnsubscribesToSuppList' => true,
|
126 |
+
'ScrubActiveWithSuppList' => true
|
127 |
+
);
|
128 |
+
|
129 |
+
$this->general_test_with_argument('update', $list_info, $call_options,
|
130 |
+
$raw_result, $raw_result, 'list info was serialised to this');
|
131 |
+
}
|
132 |
+
|
133 |
+
function testcreate_custom_field() {
|
134 |
+
$raw_result = '';
|
135 |
+
|
136 |
+
$call_options = $this->get_call_options($this->list_base_route.'customfields.json', 'POST');
|
137 |
+
|
138 |
+
$custom_field = array (
|
139 |
+
'Key' => 'ABC Widgets',
|
140 |
+
'Options' => array(1,2,3,4)
|
141 |
+
);
|
142 |
+
|
143 |
+
$this->general_test_with_argument('create_custom_field', $custom_field, $call_options,
|
144 |
+
$raw_result, $raw_result, 'custom field was serialised to this');
|
145 |
+
}
|
146 |
+
|
147 |
+
function testupdate_custom_field() {
|
148 |
+
$raw_result = '';
|
149 |
+
$field_key = 'not a real custom field';
|
150 |
+
$response_code = 200;
|
151 |
+
|
152 |
+
$call_options = $this->get_call_options(
|
153 |
+
$this->list_base_route.'customfields/'.rawurlencode($field_key).'.json', 'PUT');
|
154 |
+
|
155 |
+
$keep_existing = true;
|
156 |
+
|
157 |
+
$serialise_input = array(
|
158 |
+
'FieldName' => 'new field name',
|
159 |
+
'VisibleInPreferenceCenter' => true
|
160 |
+
);
|
161 |
+
|
162 |
+
$transport_result = array (
|
163 |
+
'code' => $response_code,
|
164 |
+
'response' => $raw_result
|
165 |
+
);
|
166 |
+
|
167 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
168 |
+
|
169 |
+
$call_options['data'] = 'options were serialised to this';
|
170 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
171 |
+
$raw_result, $raw_result, 'options were serialised to this', $serialise_input, $response_code);
|
172 |
+
|
173 |
+
$result = $this->wrapper->update_custom_field($field_key, $serialise_input);
|
174 |
+
|
175 |
+
$this->assertIdentical($expected_result, $result);
|
176 |
+
}
|
177 |
+
|
178 |
+
function testupdate_field_options() {
|
179 |
+
$raw_result = '';
|
180 |
+
$field_key = 'not a real custom field';
|
181 |
+
$response_code = 200;
|
182 |
+
|
183 |
+
$call_options = $this->get_call_options(
|
184 |
+
$this->list_base_route.'customfields/'.rawurlencode($field_key).'/options.json', 'PUT');
|
185 |
+
|
186 |
+
$new_options = array ('Option 1', 'Option 2');
|
187 |
+
$keep_existing = true;
|
188 |
+
|
189 |
+
$serialise_input = array(
|
190 |
+
'KeepExistingOptions' => $keep_existing,
|
191 |
+
'Options' => $new_options
|
192 |
+
);
|
193 |
+
|
194 |
+
$transport_result = array (
|
195 |
+
'code' => $response_code,
|
196 |
+
'response' => $raw_result
|
197 |
+
);
|
198 |
+
|
199 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
200 |
+
|
201 |
+
$call_options['data'] = 'options were serialised to this';
|
202 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
203 |
+
$raw_result, $raw_result, 'options were serialised to this', $serialise_input, $response_code);
|
204 |
+
|
205 |
+
$result = $this->wrapper->update_field_options($field_key, $new_options, $keep_existing);
|
206 |
+
|
207 |
+
$this->assertIdentical($expected_result, $result);
|
208 |
+
}
|
209 |
+
|
210 |
+
function testdelete() {
|
211 |
+
$raw_result = '';
|
212 |
+
|
213 |
+
$call_options = $this->get_call_options(trim($this->list_base_route, '/').'.json', 'DELETE');
|
214 |
+
|
215 |
+
$this->general_test('delete', $call_options, $raw_result, $raw_result);
|
216 |
+
}
|
217 |
+
|
218 |
+
function testdelete_custom_field() {
|
219 |
+
$raw_result = '';
|
220 |
+
$response_code = 200;
|
221 |
+
$key = 'custom field key';
|
222 |
+
|
223 |
+
$call_options = $this->get_call_options(
|
224 |
+
$this->list_base_route.'customfields/'.rawurlencode($key).'.json', 'DELETE');
|
225 |
+
|
226 |
+
$transport_result = array (
|
227 |
+
'code' => $response_code,
|
228 |
+
'response' => $raw_result
|
229 |
+
);
|
230 |
+
|
231 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
232 |
+
|
233 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
234 |
+
$raw_result, $raw_result, NULL, NULL, $response_code);
|
235 |
+
|
236 |
+
$result = $this->wrapper->delete_custom_field($key);
|
237 |
+
|
238 |
+
$this->assertIdentical($expected_result, $result);
|
239 |
+
}
|
240 |
+
|
241 |
+
function testget_custom_fields() {
|
242 |
+
$raw_result = 'some custom fields';
|
243 |
+
$deserialised = array('Custom Field 1', 'Custom Field 2');
|
244 |
+
$call_options = $this->get_call_options($this->list_base_route.'customfields.json');
|
245 |
+
|
246 |
+
$this->general_test('get_custom_fields', $call_options, $raw_result, $deserialised);
|
247 |
+
}
|
248 |
+
|
249 |
+
function testget_segments() {
|
250 |
+
$raw_result = 'some segments';
|
251 |
+
$deserialised = array('Segment 1', 'Segment 2');
|
252 |
+
$call_options = $this->get_call_options($this->list_base_route.'segments.json');
|
253 |
+
|
254 |
+
$this->general_test('get_segments', $call_options, $raw_result, $deserialised);
|
255 |
+
}
|
256 |
+
|
257 |
+
function testget_active() {
|
258 |
+
$raw_result = 'some subscribers';
|
259 |
+
$since = '2020';
|
260 |
+
$response_code = 200;
|
261 |
+
$deserialised = array('Subscriber 1', 'Subscriber 2');
|
262 |
+
$call_options = $this->get_call_options($this->list_base_route.'active.json?date='.$since);
|
263 |
+
|
264 |
+
$transport_result = array (
|
265 |
+
'code' => $response_code,
|
266 |
+
'response' => $raw_result
|
267 |
+
);
|
268 |
+
|
269 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
270 |
+
|
271 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
272 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
273 |
+
|
274 |
+
$result = $this->wrapper->get_active_subscribers($since);
|
275 |
+
|
276 |
+
$this->assertIdentical($expected_result, $result);
|
277 |
+
}
|
278 |
+
|
279 |
+
function testget_unconfirmed_subscribers() {
|
280 |
+
$raw_result = 'some subscribers';
|
281 |
+
$since = '2020';
|
282 |
+
$response_code = 200;
|
283 |
+
$deserialised = array('Subscriber 1', 'Subscriber 2');
|
284 |
+
$call_options = $this->get_call_options($this->list_base_route.'unconfirmed.json?date='.$since);
|
285 |
+
|
286 |
+
$transport_result = array (
|
287 |
+
'code' => $response_code,
|
288 |
+
'response' => $raw_result
|
289 |
+
);
|
290 |
+
|
291 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
292 |
+
|
293 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
294 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
295 |
+
|
296 |
+
$result = $this->wrapper->get_unconfirmed_subscribers($since);
|
297 |
+
|
298 |
+
$this->assertIdentical($expected_result, $result);
|
299 |
+
}
|
300 |
+
|
301 |
+
function testget_bounced() {
|
302 |
+
$raw_result = 'some subscribers';
|
303 |
+
$since = '2020';
|
304 |
+
$response_code = 200;
|
305 |
+
$deserialised = array('Subscriber 1', 'Subscriber 2');
|
306 |
+
$call_options = $this->get_call_options($this->list_base_route.'bounced.json?date='.$since);
|
307 |
+
|
308 |
+
$transport_result = array (
|
309 |
+
'code' => $response_code,
|
310 |
+
'response' => $raw_result
|
311 |
+
);
|
312 |
+
|
313 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
314 |
+
|
315 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
316 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
317 |
+
|
318 |
+
$result = $this->wrapper->get_bounced_subscribers($since);
|
319 |
+
|
320 |
+
$this->assertIdentical($expected_result, $result);
|
321 |
+
}
|
322 |
+
|
323 |
+
function testget_unsubscribed() {
|
324 |
+
$raw_result = 'some subscribers';
|
325 |
+
$since = '2020';
|
326 |
+
$response_code = 200;
|
327 |
+
$deserialised = array('Subscriber 1', 'Subscriber 2');
|
328 |
+
$call_options = $this->get_call_options($this->list_base_route.'unsubscribed.json?date='.$since);
|
329 |
+
|
330 |
+
$transport_result = array (
|
331 |
+
'code' => $response_code,
|
332 |
+
'response' => $raw_result
|
333 |
+
);
|
334 |
+
|
335 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
336 |
+
|
337 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
338 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
339 |
+
|
340 |
+
$result = $this->wrapper->get_unsubscribed_subscribers($since);
|
341 |
+
|
342 |
+
$this->assertIdentical($expected_result, $result);
|
343 |
+
}
|
344 |
+
|
345 |
+
function testget_deleted() {
|
346 |
+
$raw_result = 'some subscribers';
|
347 |
+
$since = '2020';
|
348 |
+
$response_code = 200;
|
349 |
+
$deserialised = array('Subscriber 1', 'Subscriber 2');
|
350 |
+
$call_options = $this->get_call_options($this->list_base_route.'deleted.json?date='.$since);
|
351 |
+
|
352 |
+
$transport_result = array (
|
353 |
+
'code' => $response_code,
|
354 |
+
'response' => $raw_result
|
355 |
+
);
|
356 |
+
|
357 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
358 |
+
|
359 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
360 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
361 |
+
|
362 |
+
$result = $this->wrapper->get_deleted_subscribers($since);
|
363 |
+
|
364 |
+
$this->assertIdentical($expected_result, $result);
|
365 |
+
}
|
366 |
+
|
367 |
+
function testget() {
|
368 |
+
$raw_result = 'list details';
|
369 |
+
$deserialised = array(1,23,4,5,6,7);
|
370 |
+
$call_options = $this->get_call_options(trim($this->list_base_route, '/').'.json');
|
371 |
+
|
372 |
+
$this->general_test('get', $call_options, $raw_result, $deserialised);
|
373 |
+
}
|
374 |
+
|
375 |
+
function testget_stats() {
|
376 |
+
$raw_result = 'list stats';
|
377 |
+
$deserialised = array(1,23,4,5,6,7);
|
378 |
+
$call_options = $this->get_call_options($this->list_base_route.'stats.json');
|
379 |
+
|
380 |
+
$this->general_test('get_stats', $call_options, $raw_result, $deserialised);
|
381 |
+
}
|
382 |
+
|
383 |
+
function testget_webhooks() {
|
384 |
+
$raw_result = 'list webhooks';
|
385 |
+
$deserialised = array(1,23,4,5,6,7);
|
386 |
+
$call_options = $this->get_call_options($this->list_base_route.'webhooks.json');
|
387 |
+
|
388 |
+
$this->general_test('get_webhooks', $call_options, $raw_result, $deserialised);
|
389 |
+
}
|
390 |
+
|
391 |
+
function testcreate_webhook() {
|
392 |
+
$raw_result = '';
|
393 |
+
|
394 |
+
$call_options = $this->get_call_options($this->list_base_route.'webhooks.json', 'POST');
|
395 |
+
|
396 |
+
$webhook = array (
|
397 |
+
'Url' => 'http://webhooks.abcwidgets.com/receive',
|
398 |
+
'Events' => array('Subscribe', 'Deactivate')
|
399 |
+
);
|
400 |
+
|
401 |
+
$this->general_test_with_argument('create_webhook', $webhook, $call_options,
|
402 |
+
$raw_result, $raw_result, 'webhook was serialised to this');
|
403 |
+
}
|
404 |
+
|
405 |
+
function testtest_webhook() {
|
406 |
+
$raw_result = '';
|
407 |
+
|
408 |
+
$webhook_id = 'not a real id';
|
409 |
+
$call_options = $this->get_call_options($this->list_base_route.'webhooks/'.$webhook_id.'/test.json');
|
410 |
+
|
411 |
+
$this->general_test_with_argument('test_webhook', $webhook_id, $call_options,
|
412 |
+
$raw_result, $raw_result, NULL);
|
413 |
+
}
|
414 |
+
|
415 |
+
function testdelete_webhook() {
|
416 |
+
$raw_result = '';
|
417 |
+
$response_code = 200;
|
418 |
+
$webhook_id = 'not a webhook id';
|
419 |
+
|
420 |
+
$call_options = $this->get_call_options(
|
421 |
+
$this->list_base_route.'webhooks/'.$webhook_id.'.json', 'DELETE');
|
422 |
+
|
423 |
+
$transport_result = array (
|
424 |
+
'code' => $response_code,
|
425 |
+
'response' => $raw_result
|
426 |
+
);
|
427 |
+
|
428 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
429 |
+
|
430 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
431 |
+
$raw_result, $raw_result, NULL, NULL, $response_code);
|
432 |
+
|
433 |
+
$result = $this->wrapper->delete_webhook($webhook_id);
|
434 |
+
|
435 |
+
$this->assertIdentical($expected_result, $result);
|
436 |
+
}
|
437 |
+
|
438 |
+
function testactivate_webhook() {
|
439 |
+
$raw_result = '';
|
440 |
+
$response_code = 200;
|
441 |
+
$webhook_id = 'not a webhook id';
|
442 |
+
|
443 |
+
$call_options = $this->get_call_options(
|
444 |
+
$this->list_base_route.'webhooks/'.$webhook_id.'/activate.json', 'PUT');
|
445 |
+
$call_options['data'] = '';
|
446 |
+
|
447 |
+
$transport_result = array (
|
448 |
+
'code' => $response_code,
|
449 |
+
'response' => $raw_result
|
450 |
+
);
|
451 |
+
|
452 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
453 |
+
|
454 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
455 |
+
$raw_result, $raw_result, '', '', $response_code);
|
456 |
+
|
457 |
+
$result = $this->wrapper->activate_webhook($webhook_id);
|
458 |
+
|
459 |
+
$this->assertIdentical($expected_result, $result);
|
460 |
+
}
|
461 |
+
|
462 |
+
function testdeeeeactivate_webhook() {
|
463 |
+
$raw_result = '';
|
464 |
+
$response_code = 200;
|
465 |
+
$webhook_id = 'not a webhook id';
|
466 |
+
|
467 |
+
$call_options = $this->get_call_options(
|
468 |
+
$this->list_base_route.'webhooks/'.$webhook_id.'/deactivate.json', 'PUT');
|
469 |
+
$call_options['data'] = '';
|
470 |
+
|
471 |
+
$transport_result = array (
|
472 |
+
'code' => $response_code,
|
473 |
+
'response' => $raw_result
|
474 |
+
);
|
475 |
+
|
476 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
477 |
+
|
478 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
479 |
+
$raw_result, $raw_result, '', '', $response_code);
|
480 |
+
|
481 |
+
$result = $this->wrapper->deactivate_webhook($webhook_id);
|
482 |
+
|
483 |
+
$this->assertIdentical($expected_result, $result);
|
484 |
+
}
|
485 |
+
}
|
lib/createsend/tests/csrest_people_test.php
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestPeople extends CS_REST_TestPeople {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestPeople extends CS_REST_TestPeople {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestPeople extends CS_REST_TestBase {
|
21 |
+
var $client_id = 'not a real client id';
|
22 |
+
var $people_base_route;
|
23 |
+
|
24 |
+
function set_up_inner() {
|
25 |
+
$this->people_base_route = $this->base_route.'clients/'.$this->client_id . '/people';
|
26 |
+
$this->wrapper = new CS_REST_People($this->client_id, $this->auth, $this->protocol, $this->log_level,
|
27 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
28 |
+
}
|
29 |
+
|
30 |
+
function testadd() {
|
31 |
+
$raw_result = '';
|
32 |
+
|
33 |
+
$call_options = $this->get_call_options($this->people_base_route.'.json', 'POST');
|
34 |
+
|
35 |
+
$person = array (
|
36 |
+
'EmailAddress' => 'test@test.com',
|
37 |
+
'Name' => 'Widget Man!',
|
38 |
+
'AccessLevel' => 0
|
39 |
+
);
|
40 |
+
|
41 |
+
$this->general_test_with_argument('add', $person, $call_options,
|
42 |
+
$raw_result, $raw_result, 'person was serialised to this');
|
43 |
+
}
|
44 |
+
|
45 |
+
function testupdate() {
|
46 |
+
$raw_result = '';
|
47 |
+
$email = 'test@test.com';
|
48 |
+
$serialised_person = 'subscriber data';
|
49 |
+
|
50 |
+
$call_options = $this->get_call_options(
|
51 |
+
$this->people_base_route.'.json?email='.urlencode($email), 'PUT');
|
52 |
+
|
53 |
+
$person = array (
|
54 |
+
'EmailAddress' => 'test2@test.com',
|
55 |
+
'Name' => 'Widget Man!',
|
56 |
+
'AccessLevel' => 0
|
57 |
+
);
|
58 |
+
|
59 |
+
$transport_result = array (
|
60 |
+
'code' => 200,
|
61 |
+
'response' => $raw_result
|
62 |
+
);
|
63 |
+
|
64 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, 200);
|
65 |
+
$call_options['data'] = $serialised_person;
|
66 |
+
|
67 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
68 |
+
$raw_result, $raw_result, $serialised_person,
|
69 |
+
$person, 200);
|
70 |
+
|
71 |
+
$result = $this->wrapper->update($email, $person);
|
72 |
+
|
73 |
+
$this->assertIdentical($expected_result, $result);
|
74 |
+
}
|
75 |
+
|
76 |
+
function testget() {
|
77 |
+
$raw_result = 'person details';
|
78 |
+
$deserialised = array(1,2,34,5);
|
79 |
+
$response_code = 200;
|
80 |
+
$email = 'test@test.com';
|
81 |
+
|
82 |
+
$call_options = $this->get_call_options(
|
83 |
+
$this->people_base_route.'.json?email='.urlencode($email), 'GET');
|
84 |
+
|
85 |
+
$transport_result = array (
|
86 |
+
'code' => $response_code,
|
87 |
+
'response' => $raw_result
|
88 |
+
);
|
89 |
+
|
90 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
91 |
+
|
92 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
93 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
94 |
+
|
95 |
+
$result = $this->wrapper->get($email);
|
96 |
+
|
97 |
+
$this->assertIdentical($expected_result, $result);
|
98 |
+
}
|
99 |
+
|
100 |
+
|
101 |
+
function testdelete() {
|
102 |
+
$raw_result = '';
|
103 |
+
$response_code = 200;
|
104 |
+
$email = 'test@test.com';
|
105 |
+
|
106 |
+
$call_options = $this->get_call_options($this->people_base_route.'.json?email='.urlencode($email), 'DELETE');
|
107 |
+
|
108 |
+
$transport_result = array (
|
109 |
+
'code' => $response_code,
|
110 |
+
'response' => $raw_result
|
111 |
+
);
|
112 |
+
|
113 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
114 |
+
|
115 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
116 |
+
$raw_result, $raw_result, NULL, NULL, $response_code);
|
117 |
+
|
118 |
+
$result = $this->wrapper->delete($email);
|
119 |
+
|
120 |
+
$this->assertIdentical($expected_result, $result);
|
121 |
+
}
|
122 |
+
}
|
lib/createsend/tests/csrest_segments_test.php
ADDED
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestSegments extends CS_REST_TestSegments {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestSegments extends CS_REST_TestSegments {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestSegments extends CS_REST_TestBase {
|
21 |
+
var $segment_id = 'not a real segment id';
|
22 |
+
var $segment_base_route;
|
23 |
+
|
24 |
+
function set_up_inner() {
|
25 |
+
$this->segment_base_route = $this->base_route.'segments/'.$this->segment_id;
|
26 |
+
$this->wrapper = new CS_REST_Segments($this->segment_id, $this->auth, $this->protocol, $this->log_level,
|
27 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
28 |
+
}
|
29 |
+
|
30 |
+
function testcreate() {
|
31 |
+
$raw_result = 'the new segment id';
|
32 |
+
$client_id = 'not a real list id';
|
33 |
+
$response_code = 201;
|
34 |
+
|
35 |
+
$call_options = $this->get_call_options(
|
36 |
+
$this->base_route.'segments/'.$client_id.'.json', 'POST');
|
37 |
+
|
38 |
+
$segment = array (
|
39 |
+
'Title' => 'ABC Widgets Subscribers',
|
40 |
+
'Rules' => array(
|
41 |
+
array(
|
42 |
+
'Subject' => 'EmailAddress',
|
43 |
+
'Clauses' => array('CONTAINS abcwidgets.com')
|
44 |
+
)
|
45 |
+
)
|
46 |
+
);
|
47 |
+
|
48 |
+
$transport_result = array (
|
49 |
+
'code' => $response_code,
|
50 |
+
'response' => $raw_result
|
51 |
+
);
|
52 |
+
|
53 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
54 |
+
|
55 |
+
$call_options['data'] = 'segment was serialised to this';
|
56 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
57 |
+
$raw_result, $raw_result,
|
58 |
+
'segment was serialised to this', $segment, $response_code);
|
59 |
+
|
60 |
+
$result = $this->wrapper->create($client_id, $segment);
|
61 |
+
|
62 |
+
$this->assertIdentical($expected_result, $result);
|
63 |
+
}
|
64 |
+
|
65 |
+
function testupdate() {
|
66 |
+
$raw_result = '';
|
67 |
+
|
68 |
+
$call_options = $this->get_call_options($this->segment_base_route.'.json', 'PUT');
|
69 |
+
|
70 |
+
$segment = array (
|
71 |
+
'Title' => 'ABC Widgets Subscribers',
|
72 |
+
'Rules' => array(
|
73 |
+
array(
|
74 |
+
'Subject' => 'EmailAddress',
|
75 |
+
'Clauses' => array('CONTAINS abcwidgets.com')
|
76 |
+
)
|
77 |
+
)
|
78 |
+
);
|
79 |
+
|
80 |
+
$this->general_test_with_argument('update', $segment, $call_options,
|
81 |
+
$raw_result, $raw_result, 'segment was serialised to this');
|
82 |
+
}
|
83 |
+
|
84 |
+
function testadd_rule() {
|
85 |
+
$raw_result = '';
|
86 |
+
|
87 |
+
$call_options = $this->get_call_options($this->segment_base_route.'/rules.json', 'POST');
|
88 |
+
|
89 |
+
$rule = array (
|
90 |
+
'Subject' => 'EmailAddress',
|
91 |
+
'Clauses' => array('CONTAINS abcwidgets.com')
|
92 |
+
);
|
93 |
+
|
94 |
+
$this->general_test_with_argument('add_rule', $rule, $call_options,
|
95 |
+
$raw_result, $raw_result, 'rule was serialised to this');
|
96 |
+
}
|
97 |
+
|
98 |
+
function testget() {
|
99 |
+
$raw_result = 'segment details';
|
100 |
+
$deserialised = array(1,23,4,5,6,7);
|
101 |
+
$call_options = $this->get_call_options($this->segment_base_route.'.json');
|
102 |
+
|
103 |
+
$this->general_test('get', $call_options, $raw_result, $deserialised);
|
104 |
+
}
|
105 |
+
|
106 |
+
function testget_segment_subscribers() {
|
107 |
+
$raw_result = 'some subscribers';
|
108 |
+
$segment_id = 'abc123';
|
109 |
+
$response_code = 200;
|
110 |
+
$deserialised = array('Subscriber 1', 'Subscriber 2');
|
111 |
+
$call_options = $this->get_call_options($this->segment_base_route.'/active.json?date=');
|
112 |
+
|
113 |
+
$transport_result = array (
|
114 |
+
'code' => $response_code,
|
115 |
+
'response' => $raw_result
|
116 |
+
);
|
117 |
+
|
118 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
119 |
+
|
120 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
121 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
122 |
+
|
123 |
+
$result = $this->wrapper->get_subscribers();
|
124 |
+
|
125 |
+
$this->assertIdentical($expected_result, $result);
|
126 |
+
}
|
127 |
+
|
128 |
+
function testclear_rules() {
|
129 |
+
$raw_result = '';
|
130 |
+
|
131 |
+
$call_options = $this->get_call_options($this->segment_base_route.'/rules.json', 'DELETE');
|
132 |
+
|
133 |
+
$this->general_test('clear_rules', $call_options, $raw_result, $raw_result);
|
134 |
+
}
|
135 |
+
|
136 |
+
function testdelete() {
|
137 |
+
$raw_result = '';
|
138 |
+
|
139 |
+
$call_options = $this->get_call_options($this->segment_base_route.'.json', 'DELETE');
|
140 |
+
|
141 |
+
$this->general_test('delete', $call_options, $raw_result, $raw_result);
|
142 |
+
}
|
143 |
+
}
|
lib/createsend/tests/csrest_subscribers_test.php
ADDED
@@ -0,0 +1,217 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestSubscribers extends CS_REST_TestSubscribers {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestSubscribers extends CS_REST_TestSubscribers {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestSubscribers extends CS_REST_TestBase {
|
21 |
+
var $list_id = 'not a real list id';
|
22 |
+
var $list_base_route;
|
23 |
+
|
24 |
+
function set_up_inner() {
|
25 |
+
$this->list_base_route = $this->base_route.'subscribers/'.$this->list_id;
|
26 |
+
$this->wrapper = new CS_REST_Subscribers($this->list_id, $this->auth, $this->protocol, $this->log_level,
|
27 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
28 |
+
}
|
29 |
+
|
30 |
+
function testadd() {
|
31 |
+
$raw_result = '';
|
32 |
+
|
33 |
+
$call_options = $this->get_call_options($this->list_base_route.'.json', 'POST');
|
34 |
+
|
35 |
+
$subscriber = array (
|
36 |
+
'Email' => 'test@test.com',
|
37 |
+
'Name' => 'Widget Man!',
|
38 |
+
'CustomFields' => array(array(1,2), array(3,4))
|
39 |
+
);
|
40 |
+
|
41 |
+
$this->general_test_with_argument('add', $subscriber, $call_options,
|
42 |
+
$raw_result, $raw_result, 'subscriber was serialised to this');
|
43 |
+
}
|
44 |
+
|
45 |
+
function testupdate() {
|
46 |
+
$raw_result = '';
|
47 |
+
$email = 'test@test.com';
|
48 |
+
$serialised_subscriber = 'subscriber data';
|
49 |
+
|
50 |
+
$call_options = $this->get_call_options(
|
51 |
+
$this->list_base_route.'.json?email='.urlencode($email), 'PUT');
|
52 |
+
|
53 |
+
$subscriber = array (
|
54 |
+
'Email' => 'test2@test.com',
|
55 |
+
'Name' => 'Widget Man!',
|
56 |
+
'CustomFields' => array(array(1,2), array(3,4))
|
57 |
+
);
|
58 |
+
|
59 |
+
$transport_result = array (
|
60 |
+
'code' => 200,
|
61 |
+
'response' => $raw_result
|
62 |
+
);
|
63 |
+
|
64 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, 200);
|
65 |
+
$call_options['data'] = $serialised_subscriber;
|
66 |
+
|
67 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
68 |
+
$raw_result, $raw_result, $serialised_subscriber,
|
69 |
+
$subscriber, 200);
|
70 |
+
|
71 |
+
$result = $this->wrapper->update($email, $subscriber);
|
72 |
+
|
73 |
+
$this->assertIdentical($expected_result, $result);
|
74 |
+
}
|
75 |
+
|
76 |
+
function testimport() {
|
77 |
+
$raw_result = 'the import result';
|
78 |
+
$response_code = 200;
|
79 |
+
$resubscribe = true;
|
80 |
+
$queueSubscriptionBasedAutoResponders = true;
|
81 |
+
$restartSubscriptionBasedAutoResponders = false;
|
82 |
+
|
83 |
+
$call_options = $this->get_call_options($this->list_base_route.'/import.json', 'POST');
|
84 |
+
|
85 |
+
$subscribers = array(
|
86 |
+
array (
|
87 |
+
'Email' => 'test@test.com',
|
88 |
+
'Name' => 'Widget Man!',
|
89 |
+
'CustomFields' => array(array(1,2), array(3,4))
|
90 |
+
),
|
91 |
+
array (
|
92 |
+
'Email' => 'test@test.com',
|
93 |
+
'Name' => 'Widget Man!',
|
94 |
+
'CustomFields' => array(array(1,2), array(3,4))
|
95 |
+
)
|
96 |
+
);
|
97 |
+
|
98 |
+
$data = array(
|
99 |
+
'Resubscribe' => $resubscribe,
|
100 |
+
'QueueSubscriptionBasedAutoResponders' => $queueSubscriptionBasedAutoResponders,
|
101 |
+
'Subscribers' => $subscribers,
|
102 |
+
'RestartSubscriptionBasedAutoresponders' => $restartSubscriptionBasedAutoResponders
|
103 |
+
);
|
104 |
+
|
105 |
+
$transport_result = array (
|
106 |
+
'code' => $response_code,
|
107 |
+
'response' => $raw_result
|
108 |
+
);
|
109 |
+
|
110 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
111 |
+
|
112 |
+
$call_options['data'] = 'subscribers were serialised to this';
|
113 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
114 |
+
$raw_result, $raw_result, 'subscribers were serialised to this',
|
115 |
+
$data, $response_code);
|
116 |
+
|
117 |
+
$result = $this->wrapper->import($subscribers, $resubscribe, $queueSubscriptionBasedAutoResponders);
|
118 |
+
|
119 |
+
$this->assertIdentical($expected_result, $result);
|
120 |
+
}
|
121 |
+
|
122 |
+
function testget() {
|
123 |
+
$raw_result = 'subscriber details';
|
124 |
+
$deserialised = array(1,2,34,5);
|
125 |
+
$response_code = 200;
|
126 |
+
$email = 'test@test.com';
|
127 |
+
|
128 |
+
$call_options = $this->get_call_options(
|
129 |
+
$this->list_base_route.'.json?email='.urlencode($email), 'GET');
|
130 |
+
|
131 |
+
$transport_result = array (
|
132 |
+
'code' => $response_code,
|
133 |
+
'response' => $raw_result
|
134 |
+
);
|
135 |
+
|
136 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
137 |
+
|
138 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
139 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
140 |
+
|
141 |
+
$result = $this->wrapper->get($email);
|
142 |
+
|
143 |
+
$this->assertIdentical($expected_result, $result);
|
144 |
+
}
|
145 |
+
|
146 |
+
function testget_history() {
|
147 |
+
$raw_result = 'subscriber history';
|
148 |
+
$deserialised = array(1,2,34,5);
|
149 |
+
$response_code = 200;
|
150 |
+
$email = 'test@test.com';
|
151 |
+
|
152 |
+
$call_options = $this->get_call_options(
|
153 |
+
$this->list_base_route.'/history.json?email='.urlencode($email), 'GET');
|
154 |
+
|
155 |
+
$transport_result = array (
|
156 |
+
'code' => $response_code,
|
157 |
+
'response' => $raw_result
|
158 |
+
);
|
159 |
+
|
160 |
+
$expected_result = new CS_REST_Wrapper_Result($deserialised, $response_code);
|
161 |
+
|
162 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
163 |
+
$deserialised, $raw_result, NULL, NULL, $response_code);
|
164 |
+
|
165 |
+
$result = $this->wrapper->get_history($email);
|
166 |
+
|
167 |
+
$this->assertIdentical($expected_result, $result);
|
168 |
+
}
|
169 |
+
|
170 |
+
function testunsubscribe() {
|
171 |
+
$raw_result = '';
|
172 |
+
$response_code = 200;
|
173 |
+
$email = 'test@test.com';
|
174 |
+
|
175 |
+
$call_options = $this->get_call_options($this->list_base_route.'/unsubscribe.json', 'POST');
|
176 |
+
|
177 |
+
$subscriber = array('EmailAddress' => $email);
|
178 |
+
|
179 |
+
$transport_result = array (
|
180 |
+
'code' => $response_code,
|
181 |
+
'response' => $raw_result
|
182 |
+
);
|
183 |
+
|
184 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
185 |
+
|
186 |
+
$call_options['data'] = 'subscriber was serialised to this';
|
187 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
188 |
+
$raw_result, $raw_result,
|
189 |
+
'subscriber was serialised to this', $subscriber, $response_code);
|
190 |
+
|
191 |
+
$result = $this->wrapper->unsubscribe($email);
|
192 |
+
|
193 |
+
$this->assertIdentical($expected_result, $result);
|
194 |
+
}
|
195 |
+
|
196 |
+
function testdelete() {
|
197 |
+
$raw_result = '';
|
198 |
+
$response_code = 200;
|
199 |
+
$email = 'test@test.com';
|
200 |
+
|
201 |
+
$call_options = $this->get_call_options($this->list_base_route.'.json?email='.urlencode($email), 'DELETE');
|
202 |
+
|
203 |
+
$transport_result = array (
|
204 |
+
'code' => $response_code,
|
205 |
+
'response' => $raw_result
|
206 |
+
);
|
207 |
+
|
208 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
209 |
+
|
210 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
211 |
+
$raw_result, $raw_result, NULL, NULL, $response_code);
|
212 |
+
|
213 |
+
$result = $this->wrapper->delete($email);
|
214 |
+
|
215 |
+
$this->assertIdentical($expected_result, $result);
|
216 |
+
}
|
217 |
+
}
|
lib/createsend/tests/csrest_template_test.php
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_ApiKeyTestTemplates extends CS_REST_TestTemplates {
|
11 |
+
var $auth = array('api_key' => 'not a real api key');
|
12 |
+
}
|
13 |
+
|
14 |
+
class CS_REST_OAuthTestTemplates extends CS_REST_TestTemplates {
|
15 |
+
var $auth = array(
|
16 |
+
'access_token' => '7y872y3872i3eh',
|
17 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
18 |
+
}
|
19 |
+
|
20 |
+
abstract class CS_REST_TestTemplates extends CS_REST_TestBase {
|
21 |
+
var $template_id = 'not a real template id';
|
22 |
+
var $template_base_route;
|
23 |
+
|
24 |
+
function set_up_inner() {
|
25 |
+
$this->template_base_route = $this->base_route.'templates/'.$this->template_id;
|
26 |
+
$this->wrapper = new CS_REST_Templates($this->template_id, $this->auth, $this->protocol, $this->log_level,
|
27 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
28 |
+
}
|
29 |
+
|
30 |
+
function testcreate() {
|
31 |
+
$raw_result = 'the new template id';
|
32 |
+
$client_id = 'not a real client id';
|
33 |
+
$response_code = 200;
|
34 |
+
|
35 |
+
$call_options = $this->get_call_options(
|
36 |
+
$this->base_route.'templates/'.$client_id.'.json', 'POST');
|
37 |
+
|
38 |
+
$template = array (
|
39 |
+
'Name' => 'ABC Widgets',
|
40 |
+
'HtmlURL' => 'http://test.abc.net.au'
|
41 |
+
);
|
42 |
+
|
43 |
+
$transport_result = array (
|
44 |
+
'code' => $response_code,
|
45 |
+
'response' => $raw_result
|
46 |
+
);
|
47 |
+
|
48 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
49 |
+
|
50 |
+
$call_options['data'] = 'template was serialised to this';
|
51 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
52 |
+
$raw_result, $raw_result,
|
53 |
+
'template was serialised to this', $template, $response_code);
|
54 |
+
|
55 |
+
$result = $this->wrapper->create($client_id, $template);
|
56 |
+
|
57 |
+
$this->assertIdentical($expected_result, $result);
|
58 |
+
}
|
59 |
+
|
60 |
+
function testupdate() {
|
61 |
+
$raw_result = '';
|
62 |
+
|
63 |
+
$call_options = $this->get_call_options($this->template_base_route.'.json', 'PUT');
|
64 |
+
|
65 |
+
$template = array (
|
66 |
+
'Name' => 'ABC Widgets',
|
67 |
+
'HtmlURL' => 'http://test.abc.net.au'
|
68 |
+
);
|
69 |
+
|
70 |
+
$this->general_test_with_argument('update', $template, $call_options,
|
71 |
+
$raw_result, $raw_result, 'template was serialised to this');
|
72 |
+
}
|
73 |
+
|
74 |
+
function testget() {
|
75 |
+
$raw_result = 'template details';
|
76 |
+
$deserialised = array(1,23,4,5,6,7);
|
77 |
+
$call_options = $this->get_call_options($this->template_base_route.'.json');
|
78 |
+
|
79 |
+
$this->general_test('get', $call_options, $raw_result, $deserialised);
|
80 |
+
}
|
81 |
+
|
82 |
+
function testdelete() {
|
83 |
+
$raw_result = '';
|
84 |
+
|
85 |
+
$call_options = $this->get_call_options($this->template_base_route.'.json', 'DELETE');
|
86 |
+
|
87 |
+
$this->general_test('delete', $call_options, $raw_result, $raw_result);
|
88 |
+
}
|
89 |
+
}
|
lib/createsend/tests/csrest_test.php
ADDED
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once __DIR__.'/../vendor/autoload.php';
|
4 |
+
require_once __DIR__.'/../vendor/lastcraft/simpletest/autorun.php';
|
5 |
+
|
6 |
+
@Mock::generate('CS_REST_Log');
|
7 |
+
@Mock::generate('CS_REST_NativeJsonSerialiser');
|
8 |
+
@Mock::generate('CS_REST_CurlTransport');
|
9 |
+
|
10 |
+
class CS_REST_TestBase extends UnitTestCase {
|
11 |
+
var $mock_log;
|
12 |
+
var $mock_serialiser;
|
13 |
+
var $mock_transport;
|
14 |
+
|
15 |
+
var $wrapper;
|
16 |
+
|
17 |
+
var $serialisation_type = 'mockjson';
|
18 |
+
var $transport_type = 'mock_cURL';
|
19 |
+
var $auth = NULL;
|
20 |
+
var $protocol = 'hotpotatoes';
|
21 |
+
var $api_host = 'api.test.createsend.com';
|
22 |
+
var $log_level = CS_REST_LOG_NONE;
|
23 |
+
|
24 |
+
var $base_route;
|
25 |
+
|
26 |
+
function setUp() {
|
27 |
+
$this->mock_log = new MockCS_REST_Log();
|
28 |
+
$this->mock_serialiser = new MockCS_REST_NativeJsonSerialiser();
|
29 |
+
$this->mock_transport = new MockCS_REST_CurlTransport();
|
30 |
+
|
31 |
+
$this->mock_transport->setReturnValue('get_type', $this->transport_type);
|
32 |
+
$this->mock_serialiser->setReturnValue('get_type', $this->serialisation_type);
|
33 |
+
|
34 |
+
$this->base_route = $this->protocol.'://'.$this->api_host.'/api/v3/';
|
35 |
+
|
36 |
+
$this->set_up_inner();
|
37 |
+
}
|
38 |
+
|
39 |
+
function set_up_inner() {
|
40 |
+
$this->wrapper = new CS_REST_General($this->auth, $this->protocol, $this->log_level,
|
41 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
42 |
+
}
|
43 |
+
|
44 |
+
function get_call_options($route, $method = 'GET') {
|
45 |
+
return array (
|
46 |
+
'authdetails' => $this->auth,
|
47 |
+
'userAgent' => 'CS_REST_Wrapper v'.CS_REST_WRAPPER_VERSION.
|
48 |
+
' PHPv'.phpversion().' over '.$this->transport_type.' with '.$this->serialisation_type,
|
49 |
+
'contentType' => 'application/json; charset=utf-8',
|
50 |
+
'deserialise' => true,
|
51 |
+
'host' => $this->api_host,
|
52 |
+
'protocol' => $this->protocol,
|
53 |
+
'route' => $route,
|
54 |
+
'method' => $method
|
55 |
+
);
|
56 |
+
}
|
57 |
+
|
58 |
+
function setup_transport_and_serialisation($make_call_result, $call_options,
|
59 |
+
$deserialise_result, $deserialise_input, $serialise_result = NULL, $serialise_input = NULL) {
|
60 |
+
|
61 |
+
$this->mock_transport->setReturnValue('make_call', $make_call_result);
|
62 |
+
$this->mock_transport->expectOnce('make_call', array(new IdenticalExpectation($call_options)));
|
63 |
+
|
64 |
+
$this->mock_serialiser->setReturnValue('deserialise', $deserialise_result);
|
65 |
+
$this->mock_serialiser->expectOnce('deserialise', array(new IdenticalExpectation($deserialise_input)));
|
66 |
+
|
67 |
+
if(!is_null($serialise_result)) {
|
68 |
+
$this->mock_serialiser->setReturnValue('serialise', $serialise_result);
|
69 |
+
$this->mock_serialiser->expectOnce('serialise', array(new IdenticalExpectation($serialise_input)));
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
function general_test($wrapper_function, $call_options, $from_transport,
|
74 |
+
$from_deserialisation, $response_code = 200) {
|
75 |
+
|
76 |
+
$transport_result = array (
|
77 |
+
'code' => $response_code,
|
78 |
+
'response' => $from_transport
|
79 |
+
);
|
80 |
+
|
81 |
+
$expected_result = new CS_REST_Wrapper_Result($from_deserialisation, $response_code);
|
82 |
+
|
83 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
84 |
+
$from_deserialisation, $from_transport, NULL, NULL, $response_code);
|
85 |
+
|
86 |
+
$result = $this->wrapper->$wrapper_function();
|
87 |
+
|
88 |
+
$this->assertIdentical($expected_result, $result);
|
89 |
+
}
|
90 |
+
|
91 |
+
function general_test_with_argument($wrapper_function, $function_argument, $call_options,
|
92 |
+
$from_transport, $from_deserialisation,
|
93 |
+
$from_serialisation = 'serialised', $response_code = 200) {
|
94 |
+
|
95 |
+
$transport_result = array (
|
96 |
+
'code' => $response_code,
|
97 |
+
'response' => $from_transport
|
98 |
+
);
|
99 |
+
|
100 |
+
$expected_result = new CS_REST_Wrapper_Result($from_deserialisation, $response_code);
|
101 |
+
|
102 |
+
if(!is_null($from_serialisation)) {
|
103 |
+
$call_options['data'] = $from_serialisation;
|
104 |
+
}
|
105 |
+
|
106 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
107 |
+
$from_deserialisation, $from_transport, $from_serialisation,
|
108 |
+
$function_argument, $response_code);
|
109 |
+
|
110 |
+
$result = $this->wrapper->$wrapper_function($function_argument);
|
111 |
+
|
112 |
+
$this->assertIdentical($expected_result, $result);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
class CS_REST_ApiKeyTestGeneral extends CS_REST_TestGeneral {
|
117 |
+
var $auth = array('api_key' => 'not a real api key');
|
118 |
+
}
|
119 |
+
|
120 |
+
class CS_REST_OAuthTestGeneral extends CS_REST_TestGeneral {
|
121 |
+
var $auth = array(
|
122 |
+
'access_token' => '7y872y3872i3eh',
|
123 |
+
'refresh_token' => 'kjw8qjd9ow8jo');
|
124 |
+
|
125 |
+
function test_static_authorize_url_without_state() {
|
126 |
+
$client_id = 8998879;
|
127 |
+
$redirect_uri = 'http://example.com/auth';
|
128 |
+
$scope = 'ViewReports,CreateCampaigns,SendCampaigns';
|
129 |
+
$expected_result = "https://api.createsend.com/oauth?client_id=8998879&redirect_uri=http%3A%2F%2Fexample.com%2Fauth&scope=ViewReports%2CCreateCampaigns%2CSendCampaigns";
|
130 |
+
|
131 |
+
$result = CS_REST_General::authorize_url($client_id, $redirect_uri, $scope);
|
132 |
+
|
133 |
+
$this->assertIdentical($expected_result, $result);
|
134 |
+
}
|
135 |
+
|
136 |
+
function test_static_authorize_url_with_state() {
|
137 |
+
$client_id = 8998879;
|
138 |
+
$redirect_uri = 'http://example.com/auth';
|
139 |
+
$scope = 'ViewReports,CreateCampaigns,SendCampaigns';
|
140 |
+
$state = 89879287;
|
141 |
+
$expected_result = "https://api.createsend.com/oauth?client_id=8998879&redirect_uri=http%3A%2F%2Fexample.com%2Fauth&scope=ViewReports%2CCreateCampaigns%2CSendCampaigns&state=89879287";
|
142 |
+
|
143 |
+
$result = CS_REST_General::authorize_url($client_id, $redirect_uri, $scope, $state);
|
144 |
+
|
145 |
+
$this->assertIdentical($expected_result, $result);
|
146 |
+
}
|
147 |
+
|
148 |
+
function test_refresh_token_error_when_refresh_token_null() {
|
149 |
+
$auth = array('access_token' => 'validaccesstoken', 'refresh_token' => NULL);
|
150 |
+
$this->wrapper = new CS_REST_General($auth, $this->protocol, $this->log_level,
|
151 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
152 |
+
$this->expectError('Error refreshing token. There is no refresh token set on this object.');
|
153 |
+
list($new_access_token, $new_expires_in, $new_refresh_token) =
|
154 |
+
$this->wrapper->refresh_token();
|
155 |
+
}
|
156 |
+
|
157 |
+
function test_refresh_token_error_when_refresh_token_not_set() {
|
158 |
+
$auth = array('access_token' => 'validaccesstoken');
|
159 |
+
$this->wrapper = new CS_REST_General($auth, $this->protocol, $this->log_level,
|
160 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
161 |
+
$this->expectError('Error refreshing token. There is no refresh token set on this object.');
|
162 |
+
list($new_access_token, $new_expires_in, $new_refresh_token) =
|
163 |
+
$this->wrapper->refresh_token();
|
164 |
+
}
|
165 |
+
|
166 |
+
function test_refresh_token_error_when_no_auth() {
|
167 |
+
$this->wrapper = new CS_REST_General(NULL, $this->protocol, $this->log_level,
|
168 |
+
$this->api_host, $this->mock_log, $this->mock_serialiser, $this->mock_transport);
|
169 |
+
$this->expectError('Error refreshing token. There is no refresh token set on this object.');
|
170 |
+
list($new_access_token, $new_expires_in, $new_refresh_token) =
|
171 |
+
$this->wrapper->refresh_token();
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
+
abstract class CS_REST_TestGeneral extends CS_REST_TestBase {
|
176 |
+
|
177 |
+
function testget_timezones() {
|
178 |
+
$raw_result = 'some timezones';
|
179 |
+
$deserialised = array('timezone1', 'timezone2');
|
180 |
+
$call_options = $this->get_call_options($this->base_route.'timezones.json');
|
181 |
+
|
182 |
+
$this->general_test('get_timezones', $call_options, $raw_result, $deserialised);
|
183 |
+
}
|
184 |
+
|
185 |
+
function testget_systemdate() {
|
186 |
+
$raw_result = 'system date';
|
187 |
+
$call_options = $this->get_call_options($this->base_route.'systemdate.json');
|
188 |
+
|
189 |
+
$this->general_test('get_systemdate', $call_options, $raw_result, $raw_result);
|
190 |
+
}
|
191 |
+
|
192 |
+
function testget_countries() {
|
193 |
+
$raw_result = 'some countries';
|
194 |
+
$deserialised = array('Australia', 'Suid Afrika');
|
195 |
+
$call_options = $this->get_call_options($this->base_route.'countries.json');
|
196 |
+
|
197 |
+
$this->general_test('get_countries', $call_options, $raw_result, $deserialised);
|
198 |
+
}
|
199 |
+
|
200 |
+
function testget_apikey() {
|
201 |
+
$raw_result = 'another fake api key';
|
202 |
+
$username = 'username';
|
203 |
+
$password = 'password';
|
204 |
+
$site_url = 'unit.test.createsend.com';
|
205 |
+
|
206 |
+
$call_options = $this->get_call_options($this->base_route.'apikey.json?siteurl='.$site_url);
|
207 |
+
$call_options['authdetails'] = array('username' => $username, 'password' => $password);
|
208 |
+
|
209 |
+
$transport_result = array (
|
210 |
+
'code' => 200,
|
211 |
+
'response' => $raw_result
|
212 |
+
);
|
213 |
+
|
214 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, 200);
|
215 |
+
|
216 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
217 |
+
$raw_result, $raw_result);
|
218 |
+
|
219 |
+
$result = $this->wrapper->get_apikey($username, $password, $site_url);
|
220 |
+
$this->assertIdentical($expected_result, $result);
|
221 |
+
}
|
222 |
+
|
223 |
+
function testget_clients() {
|
224 |
+
$raw_result = 'some clients';
|
225 |
+
$deserialised = array('Curran & Hughes', 'Repsol');
|
226 |
+
$call_options = $this->get_call_options($this->base_route.'clients.json');
|
227 |
+
|
228 |
+
$this->general_test('get_clients', $call_options, $raw_result, $deserialised);
|
229 |
+
}
|
230 |
+
|
231 |
+
function testget_billing_details() {
|
232 |
+
$raw_result = 'billing details';
|
233 |
+
$call_options = $this->get_call_options($this->base_route.'billingdetails.json');
|
234 |
+
$this->general_test('get_billing_details', $call_options, $raw_result, $raw_result);
|
235 |
+
}
|
236 |
+
|
237 |
+
function testget_primary_contact() {
|
238 |
+
$raw_result = 'primary contact result';
|
239 |
+
$deserialized = array('EmailAddress' => 'test@foo.bar');
|
240 |
+
$call_options = $this->get_call_options($this->base_route.'primarycontact.json', 'GET');
|
241 |
+
|
242 |
+
$this->general_test('get_primary_contact', $call_options,
|
243 |
+
$raw_result, $deserialized);
|
244 |
+
}
|
245 |
+
|
246 |
+
function testset_primary_contact() {
|
247 |
+
$raw_result = '';
|
248 |
+
$response_code = 200;
|
249 |
+
$email = 'test@foo.bar';
|
250 |
+
$call_options = $this->get_call_options($this->base_route.'primarycontact.json?email=' . urlencode($email), 'PUT');
|
251 |
+
$call_options['data'] = '';
|
252 |
+
|
253 |
+
$transport_result = array (
|
254 |
+
'code' => $response_code,
|
255 |
+
'response' => $raw_result
|
256 |
+
);
|
257 |
+
|
258 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
259 |
+
|
260 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
261 |
+
$raw_result, $raw_result, '', '', $response_code);
|
262 |
+
|
263 |
+
$result = $this->wrapper->set_primary_contact($email);
|
264 |
+
|
265 |
+
$this->assertIdentical($expected_result, $result);
|
266 |
+
}
|
267 |
+
|
268 |
+
function testset_external_session_url() {
|
269 |
+
$session_options = array(
|
270 |
+
'Email' => "exammple@example.com",
|
271 |
+
'Chrome' => "None",
|
272 |
+
'Url' => "/subscribers",
|
273 |
+
'IntegratorID' => "qw989q8wud98qwyd",
|
274 |
+
'ClientID' => "9q8uw9d8u9wud" );
|
275 |
+
$raw_result = '';
|
276 |
+
$response_code = 200;
|
277 |
+
$call_options = $this->get_call_options($this->base_route.'externalsession.json', 'PUT');
|
278 |
+
$call_options['data'] = 'session options were serialised to this';
|
279 |
+
|
280 |
+
$transport_result = array (
|
281 |
+
'code' => $response_code,
|
282 |
+
'response' => $raw_result
|
283 |
+
);
|
284 |
+
|
285 |
+
$expected_result = new CS_REST_Wrapper_Result($raw_result, $response_code);
|
286 |
+
|
287 |
+
$this->setup_transport_and_serialisation($transport_result, $call_options,
|
288 |
+
$raw_result, $raw_result, 'session options were serialised to this',
|
289 |
+
$session_options, $response_code);
|
290 |
+
|
291 |
+
$result = $this->wrapper->external_session_url($session_options);
|
292 |
+
|
293 |
+
$this->assertIdentical($expected_result, $result);
|
294 |
+
}
|
295 |
+
}
|
lib/createsend/tests/responses/active_subscribers.json
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subs+7t8787Y@example.com",
|
5 |
+
"Name": "Person One",
|
6 |
+
"Date": "2010-10-25 10:28:00",
|
7 |
+
"State": "Active",
|
8 |
+
"CustomFields": [
|
9 |
+
{
|
10 |
+
"Key": "website",
|
11 |
+
"Value": "http://example.com"
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"Key": "age",
|
15 |
+
"Value": "24"
|
16 |
+
},
|
17 |
+
{
|
18 |
+
"Key": "subscription date",
|
19 |
+
"Value": "2010-03-09"
|
20 |
+
}
|
21 |
+
],
|
22 |
+
"ReadsEmailWith": "Gmail"
|
23 |
+
},
|
24 |
+
{
|
25 |
+
"EmailAddress": "subs+7878787y8ggg@example.com",
|
26 |
+
"Name": "Person Two",
|
27 |
+
"Date": "2010-10-25 12:17:00",
|
28 |
+
"State": "Active",
|
29 |
+
"CustomFields": [
|
30 |
+
{
|
31 |
+
"Key": "website",
|
32 |
+
"Value": "http://subdomain.example.com"
|
33 |
+
}
|
34 |
+
],
|
35 |
+
"ReadsEmailWith": "Gmail"
|
36 |
+
},
|
37 |
+
{
|
38 |
+
"EmailAddress": "subs+7890909i0ggg@example.com",
|
39 |
+
"Name": "Person Three",
|
40 |
+
"Date": "2010-10-25 12:52:00",
|
41 |
+
"State": "Active",
|
42 |
+
"CustomFields": [
|
43 |
+
{
|
44 |
+
"Key": "website",
|
45 |
+
"Value": "http://subdomain.example.com"
|
46 |
+
}
|
47 |
+
],
|
48 |
+
"ReadsEmailWith": ""
|
49 |
+
},
|
50 |
+
{
|
51 |
+
"EmailAddress": "subs@example.com",
|
52 |
+
"Name": "Person Four",
|
53 |
+
"Date": "2010-10-27 13:13:00",
|
54 |
+
"State": "Active",
|
55 |
+
"CustomFields": [],
|
56 |
+
"ReadsEmailWith": ""
|
57 |
+
},
|
58 |
+
{
|
59 |
+
"EmailAddress": "joey@example.com",
|
60 |
+
"Name": "Person Five",
|
61 |
+
"Date": "2010-10-27 13:13:00",
|
62 |
+
"State": "Active",
|
63 |
+
"CustomFields": [],
|
64 |
+
"ReadsEmailWith": "Gmail"
|
65 |
+
}
|
66 |
+
],
|
67 |
+
"ResultsOrderedBy": "email",
|
68 |
+
"OrderDirection": "asc",
|
69 |
+
"PageNumber": 1,
|
70 |
+
"PageSize": 1000,
|
71 |
+
"RecordsOnThisPage": 5,
|
72 |
+
"TotalNumberOfRecords": 5,
|
73 |
+
"NumberOfPages": 1
|
74 |
+
}
|
lib/createsend/tests/responses/add_subscriber.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"subscriber@example.com"
|
lib/createsend/tests/responses/apikey.json
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ApiKey": "981298u298ue98u219e8u2e98u2"
|
3 |
+
}
|
lib/createsend/tests/responses/bounced_subscribers.json
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "bouncedsubscriber@example.com",
|
5 |
+
"Name": "Bounced One",
|
6 |
+
"Date": "2010-10-25 13:11:00",
|
7 |
+
"State": "Bounced",
|
8 |
+
"CustomFields": [],
|
9 |
+
"ReadsEmailWith": ""
|
10 |
+
}
|
11 |
+
],
|
12 |
+
"ResultsOrderedBy": "email",
|
13 |
+
"OrderDirection": "asc",
|
14 |
+
"PageNumber": 1,
|
15 |
+
"PageSize": 1000,
|
16 |
+
"RecordsOnThisPage": 1,
|
17 |
+
"TotalNumberOfRecords": 1,
|
18 |
+
"NumberOfPages": 1
|
19 |
+
}
|
lib/createsend/tests/responses/campaign_bounces.json
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "asdf@softbouncemyemail.com",
|
5 |
+
"ListID": "654523a5855b4a440bae3fb295641546",
|
6 |
+
"BounceType": "Soft",
|
7 |
+
"Date": "2010-07-02 16:46:00",
|
8 |
+
"Reason": "Bounce - But No Email Address Returned "
|
9 |
+
},
|
10 |
+
{
|
11 |
+
"EmailAddress": "asdf@hardbouncemyemail.com",
|
12 |
+
"ListID": "654523a5855b4a440bae3fb295641546",
|
13 |
+
"BounceType": "Soft",
|
14 |
+
"Date": "2010-07-02 16:46:00",
|
15 |
+
"Reason": "Soft Bounce - General"
|
16 |
+
}
|
17 |
+
],
|
18 |
+
"ResultsOrderedBy": "date",
|
19 |
+
"OrderDirection": "asc",
|
20 |
+
"PageNumber": 1,
|
21 |
+
"PageSize": 1000,
|
22 |
+
"RecordsOnThisPage": 2,
|
23 |
+
"TotalNumberOfRecords": 2,
|
24 |
+
"NumberOfPages": 1
|
25 |
+
}
|
lib/createsend/tests/responses/campaign_clicks.json
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subs+6576576576@example.com",
|
5 |
+
"URL": "http://video.google.com.au/?hl=en&tab=wv",
|
6 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
7 |
+
"Date": "2010-10-11 08:29:00",
|
8 |
+
"IPAddress": "192.168.126.87",
|
9 |
+
"Latitude": -33.8683,
|
10 |
+
"Longitude": 151.2086,
|
11 |
+
"City": "Sydney",
|
12 |
+
"Region": "New South Wales",
|
13 |
+
"CountryCode": "AU",
|
14 |
+
"CountryName": "Australia"
|
15 |
+
},
|
16 |
+
{
|
17 |
+
"EmailAddress": "subs+6576576576@example.com",
|
18 |
+
"URL": "http://mail.google.com/mail/?hl=en&tab=wm",
|
19 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
20 |
+
"Date": "2010-10-11 08:29:00",
|
21 |
+
"IPAddress": "192.168.126.87",
|
22 |
+
"Latitude": -33.8683,
|
23 |
+
"Longitude": 151.2086,
|
24 |
+
"City": "Sydney",
|
25 |
+
"Region": "New South Wales",
|
26 |
+
"CountryCode": "AU",
|
27 |
+
"CountryName": "Australia"
|
28 |
+
},
|
29 |
+
{
|
30 |
+
"EmailAddress": "subs+6576576576@example.com",
|
31 |
+
"URL": "http://mail.google.com/mail/?hl=en&tab=wm",
|
32 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
33 |
+
"Date": "2010-10-06 17:24:00",
|
34 |
+
"IPAddress": "192.168.126.87",
|
35 |
+
"Latitude": -33.8683,
|
36 |
+
"Longitude": 151.2086,
|
37 |
+
"City": "Sydney",
|
38 |
+
"Region": "New South Wales",
|
39 |
+
"CountryCode": "AU",
|
40 |
+
"CountryName": "Australia"
|
41 |
+
}
|
42 |
+
],
|
43 |
+
"ResultsOrderedBy": "date",
|
44 |
+
"OrderDirection": "asc",
|
45 |
+
"PageNumber": 1,
|
46 |
+
"PageSize": 1000,
|
47 |
+
"RecordsOnThisPage": 3,
|
48 |
+
"TotalNumberOfRecords": 3,
|
49 |
+
"NumberOfPages": 1
|
50 |
+
}
|
lib/createsend/tests/responses/campaign_listsandsegments.json
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Lists": [
|
3 |
+
{
|
4 |
+
"ListID": "a58ee1d3039b8bec838e6d1482a8a965",
|
5 |
+
"Name": "List One"
|
6 |
+
}
|
7 |
+
],
|
8 |
+
"Segments": [
|
9 |
+
{
|
10 |
+
"ListID": "2bea949d0bf96148c3e6a209d2e82060",
|
11 |
+
"SegmentID": "dba84a225d5ce3d19105d7257baac46f",
|
12 |
+
"Title": "Segment for campaign"
|
13 |
+
}
|
14 |
+
]
|
15 |
+
}
|
lib/createsend/tests/responses/campaign_opens.json
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subs+6576576576@example.com",
|
5 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
6 |
+
"Date": "2010-10-11 08:29:00",
|
7 |
+
"IPAddress": "192.168.126.87",
|
8 |
+
"Latitude": -33.8683,
|
9 |
+
"Longitude": 151.2086,
|
10 |
+
"City": "Sydney",
|
11 |
+
"Region": "New South Wales",
|
12 |
+
"CountryCode": "AU",
|
13 |
+
"CountryName": "Australia"
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"EmailAddress": "subs+6576576576@example.com",
|
17 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
18 |
+
"Date": "2010-10-08 14:24:00",
|
19 |
+
"IPAddress": "192.168.126.87",
|
20 |
+
"Latitude": -33.8683,
|
21 |
+
"Longitude": 151.2086,
|
22 |
+
"City": "Sydney",
|
23 |
+
"Region": "New South Wales",
|
24 |
+
"CountryCode": "AU",
|
25 |
+
"CountryName": "Australia"
|
26 |
+
},
|
27 |
+
{
|
28 |
+
"EmailAddress": "subs+6576576576@example.com",
|
29 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
30 |
+
"Date": "2010-10-07 10:20:00",
|
31 |
+
"IPAddress": "192.168.126.87",
|
32 |
+
"Latitude": -33.8683,
|
33 |
+
"Longitude": 151.2086,
|
34 |
+
"City": "Sydney",
|
35 |
+
"Region": "New South Wales",
|
36 |
+
"CountryCode": "AU",
|
37 |
+
"CountryName": "Australia"
|
38 |
+
},
|
39 |
+
{
|
40 |
+
"EmailAddress": "subs+6576576576@example.com",
|
41 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
42 |
+
"Date": "2010-10-07 07:15:00",
|
43 |
+
"IPAddress": "192.168.126.87",
|
44 |
+
"Latitude": -33.8683,
|
45 |
+
"Longitude": 151.2086,
|
46 |
+
"City": "Sydney",
|
47 |
+
"Region": "New South Wales",
|
48 |
+
"CountryCode": "AU",
|
49 |
+
"CountryName": "Australia"
|
50 |
+
},
|
51 |
+
{
|
52 |
+
"EmailAddress": "subs+6576576576@example.com",
|
53 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
54 |
+
"Date": "2010-10-07 06:58:00",
|
55 |
+
"IPAddress": "192.168.126.87",
|
56 |
+
"Latitude": -33.8683,
|
57 |
+
"Longitude": 151.2086,
|
58 |
+
"City": "Sydney",
|
59 |
+
"Region": "New South Wales",
|
60 |
+
"CountryCode": "AU",
|
61 |
+
"CountryName": "Australia"
|
62 |
+
}
|
63 |
+
],
|
64 |
+
"ResultsOrderedBy": "date",
|
65 |
+
"OrderDirection": "asc",
|
66 |
+
"PageNumber": 1,
|
67 |
+
"PageSize": 1000,
|
68 |
+
"RecordsOnThisPage": 5,
|
69 |
+
"TotalNumberOfRecords": 5,
|
70 |
+
"NumberOfPages": 1
|
71 |
+
}
|
lib/createsend/tests/responses/campaign_recipients.json
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subs+6g76t7t0@example.com",
|
5 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
6 |
+
},
|
7 |
+
{
|
8 |
+
"EmailAddress": "subs+6g76t7t1@example.com",
|
9 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
10 |
+
},
|
11 |
+
{
|
12 |
+
"EmailAddress": "subs+6g76t7t10@example.com",
|
13 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"EmailAddress": "subs+6g76t7t100@example.com",
|
17 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
18 |
+
},
|
19 |
+
{
|
20 |
+
"EmailAddress": "subs+6g76t7t1000@example.com",
|
21 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
22 |
+
},
|
23 |
+
{
|
24 |
+
"EmailAddress": "subs+6g76t7t1001@example.com",
|
25 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
26 |
+
},
|
27 |
+
{
|
28 |
+
"EmailAddress": "subs+6g76t7t1002@example.com",
|
29 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
30 |
+
},
|
31 |
+
{
|
32 |
+
"EmailAddress": "subs+6g76t7t1003@example.com",
|
33 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
34 |
+
},
|
35 |
+
{
|
36 |
+
"EmailAddress": "subs+6g76t7t1004@example.com",
|
37 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
38 |
+
},
|
39 |
+
{
|
40 |
+
"EmailAddress": "subs+6g76t7t1005@example.com",
|
41 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
42 |
+
},
|
43 |
+
{
|
44 |
+
"EmailAddress": "subs+6g76t7t1006@example.com",
|
45 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
46 |
+
},
|
47 |
+
{
|
48 |
+
"EmailAddress": "subs+6g76t7t1007@example.com",
|
49 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
50 |
+
},
|
51 |
+
{
|
52 |
+
"EmailAddress": "subs+6g76t7t1008@example.com",
|
53 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
54 |
+
},
|
55 |
+
{
|
56 |
+
"EmailAddress": "subs+6g76t7t1009@example.com",
|
57 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
58 |
+
},
|
59 |
+
{
|
60 |
+
"EmailAddress": "subs+6g76t7t101@example.com",
|
61 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
62 |
+
},
|
63 |
+
{
|
64 |
+
"EmailAddress": "subs+6g76t7t1010@example.com",
|
65 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
66 |
+
},
|
67 |
+
{
|
68 |
+
"EmailAddress": "subs+6g76t7t1011@example.com",
|
69 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
70 |
+
},
|
71 |
+
{
|
72 |
+
"EmailAddress": "subs+6g76t7t1012@example.com",
|
73 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
74 |
+
},
|
75 |
+
{
|
76 |
+
"EmailAddress": "subs+6g76t7t1013@example.com",
|
77 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
78 |
+
},
|
79 |
+
{
|
80 |
+
"EmailAddress": "subs+6g76t7t1014@example.com",
|
81 |
+
"ListID": "a994a3caf1328a16af9a69a730eaa706"
|
82 |
+
}
|
83 |
+
],
|
84 |
+
"ResultsOrderedBy": "email",
|
85 |
+
"OrderDirection": "asc",
|
86 |
+
"PageNumber": 1,
|
87 |
+
"PageSize": 20,
|
88 |
+
"RecordsOnThisPage": 20,
|
89 |
+
"TotalNumberOfRecords": 2200,
|
90 |
+
"NumberOfPages": 110
|
91 |
+
}
|
lib/createsend/tests/responses/campaign_spam.json
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subs+6576576576@example.com",
|
5 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
6 |
+
"Date": "2010-10-11 08:29:00"
|
7 |
+
}
|
8 |
+
],
|
9 |
+
"ResultsOrderedBy": "date",
|
10 |
+
"OrderDirection": "asc",
|
11 |
+
"PageNumber": 1,
|
12 |
+
"PageSize": 1000,
|
13 |
+
"RecordsOnThisPage": 1,
|
14 |
+
"TotalNumberOfRecords": 1,
|
15 |
+
"NumberOfPages": 1
|
16 |
+
}
|
lib/createsend/tests/responses/campaign_summary.json
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Recipients": 5,
|
3 |
+
"TotalOpened": 10,
|
4 |
+
"Clicks": 0,
|
5 |
+
"Unsubscribed": 0,
|
6 |
+
"Bounced": 0,
|
7 |
+
"UniqueOpened": 5,
|
8 |
+
"WebVersionURL": "http://clientone.createsend.com/t/ViewEmail/r/3A433FC72FFE3B8B/C67FD2F38AC4859C/",
|
9 |
+
"WebVersionTextURL": "http://createsend.com/t/r-3A433FC72FFE3B8B/t",
|
10 |
+
"WorldviewURL": "http://clientone.createsend.com/reports/wv/r/3A433FC72FFE3B8B",
|
11 |
+
"ForwardToAFriends": 18,
|
12 |
+
"FacebookLikes": 25,
|
13 |
+
"TwitterTweets": 11,
|
14 |
+
"SpamComplaints": 23
|
15 |
+
}
|
lib/createsend/tests/responses/campaign_unsubscribes.json
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subs+6576576576@example.com",
|
5 |
+
"ListID": "512a3bc577a58fdf689c654329b50fa0",
|
6 |
+
"Date": "2010-10-11 08:29:00",
|
7 |
+
"IPAddress": "192.168.126.87"
|
8 |
+
}
|
9 |
+
],
|
10 |
+
"ResultsOrderedBy": "date",
|
11 |
+
"OrderDirection": "asc",
|
12 |
+
"PageNumber": 1,
|
13 |
+
"PageSize": 1000,
|
14 |
+
"RecordsOnThisPage": 1,
|
15 |
+
"TotalNumberOfRecords": 1,
|
16 |
+
"NumberOfPages": 1
|
17 |
+
}
|
lib/createsend/tests/responses/campaigns.json
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"WebVersionURL": "http://hello.createsend.com/t/ViewEmail/r/765E86829575EE2C/C67FD2F38AC4859C/",
|
4 |
+
"WebVersionTextURL": "http://createsend.com/t/r-765E86829575EE2C/t",
|
5 |
+
"CampaignID": "fc0ce7105baeaf97f47c99be31d02a91",
|
6 |
+
"Subject": "Campaign One",
|
7 |
+
"Name": "Campaign One",
|
8 |
+
"FromName": "My Name",
|
9 |
+
"FromEmail": "myemail@example.com",
|
10 |
+
"ReplyTo": "myemail@example.com",
|
11 |
+
"SentDate": "2010-10-12 12:58:00",
|
12 |
+
"TotalRecipients": 2245
|
13 |
+
},
|
14 |
+
{
|
15 |
+
"WebVersionURL": "http://hello.createsend.com/t/ViewEmail/r/DD543566A87C9B8B/C67FD2F38AC4859C/",
|
16 |
+
"WebVersionTextURL": "http://createsend.com/t/r-DD543566A87C9B8B/t",
|
17 |
+
"CampaignID": "072472b88c853ae5dedaeaf549a8d607",
|
18 |
+
"Subject": "Campaign Two",
|
19 |
+
"Name": "Campaign Two",
|
20 |
+
"FromName": "My Name",
|
21 |
+
"FromEmail": "myemail@example.com",
|
22 |
+
"ReplyTo": "myemail@example.com",
|
23 |
+
"SentDate": "2010-10-06 16:20:00",
|
24 |
+
"TotalRecipients": 11222
|
25 |
+
}
|
26 |
+
]
|
lib/createsend/tests/responses/client_details.json
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ApiKey": "7c86c29e930f4a1c3836eb57e9e3f4b283b06857489a750e",
|
3 |
+
"BasicDetails": {
|
4 |
+
"ClientID": "4a397ccaaa55eb4e6aa1221e1e2d7122",
|
5 |
+
"CompanyName": "Client One",
|
6 |
+
"Country": "Australia",
|
7 |
+
"TimeZone": "(GMT+10:00) Canberra, Melbourne, Sydney"
|
8 |
+
},
|
9 |
+
"BillingDetails": {
|
10 |
+
"CanPurchaseCredits": true,
|
11 |
+
"MarkupOnDesignSpamTest": 0.0,
|
12 |
+
"ClientPays": true,
|
13 |
+
"BaseRatePerRecipient": 1.0,
|
14 |
+
"MarkupPerRecipient": 0.0,
|
15 |
+
"MarkupOnDelivery": 0.0,
|
16 |
+
"BaseDeliveryRate": 5.0,
|
17 |
+
"Currency": "USD",
|
18 |
+
"BaseDesignSpamTestRate": 5.0
|
19 |
+
}
|
20 |
+
}
|
lib/createsend/tests/responses/clients.json
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"ClientID": "4a397ccaaa55eb4e6aa1221e1e2d7122",
|
4 |
+
"Name": "Client One"
|
5 |
+
},
|
6 |
+
{
|
7 |
+
"ClientID": "a206def0582eec7dae47d937a4109cb2",
|
8 |
+
"Name": "Client Two"
|
9 |
+
}
|
10 |
+
]
|
lib/createsend/tests/responses/countries.json
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
"Afghanistan",
|
3 |
+
"Albania",
|
4 |
+
"Algeria",
|
5 |
+
"American Samoa",
|
6 |
+
"Andorra",
|
7 |
+
"Angola",
|
8 |
+
"Anguilla",
|
9 |
+
"Antigua & Barbuda",
|
10 |
+
"Argentina"
|
11 |
+
]
|
lib/createsend/tests/responses/create_campaign.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"787y87y87y87y87y87y87"
|
lib/createsend/tests/responses/create_client.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"32a381c49a2df99f1d0c6f3c112352b9"
|
lib/createsend/tests/responses/create_custom_field.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"[newdatefield]"
|
lib/createsend/tests/responses/create_list.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"e3c5f034d68744f7881fdccf13c2daee"
|
lib/createsend/tests/responses/create_list_webhook.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"6a783d359bd44ef62c6ca0d3eda4412a"
|
lib/createsend/tests/responses/create_segment.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"0246c2aea610a3545d9780bf6ab89006"
|
lib/createsend/tests/responses/create_template.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
"98y2e98y289dh89h938389"
|
lib/createsend/tests/responses/custom_api_error.json
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Code": 98798,
|
3 |
+
"Message": "A crazy API error"
|
4 |
+
}
|
lib/createsend/tests/responses/custom_fields.json
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"FieldName": "website",
|
4 |
+
"Key": "[website]",
|
5 |
+
"DataType": "Text",
|
6 |
+
"FieldOptions": [],
|
7 |
+
"VisibleInPreferenceCenter": true
|
8 |
+
},
|
9 |
+
{
|
10 |
+
"FieldName": "age",
|
11 |
+
"Key": "[age]",
|
12 |
+
"DataType": "Number",
|
13 |
+
"FieldOptions": [],
|
14 |
+
"VisibleInPreferenceCenter": true
|
15 |
+
},
|
16 |
+
{
|
17 |
+
"FieldName": "subscription date",
|
18 |
+
"Key": "[subscriptiondate]",
|
19 |
+
"DataType": "Date",
|
20 |
+
"FieldOptions": [],
|
21 |
+
"VisibleInPreferenceCenter": false
|
22 |
+
}
|
23 |
+
]
|
lib/createsend/tests/responses/deleted_subscribers.json
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subs+7t8787Y@example.com",
|
5 |
+
"Name": "Person One",
|
6 |
+
"Date": "2010-10-25 10:28:00",
|
7 |
+
"State": "Deleted",
|
8 |
+
"CustomFields": [
|
9 |
+
{
|
10 |
+
"Key": "website",
|
11 |
+
"Value": "http://example.com"
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"Key": "age",
|
15 |
+
"Value": "24"
|
16 |
+
},
|
17 |
+
{
|
18 |
+
"Key": "subscription date",
|
19 |
+
"Value": "2010-03-09"
|
20 |
+
}
|
21 |
+
],
|
22 |
+
"ReadsEmailWith": "Gmail"
|
23 |
+
},
|
24 |
+
{
|
25 |
+
"EmailAddress": "subs+7878787y8ggg@example.com",
|
26 |
+
"Name": "Person Two",
|
27 |
+
"Date": "2010-10-25 12:17:00",
|
28 |
+
"State": "Deleted",
|
29 |
+
"CustomFields": [
|
30 |
+
{
|
31 |
+
"Key": "website",
|
32 |
+
"Value": "http://subdomain.example.com"
|
33 |
+
}
|
34 |
+
],
|
35 |
+
"ReadsEmailWith": "Gmail"
|
36 |
+
},
|
37 |
+
{
|
38 |
+
"EmailAddress": "subs+7890909i0ggg@example.com",
|
39 |
+
"Name": "Person Three",
|
40 |
+
"Date": "2010-10-25 12:52:00",
|
41 |
+
"State": "Deleted",
|
42 |
+
"CustomFields": [
|
43 |
+
{
|
44 |
+
"Key": "website",
|
45 |
+
"Value": "http://subdomain.example.com"
|
46 |
+
}
|
47 |
+
],
|
48 |
+
"ReadsEmailWith": ""
|
49 |
+
},
|
50 |
+
{
|
51 |
+
"EmailAddress": "subs@example.com",
|
52 |
+
"Name": "Person Four",
|
53 |
+
"Date": "2010-10-27 13:13:00",
|
54 |
+
"State": "Deleted",
|
55 |
+
"CustomFields": [],
|
56 |
+
"ReadsEmailWith": ""
|
57 |
+
},
|
58 |
+
{
|
59 |
+
"EmailAddress": "joey@example.com",
|
60 |
+
"Name": "Person Five",
|
61 |
+
"Date": "2010-10-27 13:13:00",
|
62 |
+
"State": "Deleted",
|
63 |
+
"CustomFields": [],
|
64 |
+
"ReadsEmailWith": "Gmail"
|
65 |
+
}
|
66 |
+
],
|
67 |
+
"ResultsOrderedBy": "email",
|
68 |
+
"OrderDirection": "asc",
|
69 |
+
"PageNumber": 1,
|
70 |
+
"PageSize": 1000,
|
71 |
+
"RecordsOnThisPage": 5,
|
72 |
+
"TotalNumberOfRecords": 5,
|
73 |
+
"NumberOfPages": 1
|
74 |
+
}
|
lib/createsend/tests/responses/drafts.json
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"CampaignID": "7c7424792065d92627139208c8c01db1",
|
4 |
+
"Name": "Draft One",
|
5 |
+
"Subject": "Draft One",
|
6 |
+
"FromName": "My Name",
|
7 |
+
"FromEmail": "myemail@example.com",
|
8 |
+
"ReplyTo": "myemail@example.com",
|
9 |
+
"DateCreated": "2010-08-19 16:08:00",
|
10 |
+
"PreviewURL": "http://hello.createsend.com/t/ViewEmail/r/E97A7BB2E6983DA1/C67FD2F38AC4859C/",
|
11 |
+
"PreviewTextURL": "http://createsend.com/t/r-E97A7BB2E6983DA1/t"
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"CampaignID": "2e928e982065d92627139208c8c01db1",
|
15 |
+
"Name": "Draft Two",
|
16 |
+
"Subject": "Draft Two",
|
17 |
+
"FromName": "My Name",
|
18 |
+
"FromEmail": "myemail@example.com",
|
19 |
+
"ReplyTo": "myemail@example.com",
|
20 |
+
"DateCreated": "2010-08-19 16:08:00",
|
21 |
+
"PreviewURL": "http://hello.createsend.com/t/ViewEmail/r/E97A7BB2E6983DA1/C67FD2F38AC4859C/",
|
22 |
+
"PreviewTextURL": "http://createsend.com/t/r-E97A7BB2E6983DA1/t"
|
23 |
+
}
|
24 |
+
]
|
lib/createsend/tests/responses/import_subscribers.json
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"FailureDetails": [],
|
3 |
+
"TotalUniqueEmailsSubmitted": 3,
|
4 |
+
"TotalExistingSubscribers": 0,
|
5 |
+
"TotalNewSubscribers": 3,
|
6 |
+
"DuplicateEmailsInSubmission": []
|
7 |
+
}
|
lib/createsend/tests/responses/import_subscribers_partial_success.json
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ResultData": {
|
3 |
+
"TotalUniqueEmailsSubmitted": 3,
|
4 |
+
"TotalExistingSubscribers": 2,
|
5 |
+
"TotalNewSubscribers": 0,
|
6 |
+
"DuplicateEmailsInSubmission": [],
|
7 |
+
"FailureDetails": [
|
8 |
+
{
|
9 |
+
"EmailAddress": "example+1@example",
|
10 |
+
"Code": 1,
|
11 |
+
"Message": "Invalid Email Address"
|
12 |
+
}
|
13 |
+
]
|
14 |
+
},
|
15 |
+
"Code": 210,
|
16 |
+
"Message": "Subscriber Import had some failures"
|
17 |
+
}
|
lib/createsend/tests/responses/list_details.json
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ConfirmedOptIn": false,
|
3 |
+
"Title": "a non-basic list :)",
|
4 |
+
"UnsubscribePage": "",
|
5 |
+
"ListID": "2fe4c8f0373ce320e2200596d7ef168f",
|
6 |
+
"ConfirmationSuccessPage": "",
|
7 |
+
"UnsubscribeSetting": "AllClientLists"
|
8 |
+
}
|
lib/createsend/tests/responses/list_stats.json
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"TotalActiveSubscribers": 6,
|
3 |
+
"NewActiveSubscribersToday": 0,
|
4 |
+
"NewActiveSubscribersYesterday": 8,
|
5 |
+
"NewActiveSubscribersThisWeek": 8,
|
6 |
+
"NewActiveSubscribersThisMonth": 8,
|
7 |
+
"NewActiveSubscribersThisYear": 8,
|
8 |
+
"TotalUnsubscribes": 2,
|
9 |
+
"UnsubscribesToday": 0,
|
10 |
+
"UnsubscribesYesterday": 2,
|
11 |
+
"UnsubscribesThisWeek": 2,
|
12 |
+
"UnsubscribesThisMonth": 2,
|
13 |
+
"UnsubscribesThisYear": 2,
|
14 |
+
"TotalDeleted": 0,
|
15 |
+
"DeletedToday": 0,
|
16 |
+
"DeletedYesterday": 0,
|
17 |
+
"DeletedThisWeek": 0,
|
18 |
+
"DeletedThisMonth": 0,
|
19 |
+
"DeletedThisYear": 0,
|
20 |
+
"TotalBounces": 0,
|
21 |
+
"BouncesToday": 0,
|
22 |
+
"BouncesYesterday": 0,
|
23 |
+
"BouncesThisWeek": 0,
|
24 |
+
"BouncesThisMonth": 0,
|
25 |
+
"BouncesThisYear": 0
|
26 |
+
}
|
lib/createsend/tests/responses/list_webhooks.json
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"WebhookID": "943678317049bc13",
|
4 |
+
"Events": [
|
5 |
+
"Bounce",
|
6 |
+
"Spam"
|
7 |
+
],
|
8 |
+
"Url": "http://www.postbin.org/d9w8ud9wud9w",
|
9 |
+
"Status": "Active",
|
10 |
+
"PayloadFormat": "Json"
|
11 |
+
},
|
12 |
+
{
|
13 |
+
"WebhookID": "ee1b3864e5ca6161",
|
14 |
+
"Events": [
|
15 |
+
"Subscribe"
|
16 |
+
],
|
17 |
+
"Url": "http://www.postbin.org/hiuhiu2h2u",
|
18 |
+
"Status": "Active",
|
19 |
+
"PayloadFormat": "Xml"
|
20 |
+
}
|
21 |
+
]
|
lib/createsend/tests/responses/lists.json
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"ListID": "a58ee1d3039b8bec838e6d1482a8a965",
|
4 |
+
"Name": "List One"
|
5 |
+
},
|
6 |
+
{
|
7 |
+
"ListID": "99bc35084a5739127a8ab81eae5bd305",
|
8 |
+
"Name": "List Two"
|
9 |
+
}
|
10 |
+
]
|
lib/createsend/tests/responses/listsforemail.json
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"ListID": "ab4a2b57c7c8f1ba62f898a1af1a575b",
|
4 |
+
"ListName": "List Number One",
|
5 |
+
"SubscriberState": "Active",
|
6 |
+
"DateSubscriberAdded": "2012-08-20 22:32:00"
|
7 |
+
},
|
8 |
+
{
|
9 |
+
"ListID": "d8e59b07138cf1316a6587007c443e21",
|
10 |
+
"ListName": "List Number Two",
|
11 |
+
"SubscriberState": "Unsubscribed",
|
12 |
+
"DateSubscriberAdded": "2012-08-21 01:35:00"
|
13 |
+
}
|
14 |
+
]
|
lib/createsend/tests/responses/scheduled.json
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"DateScheduled": "2011-05-25 10:40:00",
|
4 |
+
"ScheduledTimeZone": "(GMT+10:00) Canberra, Melbourne, Sydney",
|
5 |
+
"CampaignID": "827dbbd2161ea9989fa11ad562c66937",
|
6 |
+
"Name": "Magic Issue One",
|
7 |
+
"Subject": "Magic Issue One",
|
8 |
+
"FromName": "My Name",
|
9 |
+
"FromEmail": "myemail@example.com",
|
10 |
+
"ReplyTo": "myemail@example.com",
|
11 |
+
"DateCreated": "2011-05-24 10:37:00",
|
12 |
+
"PreviewURL": "http://createsend.com/t/r-DD543521A87C9B8B",
|
13 |
+
"PreviewTextURL": "http://createsend.com/t/r-DD543521A87C9B8B/t"
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"DateScheduled": "2011-05-29 11:20:00",
|
17 |
+
"ScheduledTimeZone": "(GMT+10:00) Canberra, Melbourne, Sydney",
|
18 |
+
"CampaignID": "4f54bbd2161e65789fa11ad562c66937",
|
19 |
+
"Name": "Magic Issue Two",
|
20 |
+
"Subject": "Magic Issue Two",
|
21 |
+
"FromName": "My Name",
|
22 |
+
"FromEmail": "myemail@example.com",
|
23 |
+
"ReplyTo": "myemail@example.com",
|
24 |
+
"DateCreated": "2011-05-24 10:39:00",
|
25 |
+
"PreviewURL": "http://createsend.com/t/r-DD913521A87C9B8B",
|
26 |
+
"PreviewTextURL": "http://createsend.com/t/r-DD913521A87C9B8B/t"
|
27 |
+
}
|
28 |
+
]
|
lib/createsend/tests/responses/segment_details.json
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"ActiveSubscribers": 0,
|
3 |
+
"Rules": [
|
4 |
+
{
|
5 |
+
"Subject": "EmailAddress",
|
6 |
+
"Clauses": [
|
7 |
+
"CONTAINS @hello.com"
|
8 |
+
]
|
9 |
+
},
|
10 |
+
{
|
11 |
+
"Subject": "Name",
|
12 |
+
"Clauses": [
|
13 |
+
"PROVIDED"
|
14 |
+
]
|
15 |
+
}
|
16 |
+
],
|
17 |
+
"ListID": "2bea949d0bf96148c3e6a209d2e82060",
|
18 |
+
"SegmentID": "dba84a225d5ce3d19105d7257baac46f",
|
19 |
+
"Title": "My Segment"
|
20 |
+
}
|
lib/createsend/tests/responses/segment_subscribers.json
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "personone@example.com",
|
5 |
+
"Name": "Person One",
|
6 |
+
"Date": "2010-10-27 13:13:00",
|
7 |
+
"State": "Active",
|
8 |
+
"CustomFields": []
|
9 |
+
},
|
10 |
+
{
|
11 |
+
"EmailAddress": "persontwo@example.com",
|
12 |
+
"Name": "Person Two",
|
13 |
+
"Date": "2010-10-27 13:13:00",
|
14 |
+
"State": "Active",
|
15 |
+
"CustomFields": []
|
16 |
+
}
|
17 |
+
],
|
18 |
+
"ResultsOrderedBy": "email",
|
19 |
+
"OrderDirection": "asc",
|
20 |
+
"PageNumber": 1,
|
21 |
+
"PageSize": 1000,
|
22 |
+
"RecordsOnThisPage": 2,
|
23 |
+
"TotalNumberOfRecords": 2,
|
24 |
+
"NumberOfPages": 1
|
25 |
+
}
|
lib/createsend/tests/responses/segments.json
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"ListID": "a58ee1d3039b8bec838e6d1482a8a965",
|
4 |
+
"SegmentID": "46aa5e01fd43381863d4e42cf277d3a9",
|
5 |
+
"Title": "Segment One"
|
6 |
+
},
|
7 |
+
{
|
8 |
+
"ListID": "8dffb94c60c5faa3d40f496f2aa58a8a",
|
9 |
+
"SegmentID": "dhw9q8jd9q8wd09quw0d909wid9i09iq",
|
10 |
+
"Title": "Segment Two"
|
11 |
+
}
|
12 |
+
]
|
lib/createsend/tests/responses/subscriber_details.json
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"EmailAddress": "subscriber@example.com",
|
3 |
+
"Name": "Subscriber One",
|
4 |
+
"Date": "2010-10-25 10:28:00",
|
5 |
+
"State": "Active",
|
6 |
+
"CustomFields": [
|
7 |
+
{
|
8 |
+
"Key": "website",
|
9 |
+
"Value": "http://example.com"
|
10 |
+
},
|
11 |
+
{
|
12 |
+
"Key": "age",
|
13 |
+
"Value": "24"
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"Key": "subscription date",
|
17 |
+
"Value": "2010-03-09"
|
18 |
+
}
|
19 |
+
],
|
20 |
+
"ReadsEmailWith": "Gmail"
|
21 |
+
}
|
lib/createsend/tests/responses/subscriber_history.json
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"ID": "fc0ce7105baeaf97f47c99be31d02a91",
|
4 |
+
"Type": "Campaign",
|
5 |
+
"Name": "Campaign One",
|
6 |
+
"Actions": [
|
7 |
+
{
|
8 |
+
"Event": "Open",
|
9 |
+
"Date": "2010-10-12 13:18:00",
|
10 |
+
"IPAddress": "192.168.126.87",
|
11 |
+
"Detail": ""
|
12 |
+
},
|
13 |
+
{
|
14 |
+
"Event": "Click",
|
15 |
+
"Date": "2010-10-12 13:16:00",
|
16 |
+
"IPAddress": "192.168.126.87",
|
17 |
+
"Detail": "http://example.com/post/12323/"
|
18 |
+
},
|
19 |
+
{
|
20 |
+
"Event": "Click",
|
21 |
+
"Date": "2010-10-12 13:15:00",
|
22 |
+
"IPAddress": "192.168.126.87",
|
23 |
+
"Detail": "http://example.com/post/29889/"
|
24 |
+
},
|
25 |
+
{
|
26 |
+
"Event": "Open",
|
27 |
+
"Date": "2010-10-12 13:15:00",
|
28 |
+
"IPAddress": "192.168.126.87",
|
29 |
+
"Detail": ""
|
30 |
+
},
|
31 |
+
{
|
32 |
+
"Event": "Click",
|
33 |
+
"Date": "2010-10-12 13:01:00",
|
34 |
+
"IPAddress": "192.168.126.87",
|
35 |
+
"Detail": "http://example.com/post/82211/"
|
36 |
+
},
|
37 |
+
{
|
38 |
+
"Event": "Open",
|
39 |
+
"Date": "2010-10-12 13:01:00",
|
40 |
+
"IPAddress": "192.168.126.87",
|
41 |
+
"Detail": ""
|
42 |
+
}
|
43 |
+
]
|
44 |
+
}
|
45 |
+
]
|
lib/createsend/tests/responses/suppressionlist.json
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"SuppressionReason": "Unsubscribed",
|
5 |
+
"EmailAddress": "example+1@example.com",
|
6 |
+
"Date": "2010-10-26 10:55:31",
|
7 |
+
"State": "Suppressed"
|
8 |
+
},
|
9 |
+
{
|
10 |
+
"SuppressionReason": "Unsubscribed",
|
11 |
+
"EmailAddress": "example+2@example.com",
|
12 |
+
"Date": "2010-10-26 10:55:31",
|
13 |
+
"State": "Suppressed"
|
14 |
+
},
|
15 |
+
{
|
16 |
+
"SuppressionReason": "Unsubscribed",
|
17 |
+
"EmailAddress": "example+3@example.com",
|
18 |
+
"Date": "2010-10-26 10:55:31",
|
19 |
+
"State": "Suppressed"
|
20 |
+
},
|
21 |
+
{
|
22 |
+
"SuppressionReason": "Unsubscribed",
|
23 |
+
"EmailAddress": "subscriber@example.com",
|
24 |
+
"Date": "2010-10-25 13:11:04",
|
25 |
+
"State": "Suppressed"
|
26 |
+
},
|
27 |
+
{
|
28 |
+
"SuppressionReason": "Unsubscribed",
|
29 |
+
"EmailAddress": "subscriberone@example.com",
|
30 |
+
"Date": "2010-10-25 13:04:15",
|
31 |
+
"State": "Suppressed"
|
32 |
+
}
|
33 |
+
],
|
34 |
+
"ResultsOrderedBy": "email",
|
35 |
+
"OrderDirection": "asc",
|
36 |
+
"PageNumber": 1,
|
37 |
+
"PageSize": 1000,
|
38 |
+
"RecordsOnThisPage": 5,
|
39 |
+
"TotalNumberOfRecords": 5,
|
40 |
+
"NumberOfPages": 1
|
41 |
+
}
|
lib/createsend/tests/responses/systemdate.json
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"SystemDate": "2010-10-15 09:27:00"
|
3 |
+
}
|
lib/createsend/tests/responses/template_details.json
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"TemplateID": "98y2e98y289dh89h938389",
|
3 |
+
"Name": "Template One",
|
4 |
+
"PreviewURL": "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=01AF532CD8889B33&d=r&c=E816F55BFAD1A753",
|
5 |
+
"ScreenshotURL": "http://preview.createsend.com/ts/r/14/833/263/14833263.jpg?0318092600"
|
6 |
+
}
|
lib/createsend/tests/responses/templates.json
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"TemplateID": "5cac213cf061dd4e008de5a82b7a3621",
|
4 |
+
"Name": "Template One",
|
5 |
+
"PreviewURL": "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=01AF532CD8889B33&d=r&c=E816F55BFAD1A753",
|
6 |
+
"ScreenshotURL": "http://preview.createsend.com/ts/r/14/833/263/14833263.jpg?0318092541"
|
7 |
+
},
|
8 |
+
{
|
9 |
+
"TemplateID": "da645c271bc85fb6550acff937c2ab2e",
|
10 |
+
"Name": "Template Two",
|
11 |
+
"PreviewURL": "http://preview.createsend.com/createsend/templates/previewTemplate.aspx?ID=C8A180629495E798&d=r&c=E816F55BFAD1A753",
|
12 |
+
"ScreenshotURL": "http://preview.createsend.com/ts/r/18/7B3/552/187B3552.jpg?0705043527"
|
13 |
+
}
|
14 |
+
]
|
lib/createsend/tests/responses/timezones.json
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
"(GMT) Casablanca",
|
3 |
+
"(GMT) Coordinated Universal Time",
|
4 |
+
"(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London",
|
5 |
+
"(GMT) Monrovia, Reykjavik",
|
6 |
+
"(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",
|
7 |
+
"(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",
|
8 |
+
"(GMT+01:00) Brussels, Copenhagen, Madrid, Paris"
|
9 |
+
]
|
lib/createsend/tests/responses/unsubscribed_subscribers.json
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"Results": [
|
3 |
+
{
|
4 |
+
"EmailAddress": "subscriber@example.com",
|
5 |
+
"Name": "Unsub One",
|
6 |
+
"Date": "2010-10-25 13:11:00",
|
7 |
+
"State": "Unsubscribed",
|
8 |
+
"CustomFields": []
|
9 |
+
},
|
10 |
+
{
|
11 |
+
"EmailAddress": "subscriberone@example.com",
|
12 |
+
"Name": "Subscriber",
|
13 |
+
"Date": "2010-10-25 13:04:00",
|
14 |
+
"State": "Unsubscribed",
|
15 |
+
"CustomFields": [
|
16 |
+
{
|
17 |
+
"Key": "website",
|
18 |
+
"Value": "http://google.com"
|
19 |
+
}
|
20 |
+
]
|
21 |
+
},
|
22 |
+
{
|
23 |
+
"EmailAddress": "example+1@example.com",
|
24 |
+
"Name": "Example One",
|
25 |
+
"Date": "2010-10-26 10:56:00",
|
26 |
+
"State": "Unsubscribed",
|
27 |
+
"CustomFields": []
|
28 |
+
},
|
29 |
+
{
|
30 |
+
"EmailAddress": "example+2@example.com",
|
31 |
+
"Name": "Example Two",
|
32 |
+
"Date": "2010-10-26 10:56:00",
|
33 |
+
"State": "Unsubscribed",
|
34 |
+
"CustomFields": []
|
35 |
+
},
|
36 |
+
{
|
37 |
+
"EmailAddress": "example+3@example.com",
|
38 |
+
"Name": "Example Three",
|
39 |
+
"Date": "2010-10-26 10:56:00",
|
40 |
+
"State": "Unsubscribed",
|
41 |
+
"CustomFields": []
|
42 |
+
}
|
43 |
+
],
|
44 |
+
"ResultsOrderedBy": "email",
|
45 |
+
"OrderDirection": "asc",
|
46 |
+
"PageNumber": 1,
|
47 |
+
"PageSize": 1000,
|
48 |
+
"RecordsOnThisPage": 5,
|
49 |
+
"TotalNumberOfRecords": 5,
|
50 |
+
"NumberOfPages": 1
|
51 |
+
}
|
package.xml
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>DigitalPianism_CampaignMonitor</name>
|
4 |
+
<version>0.7.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Integrates Magento with the Campaign Monitor mailing list manager using API V3. </summary>
|
10 |
+
<description><p>This extension is entirely based on the <a href="http://www.magentocommerce.com/magento-connect/fontis-campaign-monitor.html">Fontis Campaign Monitor</a> extension, except it uses the Campaign Monitor API V3 instead of V2.</p>
|
11 |
+

|
12 |
+
<p>Campaign Monitor is built for designers who can create great looking emails for themselves and their clients, but need software to send each campaign, track the results and manage their subscribers." www.campaignmonitor.com</p>
|
13 |
+

|
14 |
+
<p>This extension integrates Magento with the Campaign Monitor mailing list manager. Users are added to a specified Campaign Monitor email list when they subscribe to the newsletter in Magento, and removed when they unsubscribe. Users are also marked as unsubscribed in Magento when they click an unsubscribe link in a Campaign Monitor email.</p></description>
|
15 |
+
<notes>Stable version.</notes>
|
16 |
+
<authors><author><name>Digital Pianism</name><user>digitalpianism</user><email>contact@digital-pianism.com</email></author></authors>
|
17 |
+
<date>2014-05-04</date>
|
18 |
+
<time>16:35:05</time>
|
19 |
+
<contents><target name="magecommunity"><dir name="DigitalPianism"><dir name="CampaignMonitor"><dir name="Block"><file name="Linkedattributes.php" hash="3c5d00f9352fa53fbd36243c0d87db6e"/></dir><dir name="Helper"><file name="Data.php" hash="064e59d8ce4d2077e0289a8a38e54ab2"/></dir><dir name="Model"><dir name="Customer"><file name="Observer.php" hash="ea4398b92ea511796dad1f9680c8d942"/></dir></dir><dir name="controllers"><file name="AdminhookController.php" hash="1fe56150d1fc30a61505a511ac009a30"/><file name="HookController.php" hash="b2ed9bc478929c2497a8ba16682b31fa"/><file name="UnsubscribeController.php" hash="3653ee5c2bf509f83bb284d3af243fd3"/></dir><dir name="etc"><file name="config.xml" hash="5256e5abdaae0d513834b2258cceaadd"/><file name="system.xml" hash="da9449ef7c9561cd57dfd4059a75513e"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="DigitalPianism_CampaignMonitor.xml" hash="6044d29d2b2e7d0689315376e3c27acd"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="digitalpianism"><dir name="campaignmonitor"><dir name="system"><dir name="config"><dir name="form"><dir name="field"><file name="array_dropdown.phtml" hash="ac84db9b1e8b342337a478ecba62e0b1"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir name="lib"><dir name="createsend"><file name="HISTORY.md" hash="ab283bd0126e8c10edf6da099c80a661"/><file name="LICENSE" hash="e4306d4b6c77f2db816ec4aed73a13c7"/><file name="README.md" hash="90a7855700d85e14211baf5399810a3d"/><file name="RELEASE.md" hash="5efce8234607beab27bf466b23fc4535"/><dir name="class"><file name="base_classes.php" hash="8a3f82c1204d7de080d2f3d15cb70ea9"/><file name="cacert.pem" hash="c29d362201b1bd232898d2b658811db2"/><file name="log.php" hash="11ff6a9006a6386c1cd8880cd3c0f41b"/><file name="serialisation.php" hash="3eb39437970e8787f0ef9ac292b688e6"/><file name="services_json.php" hash="c9e9ef0d35d7d34f9d216344da27915d"/><file name="transport.php" hash="da2967846daf164a70e649c9f2ee0094"/></dir><file name="composer.json" hash="eccad7521596b5fe0d81af51ab2f16a1"/><file name="composer.lock" hash="e64bca0a5accd8086e4e49bf41aa8629"/><file name="csrest_administrators.php" hash="72480342a46e8d82fd44096b4818f090"/><file name="csrest_campaigns.php" hash="38e2c429abaaa4609d30f28622e5fc3f"/><file name="csrest_clients.php" hash="df11ce1c1fd5fd43980db42cb83a6fa3"/><file name="csrest_general.php" hash="b8d1de7d1e435231955cdf8bc0311632"/><file name="csrest_lists.php" hash="42904680a424977d7c6f3211cf0d7a9c"/><file name="csrest_people.php" hash="ff2a14af7e171a11d73bef3d4995f512"/><file name="csrest_segments.php" hash="bac0e031058e7e08ae97906738cc65fc"/><file name="csrest_subscribers.php" hash="b5ad794e2cc2f65a278a8aa9de4af7d7"/><file name="csrest_templates.php" hash="4c94511a505a868eef2f8109ca3c35d6"/><dir name="samples"><dir name="campaign"><file name="create.php" hash="af4016e1b3539b3710d4b8e05bc7001b"/><file name="create_from_template.php" hash="4868b7f363abebc3d9fe9f561e59a743"/><file name="delete.php" hash="b96c2421084e77c241ea270894719aff"/><file name="get_bounces.php" hash="3bd2b2faa8d4b99bf7b9d682ce7402d3"/><file name="get_clicks.php" hash="92209680bdd73ecf3f94ecd1c33374ce"/><file name="get_email_client_usage.php" hash="fcf3a316f03460f26b6f12bcb20c17b0"/><file name="get_lists_and_segments.php" hash="e7d07e56924abfbd2d390b468d2df14b"/><file name="get_opens.php" hash="e155bf6a72a26fd34997d9024bd9911c"/><file name="get_recipients.php" hash="488f76fba7f7e2dc0680abefe5fe1fb5"/><file name="get_spam.php" hash="35c0beea84a51e3e447546f6b11ba754"/><file name="get_summary.php" hash="85ee04ac9adc616aa41d5a02824e6f7c"/><file name="get_unsubscribes.php" hash="af39956e9f46d9ecd1e78fff830f87b0"/><file name="send.php" hash="9e33ed7bd15e246929f52847f93827ce"/><file name="send_preview.php" hash="4eb7bff25251b00915791b96b20ee2ab"/><file name="unschedule.php" hash="83f0374d69eee6ae284c7fe27fdb65d7"/></dir><dir name="client"><file name="create.php" hash="8fbadcd57df2246a8447d3a3b9843d64"/><file name="delete.php" hash="a7a9945427a64737981c4a3a5c047d97"/><file name="get.php" hash="0b53f225d317d3d97bb0f3bafe83cf53"/><file name="get_campaigns.php" hash="242ed8ed7338a502751ead210283cb04"/><file name="get_drafts.php" hash="2efeea55251ec1e7e7c7767820dd28f1"/><file name="get_lists.php" hash="97ffa5cd9ccc765ae79baff0f50ece64"/><file name="get_lists_for_email.php" hash="a402b11a7b93dc6992dc69998a0ebf80"/><file name="get_scheduled.php" hash="163d89985d5fdc29d9f3a5d50787fd81"/><file name="get_segments.php" hash="9acd7c148db84fd03d825a6eaebd0b88"/><file name="get_suppressionlist.php" hash="2ae6c31510338b307f93d49369c964d1"/><file name="get_templates.php" hash="756789c223be6664b3517b79063f5143"/><file name="set_basics.php" hash="839bc9f656d26caf7335b2a4f4336ae8"/><file name="set_monthly_billing.php" hash="7f4ff840e6fe78932f9bc72e68c282da"/><file name="set_payg_billing.php" hash="2f67604445e8807a70a9e28759f3bb55"/><file name="suppress.php" hash="f78f0ddb442c9dfc53865c00ee57d266"/><file name="transfer_credits.php" hash="3fe8a12cef59a2d126d8ed7437563ec8"/><file name="unsuppress.php" hash="3442665090da89c2f5d91f6b69c18ade"/></dir><file name="get_apikey.php" hash="36f399338a612b2771ed3c53058d1d6f"/><file name="get_billing_details.php" hash="bfe297ec441b25eaa6155e283b4c0bf7"/><file name="get_clients.php" hash="521e3174750e8c41236c1c4fae5ae8f4"/><file name="get_countries.php" hash="6a71a585ef76eedec4589ecc303415f5"/><file name="get_systemdate.php" hash="7b5eeae853d164667140fb3c99a5b8ff"/><file name="get_timezones.php" hash="f756ab9b392af894320defe0f7f7296d"/><dir name="list"><file name="activate_webhook.php" hash="ca496e62c78429fa745f624738b80ce7"/><file name="create.php" hash="16a635a4de9ec820b08a7f30319534bd"/><file name="create_custom_field.php" hash="59ad0fe4d6b2038ceeda7681e4515dd0"/><file name="create_webhook.php" hash="d968c28b19521f6d3c5e6852c5c13806"/><file name="deactivate_webhook.php" hash="68478920fca13c0c1f98a450be8cb3c2"/><file name="delete.php" hash="12f035403835a63c7a0c1ba4704b3e46"/><file name="delete_custom_field.php" hash="f5031a6eac6ba776b54ac22a79c023b5"/><file name="delete_webhook.php" hash="080320b7e078ce0e33586e4c6a944172"/><file name="get.php" hash="25dcb3de68cd41792ec88d7d937217e8"/><file name="get_active_subscribers.php" hash="afcee93bc1b922a99c9e19f48894417b"/><file name="get_bounced_subscribers.php" hash="2fa45e557cca0d93924a6415fbc302d5"/><file name="get_custom_fields.php" hash="ddcaf8ee644474bb77d597894f8e501e"/><file name="get_deleted_subscribers.php" hash="400adee5529e1e0f16ff7b64b09e8bca"/><file name="get_segments.php" hash="1ddba11f0968d2d7e7109e14140e7663"/><file name="get_stats.php" hash="74ab2cf477a5049505f1959c3e9e272c"/><file name="get_unconfirmed_subscribers.php" hash="e6062d83308ccc7648d8c17200d5f277"/><file name="get_unsubscribed_subscribers.php" hash="366d5bbd88a4028b664be59420a1a0aa"/><file name="get_webhooks.php" hash="bbcb6401f2a1d3268f25405b3cbe4598"/><file name="list_webhook_receiver.php" hash="12ca45146c050f341423f80acbe688aa"/><file name="test_webhook.php" hash="22bf2bdf4c277bc86300d43018e4926e"/><file name="update.php" hash="acb1f015b02b9d66da6d286843def237"/><file name="update_custom_field.php" hash="8b5f33bc803fa29fb0a44847a0d399ec"/><file name="update_field_options.php" hash="809ed63991f1e799ee2c2b70f3c692f4"/></dir><dir name="segment"><file name="add_rule.php" hash="3ed9335f70c354cf068a176eb6dd8f6f"/><file name="clear_rules.php" hash="da68802f93c3c25a60fcf1a2b7603273"/><file name="create.php" hash="4f12c0099e9edc42ab55acfd80239ecd"/><file name="delete.php" hash="9079d2812da34ce862f9543513eb7efc"/><file name="get.php" hash="f4e65cd88d02dc5fa0c2d9d7d1a444e6"/><file name="get_subscribers.php" hash="a580a7c33025bd516cae2e8b87cc10dd"/><file name="update.php" hash="cb37cd60257eb361f80f69dfa830ab94"/></dir><dir name="subscriber"><file name="add.php" hash="f266ce4459f71665e29d25bb5181ba76"/><file name="delete.php" hash="08325db91e593b855749bc5d9381f5e3"/><file name="get.php" hash="e4d4cda7ed515df7ab7e81c72906601d"/><file name="get_history.php" hash="445b5dfc75fec5433986655437f5f608"/><file name="import.php" hash="119de43ee1e4b31ce2b710ad4507a25f"/><file name="unsubscribe.php" hash="7896a14a7bbb69a8b4d1db9ead52053f"/><file name="update.php" hash="4a62f2b72d31cb168258738483366707"/></dir><dir name="template"><file name="create.php" hash="0ed844ae8d5fc1025902a7fcfb8a949b"/><file name="delete.php" hash="ddd8cbab53644e863d5f0d4807e03719"/><file name="get.php" hash="3d5147086b92c85e7b0289ba065f9434"/><file name="update.php" hash="0854c3686f1339434cb6fb12897f801f"/></dir></dir><dir name="tests"><file name="all_tests.php" hash="3fafbd947aa885d9056ed62e832ca61b"/><dir name="class_tests"><file name="response_tests.php" hash="ae5b4f541ac5bcba7a9417544d2156a9"/><file name="transport_test.php" hash="3033343417f283136c43d0bab77ac355"/></dir><file name="csrest_administrators_test.php" hash="77830067da14a226bfdc86b445f68f30"/><file name="csrest_campaigns_test.php" hash="ce68576c81c314dbdeba2b229903d865"/><file name="csrest_clients_test.php" hash="d3023b37bc3ebf222171606a100532d5"/><file name="csrest_lists_test.php" hash="533753c96477cad7598382c94e9a8937"/><file name="csrest_people_test.php" hash="72269f3d21caaf5648684da44b0ad319"/><file name="csrest_segments_test.php" hash="33f275bcab02eacb32299d6fc63e1b7c"/><file name="csrest_subscribers_test.php" hash="8b6ec2dade2d5b59d8f27f7e32df049f"/><file name="csrest_template_test.php" hash="3645fc50d5e43da11fa1a2b496b692c4"/><file name="csrest_test.php" hash="de298e06f8b584018f8e6b1d14000f32"/><dir name="responses"><file name="active_subscribers.json" hash="414033ce6952d88c0edd3c7b04d4f14e"/><file name="add_subscriber.json" hash="236507977b97832343c87955243068ad"/><file name="apikey.json" hash="4ca4132cc99f80bfc3d4a029a77a7a6e"/><file name="bounced_subscribers.json" hash="78c52687485c30c0fb031eb82e472fb3"/><file name="campaign_bounces.json" hash="55471525555dacee6ca1eb9ed5826cea"/><file name="campaign_clicks.json" hash="57d3357f4a0d8b55042a80e6d984e1ea"/><file name="campaign_listsandsegments.json" hash="a0d21dda2042a25b1266036b5d945f0c"/><file name="campaign_opens.json" hash="50c3052eebc922dfd0293498b5374ef0"/><file name="campaign_recipients.json" hash="be59c57f1f497669260f5124c13d109e"/><file name="campaign_spam.json" hash="48fa85397d6d8da1a685a94c404d14a9"/><file name="campaign_summary.json" hash="248d074230990e424dedb26afac895eb"/><file name="campaign_unsubscribes.json" hash="87d6b967ec28f8b3cd7845acc3ba0a16"/><file name="campaigns.json" hash="3b160d6e1a5de3e6163f2fffa502e4cb"/><file name="client_details.json" hash="964787a45923035cdd7330d4af13dfd9"/><file name="clients.json" hash="b243ae5d2f1b0686a6f45bbc262b1ad5"/><file name="countries.json" hash="7baa975380541216a7829128d4d7fb5b"/><file name="create_campaign.json" hash="61079127bd26d95434347f30803a85b2"/><file name="create_client.json" hash="0b5ea68aeecf1f61c8a00fb5d2b89104"/><file name="create_custom_field.json" hash="49b9878fd944fa8ea2f283a3d0b6576b"/><file name="create_list.json" hash="33b7d284c287fa44edb649234bc2ac6b"/><file name="create_list_webhook.json" hash="8a1c9ea0268a3a58d8f8fdaa4f159519"/><file name="create_segment.json" hash="6183146c3898ae281ea640e40fb5b3b0"/><file name="create_template.json" hash="9b1fcc1ae0925bd552cb23e364d48cca"/><file name="custom_api_error.json" hash="6be6c0df48a411fc54a5abf1d8502690"/><file name="custom_fields.json" hash="fe40aa43df15068516cdc6b7d9e2148c"/><file name="deleted_subscribers.json" hash="176235e9b24405ed329cc40a9ac5d1cd"/><file name="drafts.json" hash="8b36d3bf66ebb683b6926fcef95ae106"/><file name="import_subscribers.json" hash="3c7c7d85d510224197dc597d3a6cf585"/><file name="import_subscribers_partial_success.json" hash="4e1ff5c7b33a77d709530a31f544a22d"/><file name="list_details.json" hash="09d06afb7cd013e74fe615ddfd5a6799"/><file name="list_stats.json" hash="b8cd04e30e5e30862f005208997655de"/><file name="list_webhooks.json" hash="93194d66734e07372cac1b5c9c04f2b5"/><file name="lists.json" hash="0b7f8013e3e93a105a7a7d8c156daf4d"/><file name="listsforemail.json" hash="c7eb2e23b02883e0a0f9a9b2ca9bc94a"/><file name="scheduled.json" hash="d7c9df96fbfa5bafb1e1cfc0643123b7"/><file name="segment_details.json" hash="9ec00f104a565fc723270e3ceb91d509"/><file name="segment_subscribers.json" hash="cf5cec4bc4e7970315ea929a0bd29ecd"/><file name="segments.json" hash="d2d9265fd87ed661cd65c9c96b31a2f0"/><file name="subscriber_details.json" hash="1c5733a762560ed1dc27449edea3c27f"/><file name="subscriber_history.json" hash="93d3efaa0f0373156146e9f3060ca855"/><file name="suppressionlist.json" hash="13fff3aeddf64804cf8d9232b79ab45b"/><file name="systemdate.json" hash="5f2f368919effd4c7d36bc11d42d8198"/><file name="template_details.json" hash="81fa02e23c0a9c00c55730956a2868b0"/><file name="templates.json" hash="64aca93871da82620071a26c818da4ce"/><file name="timezones.json" hash="ff9bbd7171fe05f5bace2fc8087953d0"/><file name="unsubscribed_subscribers.json" hash="0f7cec268e4241426a5c7dcc33ba99eb"/></dir></dir><file name=".gitignore" hash="1416491a3a84679680a343e7adf1f20d"/><file name=".travis.yml" hash="3f3c6ec40583a10d8ec8dfa89a2010e8"/></dir></dir></target></contents>
|
20 |
+
<compatible/>
|
21 |
+
<dependencies><required><php><min>4.1.0</min><max>6.0.0</max></php></required></dependencies>
|
22 |
+
</package>
|