Skip to content

Commit

Permalink
Merge pull request #7 from cloudflare/COM-40
Browse files Browse the repository at this point in the history
COM-40 :: Added Page Rules endpoint.
  • Loading branch information
IcyApril committed Sep 20, 2017
2 parents 1658f4a + 3166645 commit a4ddb61
Show file tree
Hide file tree
Showing 7 changed files with 833 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Each API call is provided via a similarly named function within various classes
- [x] Zones
- [x] User Administration (partial)
- [x] [Cloudflare IPs](https://www.cloudflare.com/ips/)
- [ ] [Page Rules](https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-)
- [x] [Page Rules](https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-)
- [ ] [Web Application Firewall (WAF)](https://www.cloudflare.com/waf/)
- [ ] Virtual DNS Management
- [ ] Custom hostnames
Expand Down
15 changes: 15 additions & 0 deletions src/Configurations/ConfigurationsException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 19/09/2017
* Time: 16:57
*/

namespace Cloudflare\API\Configurations;


class ConfigurationsException extends \Exception
{

}
369 changes: 369 additions & 0 deletions src/Configurations/PageRulesActions.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,369 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 19/09/2017
* Time: 16:50
*/

namespace Cloudflare\API\Configurations;

class PageRulesActions implements Configurations
{
private $configs = array();

public function setAlwaysOnline(bool $active)
{
$object = new \stdClass();
$object->id = "always_online";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setAlwaysUseHTTPS(bool $active)
{
$object = new \stdClass();
$object->id = "always_use_https";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setBrowserCacheTTL(int $ttl)
{
$object = new \stdClass();
$object->id = "browser_cache_ttl";
$object->value = $ttl;

array_push($this->configs, $object);
}

public function setBrowserIntegrityCheck(bool $active)
{
$object = new \stdClass();
$object->id = "browser_check";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setBypassCacheOnCookie(bool $value)
{
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
throw new ConfigurationsException("Invalid cookie string.");
}

$object = new \stdClass();
$object->id = "bypass_cache_on_cookie";
$object->value = $value;

array_push($this->configs, $object);
}

public function setCacheByDeviceType(bool $active)
{
$object = new \stdClass();
$object->id = "cache_by_device_type";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setCacheKey(string $value)
{
$object = new \stdClass();
$object->id = "cache_key";
$object->value = $value;

array_push($this->configs, $object);
}

public function setCacheLevel(string $value)
{
if (!in_array($value, ["bypass", "basic", "simplified", "aggressive", "cache_everything"])) {
throw new ConfigurationsException("Invalid cache level");
}

$object = new \stdClass();
$object->id = "cache_level";
$object->value = $value;

array_push($this->configs, $object);
}

public function setCacheOnCookie(bool $value)
{
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
throw new ConfigurationsException("Invalid cookie string.");
}

$object = new \stdClass();
$object->id = "cache_on_cookie";
$object->value = $value;

array_push($this->configs, $object);
}

public function setDisableApps(bool $active)
{
$object = new \stdClass();
$object->id = "disable_apps";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setDisablePerformance(bool $active)
{
$object = new \stdClass();
$object->id = "disable_performance";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setDisableSecurity(bool $active)
{
$object = new \stdClass();
$object->id = "disable_security";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setEdgeCacheTTL(int $value)
{
if ($value > 2419200) {
throw new ConfigurationsException("Edge Cache TTL too high.");
}

$object = new \stdClass();
$object->id = "edge_cache_ttl";
$object->value = $value;

array_push($this->configs, $object);
}

public function setEmailObfuscation(bool $active)
{
$object = new \stdClass();
$object->id = "disable_security";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setForwardingURL(int $statusCode, string $forwardingUrl)
{
if (in_array($statusCode, ['301', '302'])) {
throw new ConfigurationsException('Status Codes can only be 301 or 302.');
}

$object = new \stdClass();
$object->id = "forwarding_url";
$object->status_code = $statusCode;
$object->url = $forwardingUrl;

array_push($this->configs, $object);
}

public function setHostHeaderOverride(bool $active)
{
$object = new \stdClass();
$object->id = "host_header_override";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setHotlinkProtection(bool $active)
{
$object = new \stdClass();
$object->id = "hotlink_protection";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setIPGeoLocationHeader(bool $active)
{
$object = new \stdClass();
$object->id = "ip_geolocation";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setMinification(bool $html, bool $css, bool $js)
{
$object = new \stdClass();
$object->id = "minification";
$object->html = $html === true ? "on" : "off";
$object->css = $css === true ? "on" : "off";
$object->js = $js === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setMirage(bool $active)
{
$object = new \stdClass();
$object->id = "mirage";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setOriginErrorPagePassthru(bool $active)
{
$object = new \stdClass();
$object->id = "origin_error_page_pass_thru";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setQueryStringSort(bool $active)
{
$object = new \stdClass();
$object->id = "sort_query_string_for_cache";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setDisableRailgun(bool $active)
{
$object = new \stdClass();
$object->id = "disable_railgun";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setResolveOverride(bool $value)
{
$object = new \stdClass();
$object->id = "resolve_override";
$object->value = $value;

array_push($this->configs, $object);
}

public function setRespectStrongEtag(bool $active)
{
$object = new \stdClass();
$object->id = "respect_strong_etag";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setResponseBuffering(bool $active)
{
$object = new \stdClass();
$object->id = "response_buffering";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setRocketLoader(string $value)
{
if (!in_array($value, ["off", "manual", "automatic"])) {
throw new ConfigurationsException('Rocket Loader can only be off, automatic, or manual.');
}

$object = new \stdClass();
$object->id = "rocket_loader";
$object->value = $value;

array_push($this->configs, $object);
}

public function setSecurityLevel(string $value)
{
if (!in_array($value, ["off", "essentially_off", "low", "medium", "high", "under_attack"])) {
throw new ConfigurationsException('Can only be set to off, essentially_off, low, medium, high or under_attack.');
}

$object = new \stdClass();
$object->id = "security_level";
$object->value = $value;

array_push($this->configs, $object);
}

public function setServerSideExcludes(bool $active)
{
$object = new \stdClass();
$object->id = "server_side_exclude";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setSmartErrors(bool $active)
{
$object = new \stdClass();
$object->id = "smart_errors";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setSSL(string $value)
{
if (!in_array($value, ["off", "flexible", "full", "strict", "origin_pull"])) {
throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.');
}

$object = new \stdClass();
$object->id = "smart_errors";
$object->value = $value;

array_push($this->configs, $object);
}

public function setTrueClientIpHeader(bool $active)
{
$object = new \stdClass();
$object->id = "true_client_ip_header";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setWAF(bool $active)
{
$object = new \stdClass();
$object->id = "waf";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setAutomatedHTTPSRewrites(bool $active)
{
$object = new \stdClass();
$object->id = "automatic_https_rewrites";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function setOpportunisticEncryption(bool $active)
{
$object = new \stdClass();
$object->id = "opportunistic_encryption";
$object->value = $active === true ? "on" : "off";

array_push($this->configs, $object);
}

public function getArray(): array
{
return $this->configs;
}
}

0 comments on commit a4ddb61

Please sign in to comment.