File: /www/wwwroot/www.scdc-marine.com/wp-content/plugins/Static-Html-Output/plugin/deployers/Netlify.php
<?php
class WP2Static_Netlify extends WP2Static_SitePublisher {
public function __construct() {
$this->loadSettings( 'netlify' );
$this->settings[ 'netlifySiteID' ];
$this->settings[ 'netlifyPersonalAccessToken' ];
$this->base_url = 'https://api.netlify.com';
$this->detectSiteID();
if ( defined( 'WP_CLI' ) ) {
return;
}
switch ( $_POST[ 'ajax_action' ] ) {
case 'test_netlify': $this->loadArchive();
$this->test_netlify();
break;
case 'netlify_do_export': $this->bootstrap();
$this->loadArchive();
$this->deploy();
break;
}
}
public function detectSiteID() {
$this->site_id = $this->settings[ 'netlifySiteID' ];
if ( strpos( $this->site_id, 'netlify.com' ) !== false ) {
return;
} elseif ( strpos( $this->site_id, '.' ) !== false ) {
return;
} elseif ( strlen( $this->site_id ) === 37 ) {
return;
} else {
$this->site_id .= '.netlify.com';
}
}
public function deploy() {
$this->zip_archive_path = $this->settings[ 'wp_uploads_path' ] . '/' . $this->archive->name . '.zip';
$zip_deploy_endpoint = $this->base_url . '/api/v1/sites/' . $this->site_id . '/deploys';
try {
$headers = array( 'Authorization: Bearer ' . $this->settings[ 'netlifyPersonalAccessToken' ], 'Content-Type: application/zip', );
require_once dirname( __FILE__ ) . '/../WP2Static/Request.php';
$this->client = new WP2Static_Request();
$this->client->postWithFileStreamAndHeaders( $zip_deploy_endpoint, $this->zip_archive_path, $headers );
$this->checkForValidResponses( $this->client->status_code, array( '200', '201', '301', '302', '304' ) );
$this->finalizeDeployment();
} catch ( Exception $e ) {
$this->handleException( $e );
}
}
public function test_netlify() {
$this->zip_archive_path = $this->settings[ 'wp_uploads_path' ] . '/' . $this->archive->name . '.zip';
$site_info_endpoint = $this->base_url . '/api/v1/sites/' . $this->site_id;
try {
$headers = array( 'Authorization: Bearer ' . $this->settings[ 'netlifyPersonalAccessToken' ], );
require_once dirname( __FILE__ ) . '/../WP2Static/Request.php';
$this->client = new WP2Static_Request();
$this->client->getWithCustomHeaders( $site_info_endpoint, $headers );
if ( isset( $this->client->headers[ 'x-ratelimit-limit' ] ) ) {
if ( ! defined( 'WP_CLI' ) ) {
echo 'SUCCESS';
}
} else {
$code = 404;
require_once dirname( __FILE__ ) . '/../WP2Static/WsLog.php';
WsLog::l( 'BAD RESPONSE STATUS FROM API (' . $code . ')' );
http_response_code( $code );
echo 'Netlify test error';
}
} catch ( Exception $e ) {
$this->handleException( $e );
}
}
}
$netlify = new WP2Static_Netlify();