-
Notifications
You must be signed in to change notification settings - Fork 86
/
CdnEngine_Mirror_StackPath2.php
109 lines (90 loc) · 2.65 KB
/
CdnEngine_Mirror_StackPath2.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
namespace W3TC;
class CdnEngine_Mirror_StackPath2 extends CdnEngine_Mirror {
/**
* PHP5 Constructor
*
* @param array $config
*/
function __construct( $config = array() ) {
$config = array_merge( array(
'client_id' => '',
'client_secret' => '',
'stack_id' => '',
'site_root_domain' => '',
'access_token' => '',
'on_new_access_token' => null
), $config );
parent::__construct( $config );
}
/**
* Purges remote files
*
* @param array $files
* @param array $results
* @return boolean
*/
function purge( $files, &$results ) {
if ( empty( $this->_config['client_id'] ) ) {
$results = $this->_get_results( $files, W3TC_CDN_RESULT_HALT, __( 'Empty Authorization Key.', 'w3-total-cache' ) );
return false;
}
$url_prefixes = $this->url_prefixes();
$api = new Cdn_StackPath2_Api( $this->_config );
$results = array();
try {
$items = array();
foreach ( $files as $file ) {
foreach ( $url_prefixes as $prefix ) {
$items[] = array( 'url' => $prefix . '/' . $file['remote_path'],
'recursive' => true,
);
}
}
$api->purge( array( 'items' => $items ) );
$results[] = $this->_get_result( '', '', W3TC_CDN_RESULT_OK, 'OK' );
} catch ( \Exception $e ) {
$results[] = $this->_get_result( '', '', W3TC_CDN_RESULT_HALT, __( 'Failure to pull zone: ', 'w3-total-cache' ) . $e->getMessage() );
}
return !$this->_is_error( $results );
}
/**
* Purge CDN completely
*
* @param unknown $results
* @return bool
*/
function purge_all( &$results ) {
if ( empty( $this->_config['client_id'] ) ) {
$results = $this->_get_results( $files, W3TC_CDN_RESULT_HALT, __( 'Empty Authorization Key.', 'w3-total-cache' ) );
return false;
}
$url_prefixes = $this->url_prefixes();
$api = new Cdn_StackPath2_Api( $this->_config );
$results = array();
try {
$items = array();
foreach ( $url_prefixes as $prefix ) {
$items[] = array( 'url' => $prefix . '/',
'recursive' => true,
);
}
$r = $api->purge( array( 'items' => $items ) );
} catch ( \Exception $e ) {
$results[] = $this->_get_result( '', '', W3TC_CDN_RESULT_HALT, __( 'Failure to pull zone: ', 'w3-total-cache' ) . $e->getMessage() );
}
return !$this->_is_error( $results );
}
private function url_prefixes() {
$url_prefixes = array();
if ( $this->_config['ssl'] == 'auto' ||
$this->_config['ssl'] == 'enabled' ) {
$url_prefixes[] = 'https://' . $this->_config['site_root_domain'];
}
if ( $this->_config['ssl'] == 'auto' ||
$this->_config['ssl'] != 'enabled' ) {
$url_prefixes[] = 'http://' . $this->_config['site_root_domain'];
}
return $url_prefixes;
}
}