/*
Plugin Name: CDN Integration
Description: Run your entire site through a CDN.
Author: kingkool68
Version: 0.1.4
Author URI: http://www.russellheimlich.com/
*/
include 'class-separate-admin-url.php';
if (is_admin()) {
    include 'class-cdn-integration.php';
    include 'cdn-flush-dashboard-widget.php';
} else {
    include 'class-buffering.php';
}
$options = get_cdn_integration_options();
$cdn_integration_plugin_dir_path = plugin_dir_path(__FILE__);
$cdn_provider = $options['cdn-provider'];
$cdn_provider_include_file = $cdn_integration_plugin_dir_path . 'class-' . $cdn_provider . '.php';
if ($cdn_provider && file_exists($cdn_provider_include_file)) {
    include $cdn_provider_include_file;
}
/**
 * Adds a Last-Modified header to the request based on the post modified timestamp
 */
function cdn_integration_add_last_modified_header()
{
    $post = get_post();
    if (isset($post) && is_singular()) {
        $timestamp = $post->post_date_gmt;
        if (isset($post->post_modified)) {
/**
 * Flushes a list of URLs from the KeyCDN cache
 * @param  array  $urls List of URLs to be flushed
 */
function keycdn_flush_urls($urls = array())
{
    if (!$urls) {
        return;
    }
    $options = get_cdn_integration_options();
    $api_secret = $options['keycdn-api-secret'];
    $zone_id = $options['keycdn-zone-id'];
    $zone_url = $options['keycdn-zone-url'];
    $public_protocol = $options['public-protocol'];
    $public_domain = $options['public-domain'];
    if (!$api_secret || !$zone_id || !$zone_url) {
        throw new Exception('Invalid KeyCDN settings!');
        return;
    }
    $public_url = $public_protocol . '://' . $public_domain;
    if (!$public_domain) {
        $public_url = get_site_url();
    }
    foreach ($urls as $i => $url) {
        $urls[$i] = str_replace($public_url, $zone_url, $url);
    }
    $payload = json_encode(array('urls' => $urls));
    $request_url = 'https://api.keycdn.com/zones/purgeurl/' . $zone_id . '.json';
    $args = array('method' => 'DELETE', 'headers' => array('Authorization' => 'Basic ' . base64_encode($api_secret . ':'), 'Accept' => 'application/json', 'Content-Type' => 'application/json'), 'body' => $payload);
    $response = wp_remote_post($request_url, $args);
    if (is_wp_error($response)) {
        error_log('KeyCDN URL Flush Error: ' . $response->get_error_message());
    }
    $output = array('url' => $request_url, 'args' => $args, 'response' => $response);
    return $output;
}