cloudflair 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/cloudflair/api/zone/available_plan.rb +16 -0
- data/lib/cloudflair/api/zone/available_rate_plan.rb +15 -0
- data/lib/cloudflair/api/zone/settings/advanced_ddos.rb +15 -0
- data/lib/cloudflair/api/zone/settings/always_online.rb +16 -0
- data/lib/cloudflair/api/zone/settings/browser_cache_ttl.rb +16 -0
- data/lib/cloudflair/api/zone/settings/browser_check.rb +16 -0
- data/lib/cloudflair/api/zone/settings/cache_level.rb +16 -0
- data/lib/cloudflair/api/zone/settings/challenge_ttl.rb +16 -0
- data/lib/cloudflair/api/zone/settings/development_mode.rb +5 -1
- data/lib/cloudflair/api/zone/settings/email_obfuscation.rb +16 -0
- data/lib/cloudflair/api/zone/settings/hotlink_protection.rb +16 -0
- data/lib/cloudflair/api/zone/settings/ip_geolocation.rb +16 -0
- data/lib/cloudflair/api/zone/settings/ipv6.rb +16 -0
- data/lib/cloudflair/api/zone/settings/minify.rb +16 -0
- data/lib/cloudflair/api/zone/settings/mirage.rb +16 -0
- data/lib/cloudflair/api/zone/settings/mobile_redirect.rb +16 -0
- data/lib/cloudflair/api/zone/settings/origin_error_page_pass_thru.rb +19 -0
- data/lib/cloudflair/api/zone/settings/polish.rb +16 -0
- data/lib/cloudflair/api/zone/settings/prefetch_preload.rb +20 -0
- data/lib/cloudflair/api/zone/settings/response_buffering.rb +20 -0
- data/lib/cloudflair/api/zone/settings/rocket_loader.rb +16 -0
- data/lib/cloudflair/api/zone/settings/security_header.rb +16 -0
- data/lib/cloudflair/api/zone/settings/security_level.rb +16 -0
- data/lib/cloudflair/api/zone/settings/server_side_exclude.rb +16 -0
- data/lib/cloudflair/api/zone/settings/sort_query_string_for_cache.rb +19 -0
- data/lib/cloudflair/api/zone/settings/ssl.rb +16 -0
- data/lib/cloudflair/api/zone/settings/tls_1_2_only.rb +20 -0
- data/lib/cloudflair/api/zone/settings/tls_1_3.rb +20 -0
- data/lib/cloudflair/api/zone/settings/tls_client_auth.rb +16 -0
- data/lib/cloudflair/api/zone/settings/true_client_ip_header.rb +19 -0
- data/lib/cloudflair/api/zone/settings/waf.rb +16 -0
- data/lib/cloudflair/api/zone/settings/websockets.rb +16 -0
- data/lib/cloudflair/api/zone/settings.rb +63 -2
- data/lib/cloudflair/api/zone.rb +20 -3
- data/lib/cloudflair/api.rb +4 -4
- data/lib/cloudflair/entity.rb +99 -12
- data/lib/cloudflair/version.rb +1 -1
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56fd1197bf91ccbbbc25632cc55246356689b74f
|
4
|
+
data.tar.gz: 77fc8bb524ef60c7a64e089799a3b32ed17b49b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdf21b581458669d7c5a41df55ca8e9cd4f6547564e691af98afec05f86b45f9b77eff79b1fd5995679eba1946022a9ebba31a66a509dc52b3f6a0f4e28e94c3
|
7
|
+
data.tar.gz: e55e62b873549576a13b085afd5fbd0bb3fbf53f6e12091d009929d47e03bb00f16958a8ab72db69073cef116839956830b4c1a6de5ed9f8f91e960112fa8b03
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class AvailablePlan
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id, :plan_id
|
8
|
+
|
9
|
+
path 'zones/:zone_id/available_plans/:plan_id'
|
10
|
+
|
11
|
+
def initialize(zone_id, plan_id)
|
12
|
+
@zone_id = zone_id
|
13
|
+
@plan_id = plan_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class AvailableRatePlan
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
array_object_fields :components
|
9
|
+
path 'zones/:zone_id/available_rate_plans'
|
10
|
+
|
11
|
+
def initialize(zone_id)
|
12
|
+
@zone_id = zone_id
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class AlwaysOnline
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/always_online'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class BrowserCacheTtl
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/browser_cache_ttl'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class BrowserCheck
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/browser_check'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class CacheLevel
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/cache_level'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class ChallengeTtl
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/challenge_ttl'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -4,7 +4,7 @@ module Cloudflair
|
|
4
4
|
class DevelopmentMode
|
5
5
|
include Cloudflair::Entity
|
6
6
|
|
7
|
-
|
7
|
+
attr_reader :zone_id
|
8
8
|
|
9
9
|
patchable_fields :value
|
10
10
|
path 'zones/:zone_id/settings/development_mode'
|
@@ -12,5 +12,9 @@ module Cloudflair
|
|
12
12
|
def initialize(zone_id)
|
13
13
|
@zone_id = zone_id
|
14
14
|
end
|
15
|
+
|
16
|
+
def time_remaining
|
17
|
+
data.fetch('time_remaining', 0)
|
18
|
+
end
|
15
19
|
end
|
16
20
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class EmailObfuscation
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/email_obfuscation'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class HotlinkProtection
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/hotlink_protection'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class IpGeolocation
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/ip_geolocation'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Ipv6
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/ipv6'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Minify
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/minify'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Mirage
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/mirage'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class MobileRedirect
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/mobile_redirect'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class OriginErrorPagePassThru
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
path 'zones/:zone_id/settings/origin_error_page_pass_thru'
|
10
|
+
|
11
|
+
def initialize(zone_id)
|
12
|
+
@zone_id = zone_id
|
13
|
+
end
|
14
|
+
|
15
|
+
def value
|
16
|
+
_raw_data!
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Polish
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/polish'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class PrefetchPreload
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/prefetch_preload'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
|
16
|
+
def value
|
17
|
+
_raw_data!
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class ResponseBuffering
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/response_buffering'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
|
16
|
+
def value
|
17
|
+
_raw_data!
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class RocketLoader
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/rocket_loader'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class SecurityHeader
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/security_header'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class SecurityLevel
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/security_level'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class ServerSideExclude
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/server_side_exclude'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class SortQueryStringForCache
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
path 'zones/:zone_id/settings/sort_query_string_for_cache'
|
10
|
+
|
11
|
+
def initialize(zone_id)
|
12
|
+
@zone_id = zone_id
|
13
|
+
end
|
14
|
+
|
15
|
+
def value
|
16
|
+
_raw_data!
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Ssl
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/ssl'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Tls12Only
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/tls_1_2_only'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
|
16
|
+
def value
|
17
|
+
_raw_data!
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Tls13
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/tls_1_3'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
|
16
|
+
def value
|
17
|
+
_raw_data!
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class TlsClientAuth
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/tls_client_auth'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class TrueClientIpHeader
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
patchable_fields :value
|
9
|
+
path 'zones/:zone_id/settings/true_client_ip_header'
|
10
|
+
|
11
|
+
def initialize(zone_id)
|
12
|
+
@zone_id = zone_id
|
13
|
+
end
|
14
|
+
|
15
|
+
def value
|
16
|
+
_raw_data!
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Waf
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/waf'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'cloudflair/entity'
|
2
|
+
|
3
|
+
module Cloudflair
|
4
|
+
class Websockets
|
5
|
+
include Cloudflair::Entity
|
6
|
+
|
7
|
+
attr_reader :zone_id
|
8
|
+
|
9
|
+
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/websockets'
|
11
|
+
|
12
|
+
def initialize(zone_id)
|
13
|
+
@zone_id = zone_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,4 +1,33 @@
|
|
1
|
+
require 'cloudflair/api/zone/settings/advanced_ddos'
|
2
|
+
require 'cloudflair/api/zone/settings/always_online'
|
3
|
+
require 'cloudflair/api/zone/settings/browser_cache_ttl'
|
4
|
+
require 'cloudflair/api/zone/settings/browser_check'
|
5
|
+
require 'cloudflair/api/zone/settings/cache_level'
|
6
|
+
require 'cloudflair/api/zone/settings/challenge_ttl'
|
1
7
|
require 'cloudflair/api/zone/settings/development_mode'
|
8
|
+
require 'cloudflair/api/zone/settings/email_obfuscation'
|
9
|
+
require 'cloudflair/api/zone/settings/hotlink_protection'
|
10
|
+
require 'cloudflair/api/zone/settings/ip_geolocation'
|
11
|
+
require 'cloudflair/api/zone/settings/ipv6'
|
12
|
+
require 'cloudflair/api/zone/settings/minify'
|
13
|
+
require 'cloudflair/api/zone/settings/mirage'
|
14
|
+
require 'cloudflair/api/zone/settings/mobile_redirect'
|
15
|
+
require 'cloudflair/api/zone/settings/origin_error_page_pass_thru'
|
16
|
+
require 'cloudflair/api/zone/settings/polish'
|
17
|
+
require 'cloudflair/api/zone/settings/prefetch_preload'
|
18
|
+
require 'cloudflair/api/zone/settings/response_buffering'
|
19
|
+
require 'cloudflair/api/zone/settings/rocket_loader'
|
20
|
+
require 'cloudflair/api/zone/settings/security_header'
|
21
|
+
require 'cloudflair/api/zone/settings/security_level'
|
22
|
+
require 'cloudflair/api/zone/settings/server_side_exclude'
|
23
|
+
require 'cloudflair/api/zone/settings/sort_query_string_for_cache'
|
24
|
+
require 'cloudflair/api/zone/settings/ssl'
|
25
|
+
require 'cloudflair/api/zone/settings/tls_client_auth'
|
26
|
+
require 'cloudflair/api/zone/settings/tls_1_2_only'
|
27
|
+
require 'cloudflair/api/zone/settings/tls_1_3'
|
28
|
+
require 'cloudflair/api/zone/settings/true_client_ip_header'
|
29
|
+
require 'cloudflair/api/zone/settings/waf'
|
30
|
+
require 'cloudflair/api/zone/settings/websockets'
|
2
31
|
|
3
32
|
module Cloudflair
|
4
33
|
class Settings
|
@@ -8,8 +37,40 @@ module Cloudflair
|
|
8
37
|
@zone_id = zone_id
|
9
38
|
end
|
10
39
|
|
11
|
-
|
12
|
-
Cloudflair::
|
40
|
+
{ advanced_ddos: Cloudflair::AdvancedDdos,
|
41
|
+
always_online: Cloudflair::AlwaysOnline,
|
42
|
+
browser_cache_ttl: Cloudflair::BrowserCacheTtl,
|
43
|
+
browser_check: Cloudflair::BrowserCheck,
|
44
|
+
cache_level: Cloudflair::CacheLevel,
|
45
|
+
challenge_ttl: Cloudflair::ChallengeTtl,
|
46
|
+
development_mode: Cloudflair::DevelopmentMode,
|
47
|
+
email_obfuscation: Cloudflair::EmailObfuscation,
|
48
|
+
hotlink_protection: Cloudflair::HotlinkProtection,
|
49
|
+
ip_geolocation: Cloudflair::IpGeolocation,
|
50
|
+
ipv6: Cloudflair::Ipv6,
|
51
|
+
minify: Cloudflair::Minify,
|
52
|
+
mirage: Cloudflair::Mirage,
|
53
|
+
mobile_redirect: Cloudflair::MobileRedirect,
|
54
|
+
origin_error_page_pass_thru: Cloudflair::OriginErrorPagePassThru,
|
55
|
+
polish: Cloudflair::Polish,
|
56
|
+
prefetch_preload: Cloudflair::PrefetchPreload,
|
57
|
+
response_buffering: Cloudflair::ResponseBuffering,
|
58
|
+
rocket_loader: Cloudflair::RocketLoader,
|
59
|
+
security_header: Cloudflair::SecurityHeader,
|
60
|
+
security_level: Cloudflair::SecurityLevel,
|
61
|
+
server_side_exclude: Cloudflair::ServerSideExclude,
|
62
|
+
sort_query_string_for_cache: Cloudflair::SortQueryStringForCache,
|
63
|
+
ssl: Cloudflair::Ssl,
|
64
|
+
tls_client_auth: Cloudflair::TlsClientAuth,
|
65
|
+
tls_1_2_only: Cloudflair::Tls12Only,
|
66
|
+
tls_1_3: Cloudflair::Tls13,
|
67
|
+
true_client_ip_header: Cloudflair::TrueClientIpHeader,
|
68
|
+
waf: Cloudflair::Waf,
|
69
|
+
websockets: Cloudflair::Websockets,
|
70
|
+
}.each do |method, klass|
|
71
|
+
define_method method do
|
72
|
+
klass.new @zone_id
|
73
|
+
end
|
13
74
|
end
|
14
75
|
end
|
15
76
|
end
|
data/lib/cloudflair/api/zone.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
require 'cloudflair/api/zone/
|
1
|
+
require 'cloudflair/api/zone/available_plan'
|
2
|
+
require 'cloudflair/api/zone/available_rate_plan'
|
2
3
|
require 'cloudflair/api/zone/purge_cache'
|
4
|
+
require 'cloudflair/api/zone/settings'
|
3
5
|
require 'cloudflair/entity'
|
4
6
|
|
5
7
|
module Cloudflair
|
@@ -9,6 +11,7 @@ module Cloudflair
|
|
9
11
|
attr_reader :zone_id
|
10
12
|
|
11
13
|
patchable_fields :paused, :vanity_name_servers, :plan
|
14
|
+
object_fields :plan, :plan_pending, :owner
|
12
15
|
deletable true
|
13
16
|
path 'zones/:zone_id'
|
14
17
|
|
@@ -17,11 +20,25 @@ module Cloudflair
|
|
17
20
|
end
|
18
21
|
|
19
22
|
def settings
|
20
|
-
|
23
|
+
Cloudflair::Settings.new zone_id
|
21
24
|
end
|
22
25
|
|
23
26
|
def purge_cache
|
24
|
-
|
27
|
+
Cloudflair::PurgeCache.new zone_id
|
28
|
+
end
|
29
|
+
|
30
|
+
def available_rate_plans
|
31
|
+
Cloudflair::AvailableRatePlan.new zone_id
|
32
|
+
end
|
33
|
+
|
34
|
+
def available_plans
|
35
|
+
raw_plans = response connection.get("#{path}/available_plans")
|
36
|
+
|
37
|
+
raw_plans.map do |raw_plan|
|
38
|
+
zone = Cloudflair::AvailablePlan.new(zone_id, raw_plan['id'])
|
39
|
+
zone.data = raw_plan
|
40
|
+
zone
|
41
|
+
end
|
25
42
|
end
|
26
43
|
end
|
27
44
|
end
|
data/lib/cloudflair/api.rb
CHANGED
@@ -9,11 +9,11 @@ module Cloudflair
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.zones(filter = {})
|
12
|
-
|
12
|
+
raw_zones = response connection.get('zones', filter)
|
13
13
|
|
14
|
-
|
15
|
-
zone = Zone.new(
|
16
|
-
zone.data =
|
14
|
+
raw_zones.map do |raw_zone|
|
15
|
+
zone = Zone.new(raw_zone['id'])
|
16
|
+
zone.data = raw_zone
|
17
17
|
zone
|
18
18
|
end
|
19
19
|
end
|
data/lib/cloudflair/entity.rb
CHANGED
@@ -9,6 +9,12 @@ module Cloudflair
|
|
9
9
|
end
|
10
10
|
|
11
11
|
module ClassMethods
|
12
|
+
def self.extended(other_klass)
|
13
|
+
@other_klass = other_klass
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_accessor :fields_wrapper_class
|
17
|
+
|
12
18
|
def patchable_fields(*fields)
|
13
19
|
return @patchable_fields if @patchable_fields
|
14
20
|
|
@@ -34,10 +40,48 @@ module Cloudflair
|
|
34
40
|
|
35
41
|
@path = path
|
36
42
|
end
|
43
|
+
|
44
|
+
def object_fields(*fields)
|
45
|
+
return @object_fields if @object_fields
|
46
|
+
|
47
|
+
if fields.nil? || fields.empty?
|
48
|
+
@object_fields = []
|
49
|
+
else
|
50
|
+
@object_fields = fields.map(&:to_s)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# allowed values:
|
55
|
+
# <code>
|
56
|
+
# array_object_fields :field_a, :field_b, :field_c, 'fieldname_as_string'
|
57
|
+
# # next is ame as previous
|
58
|
+
# array_object_fields field_a: nil, field_b: nil, field_c: nil, 'fieldname_as_string': nil
|
59
|
+
# # next defines the types of the objects
|
60
|
+
# array_object_fields field_a: Klass, field_b: proc { |data| Klass.new data }, field_c: nil, 'fieldname_as_string'
|
61
|
+
# </code>
|
62
|
+
def array_object_fields(*fields_to_class_map)
|
63
|
+
return @array_object_fields if @array_object_fields
|
64
|
+
|
65
|
+
if fields_to_class_map.nil? || fields_to_class_map.empty?
|
66
|
+
@array_object_fields = {}
|
67
|
+
else
|
68
|
+
fields_map = {}
|
69
|
+
fields_to_class_map.each do |field|
|
70
|
+
if field.is_a?(Hash)
|
71
|
+
fields_to_class_map[0].each do |field, klass_or_proc|
|
72
|
+
fields_map[field.to_s] = klass_or_proc
|
73
|
+
end
|
74
|
+
else
|
75
|
+
fields_map[field.to_s] = nil
|
76
|
+
end
|
77
|
+
end
|
78
|
+
@array_object_fields = fields_map
|
79
|
+
end
|
80
|
+
end
|
37
81
|
end
|
38
82
|
|
39
83
|
def revert
|
40
|
-
|
84
|
+
dirty_data.clear
|
41
85
|
end
|
42
86
|
|
43
87
|
def reload
|
@@ -47,9 +91,9 @@ module Cloudflair
|
|
47
91
|
end
|
48
92
|
|
49
93
|
def patch
|
50
|
-
return self if
|
94
|
+
return self if dirty_data.empty?
|
51
95
|
|
52
|
-
@data = response connection.patch path,
|
96
|
+
@data = response connection.patch path, dirty_data
|
53
97
|
revert
|
54
98
|
self
|
55
99
|
end
|
@@ -72,29 +116,34 @@ module Cloudflair
|
|
72
116
|
checked_updated_fields[s_key] = values if patchable_fields.include? s_key
|
73
117
|
end
|
74
118
|
|
75
|
-
|
119
|
+
dirty_data.merge! checked_updated_fields
|
76
120
|
patch
|
77
121
|
end
|
78
122
|
|
79
123
|
def method_missing(name_as_symbol, *args, &block)
|
80
124
|
name = normalize_accessor name_as_symbol
|
81
125
|
|
126
|
+
return data if :_raw_data! == name_as_symbol
|
127
|
+
|
82
128
|
if name.end_with?('=')
|
83
129
|
if patchable_fields.include?(name[0..-2])
|
84
|
-
|
130
|
+
dirty_data[name[0..-2]] = args[0]
|
85
131
|
return
|
86
132
|
else
|
87
133
|
super
|
88
134
|
end
|
89
135
|
end
|
90
136
|
|
91
|
-
# allow access to the
|
137
|
+
# allow access to the unmodified data using 'zone.always_string!' or 'zone._name!'
|
92
138
|
if name.end_with?('!') && data.keys.include?(name[0..-2])
|
93
139
|
return data[name[0..2]]
|
94
140
|
end
|
95
141
|
|
96
|
-
return
|
97
|
-
return
|
142
|
+
return objectify(name) if object_fields.include? name
|
143
|
+
return arrayify(name, array_object_fields[name]) if array_object_fields.keys.include? name
|
144
|
+
|
145
|
+
return dirty_data[name] if dirty_data.keys.include? name
|
146
|
+
return data[name] if data.is_a?(Hash) && data.keys.include?(name)
|
98
147
|
|
99
148
|
super
|
100
149
|
end
|
@@ -102,11 +151,16 @@ module Cloudflair
|
|
102
151
|
def respond_to_missing?(name_as_symbol, *args)
|
103
152
|
name = normalize_accessor name_as_symbol
|
104
153
|
|
154
|
+
return true if :_raw_data! == name_as_symbol
|
155
|
+
|
105
156
|
return true if name.end_with?('=') && patchable_fields.include?(name[0..-2])
|
106
157
|
return true if name.end_with?('!') && data.keys.include?(name[0..-2])
|
107
158
|
|
108
|
-
return true if
|
109
|
-
return true if
|
159
|
+
return true if object_fields.include? name
|
160
|
+
return true if array_object_fields.keys.include? name
|
161
|
+
|
162
|
+
return true if dirty_data.keys.include? name
|
163
|
+
return true if data.is_a?(Hash) && data.keys.include?(name)
|
110
164
|
|
111
165
|
super
|
112
166
|
end
|
@@ -146,6 +200,39 @@ module Cloudflair
|
|
146
200
|
self.class.deletable
|
147
201
|
end
|
148
202
|
|
203
|
+
def object_fields
|
204
|
+
self.class.object_fields
|
205
|
+
end
|
206
|
+
|
207
|
+
def array_object_fields
|
208
|
+
self.class.array_object_fields
|
209
|
+
end
|
210
|
+
|
211
|
+
def objectify(name)
|
212
|
+
hash_to_object data[name]
|
213
|
+
end
|
214
|
+
|
215
|
+
def hash_to_object(hash)
|
216
|
+
objectified = Class.new
|
217
|
+
hash.each do |k, v|
|
218
|
+
objectified.instance_variable_set("@#{k}", v)
|
219
|
+
objectified.class.send(:define_method, k, proc { self.instance_variable_get("@#{k}") })
|
220
|
+
end
|
221
|
+
objectified
|
222
|
+
end
|
223
|
+
|
224
|
+
def arrayify(name, klass_or_proc=nil)
|
225
|
+
data[name].map do |data|
|
226
|
+
if klass_or_proc.nil?
|
227
|
+
hash_to_object data
|
228
|
+
elsif klass_or_proc.is_a? Proc
|
229
|
+
klass_or_proc.call data
|
230
|
+
else
|
231
|
+
klass_or_proc.new data
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
149
236
|
def path
|
150
237
|
return @path if @path
|
151
238
|
|
@@ -160,8 +247,8 @@ module Cloudflair
|
|
160
247
|
interpreted_path
|
161
248
|
end
|
162
249
|
|
163
|
-
def
|
164
|
-
@
|
250
|
+
def dirty_data
|
251
|
+
@dirty_data ||= {}
|
165
252
|
end
|
166
253
|
end
|
167
254
|
end
|
data/lib/cloudflair/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudflair
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Mäder
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -129,9 +129,40 @@ files:
|
|
129
129
|
- lib/cloudflair.rb
|
130
130
|
- lib/cloudflair/api.rb
|
131
131
|
- lib/cloudflair/api/zone.rb
|
132
|
+
- lib/cloudflair/api/zone/available_plan.rb
|
133
|
+
- lib/cloudflair/api/zone/available_rate_plan.rb
|
132
134
|
- lib/cloudflair/api/zone/purge_cache.rb
|
133
135
|
- lib/cloudflair/api/zone/settings.rb
|
136
|
+
- lib/cloudflair/api/zone/settings/advanced_ddos.rb
|
137
|
+
- lib/cloudflair/api/zone/settings/always_online.rb
|
138
|
+
- lib/cloudflair/api/zone/settings/browser_cache_ttl.rb
|
139
|
+
- lib/cloudflair/api/zone/settings/browser_check.rb
|
140
|
+
- lib/cloudflair/api/zone/settings/cache_level.rb
|
141
|
+
- lib/cloudflair/api/zone/settings/challenge_ttl.rb
|
134
142
|
- lib/cloudflair/api/zone/settings/development_mode.rb
|
143
|
+
- lib/cloudflair/api/zone/settings/email_obfuscation.rb
|
144
|
+
- lib/cloudflair/api/zone/settings/hotlink_protection.rb
|
145
|
+
- lib/cloudflair/api/zone/settings/ip_geolocation.rb
|
146
|
+
- lib/cloudflair/api/zone/settings/ipv6.rb
|
147
|
+
- lib/cloudflair/api/zone/settings/minify.rb
|
148
|
+
- lib/cloudflair/api/zone/settings/mirage.rb
|
149
|
+
- lib/cloudflair/api/zone/settings/mobile_redirect.rb
|
150
|
+
- lib/cloudflair/api/zone/settings/origin_error_page_pass_thru.rb
|
151
|
+
- lib/cloudflair/api/zone/settings/polish.rb
|
152
|
+
- lib/cloudflair/api/zone/settings/prefetch_preload.rb
|
153
|
+
- lib/cloudflair/api/zone/settings/response_buffering.rb
|
154
|
+
- lib/cloudflair/api/zone/settings/rocket_loader.rb
|
155
|
+
- lib/cloudflair/api/zone/settings/security_header.rb
|
156
|
+
- lib/cloudflair/api/zone/settings/security_level.rb
|
157
|
+
- lib/cloudflair/api/zone/settings/server_side_exclude.rb
|
158
|
+
- lib/cloudflair/api/zone/settings/sort_query_string_for_cache.rb
|
159
|
+
- lib/cloudflair/api/zone/settings/ssl.rb
|
160
|
+
- lib/cloudflair/api/zone/settings/tls_1_2_only.rb
|
161
|
+
- lib/cloudflair/api/zone/settings/tls_1_3.rb
|
162
|
+
- lib/cloudflair/api/zone/settings/tls_client_auth.rb
|
163
|
+
- lib/cloudflair/api/zone/settings/true_client_ip_header.rb
|
164
|
+
- lib/cloudflair/api/zone/settings/waf.rb
|
165
|
+
- lib/cloudflair/api/zone/settings/websockets.rb
|
135
166
|
- lib/cloudflair/communication.rb
|
136
167
|
- lib/cloudflair/connection.rb
|
137
168
|
- lib/cloudflair/entity.rb
|