cloudflair 0.0.4 → 0.0.5
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/README.md +2 -0
- data/cloudflair.gemspec +1 -0
- data/lib/cloudflair/api/zone/purge_cache.rb +13 -5
- data/lib/cloudflair/api/zone/settings/development_mode.rb +1 -5
- data/lib/cloudflair/api/zone.rb +4 -8
- data/lib/cloudflair/api.rb +7 -0
- data/lib/cloudflair/communication.rb +37 -2
- data/lib/cloudflair/connection.rb +5 -1
- data/lib/cloudflair/entity.rb +19 -0
- data/lib/cloudflair/version.rb +1 -1
- data/lib/cloudflair.rb +5 -3
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5544a93b5a42bf842ac8e55baa5d7fcb4bc19702
|
4
|
+
data.tar.gz: 7664480c03564666fb4ab299aa8c75a51357cddd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48a1afcdf0395bf0fe4c71e298861ab67f2b1435dde27f8b4653f3bd53941a8720e3a4c52ffacfe9adafab3e0f0eb14f197479495b530dd4c91e2a1fb294f8e0
|
7
|
+
data.tar.gz: 13f6ad242a69ad4991ea15e39382c38e26b1e0f0219e4435025925ffaeff81d9e633b343ad87e75eb021394a296f7e8821f297c60450cd4b50430cc227146a2c
|
data/README.md
CHANGED
@@ -43,6 +43,8 @@ Cloudflair.configure do |config|
|
|
43
43
|
# these are optional:
|
44
44
|
config.cloudflare.api_base_url = 'https://your_cloudflare_mock.local'
|
45
45
|
config.faraday.adapter = :your_preferred_faraday_adapter
|
46
|
+
# built-in options: :logger, :detailed_logger; default: nil
|
47
|
+
config.faraday.logger = :logger
|
46
48
|
end
|
47
49
|
```
|
48
50
|
|
data/cloudflair.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_runtime_dependency 'faraday', '~> 0.9.0'
|
25
25
|
spec.add_runtime_dependency 'faraday_middleware', '~> 0.10.0'
|
26
26
|
spec.add_runtime_dependency 'dry-configurable', '~> 0.1'
|
27
|
+
spec.add_runtime_dependency 'faraday-detailed_logger', '~> 2.1.0'
|
27
28
|
|
28
29
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
29
30
|
spec.add_development_dependency 'rake', '~> 10.0'
|
@@ -10,18 +10,26 @@ module Cloudflair
|
|
10
10
|
@zone_id = zone_id
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
##
|
14
|
+
# @param purge_everything must be set to true
|
15
|
+
def everything(purge_everything)
|
16
|
+
resp = connection.delete(path) { |req| req.body = { purge_everything: purge_everything } }
|
17
|
+
response resp
|
18
|
+
self
|
15
19
|
end
|
16
20
|
|
17
21
|
##
|
18
22
|
# @param [Hash] cache_identifier Consists of :files and :tags, which are String Arrays themselves. Sample: <code>{files: ['https://foo.bar/index.htmll'], tags: ['css','js']}
|
19
|
-
def
|
23
|
+
def selective(cache_identifier = {})
|
24
|
+
return self if cache_identifier.nil? || cache_identifier.empty?
|
20
25
|
|
26
|
+
resp = connection.delete(path) { |req| req.body = cache_identifier }
|
27
|
+
response resp
|
28
|
+
self
|
21
29
|
end
|
22
30
|
|
23
|
-
def
|
24
|
-
|
31
|
+
def path
|
32
|
+
"zones/#{zone_id}/purge_cache"
|
25
33
|
end
|
26
34
|
end
|
27
35
|
end
|
@@ -7,15 +7,11 @@ module Cloudflair
|
|
7
7
|
attr_accessor :zone_id
|
8
8
|
|
9
9
|
patchable_fields :value
|
10
|
+
path 'zones/:zone_id/settings/development_mode'
|
10
11
|
|
11
12
|
def initialize(zone_id)
|
12
13
|
@zone_id = zone_id
|
13
14
|
end
|
14
15
|
|
15
|
-
private
|
16
|
-
|
17
|
-
def path
|
18
|
-
"zones/#{zone_id}/settings/development_mode"
|
19
|
-
end
|
20
16
|
end
|
21
17
|
end
|
data/lib/cloudflair/api/zone.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
require 'cloudflair/api/zone/settings'
|
2
|
+
require 'cloudflair/api/zone/purge_cache'
|
2
3
|
require 'cloudflair/entity'
|
3
4
|
|
4
5
|
module Cloudflair
|
5
|
-
def self.zone(zone_id)
|
6
|
-
Zone.new zone_id
|
7
|
-
end
|
8
|
-
|
9
6
|
class Zone
|
10
7
|
include Cloudflair::Entity
|
11
8
|
|
@@ -13,6 +10,7 @@ module Cloudflair
|
|
13
10
|
|
14
11
|
patchable_fields :paused, :vanity_name_servers, :plan
|
15
12
|
deletable true
|
13
|
+
path 'zones/:zone_id'
|
16
14
|
|
17
15
|
def initialize(zone_id)
|
18
16
|
@zone_id = zone_id
|
@@ -22,10 +20,8 @@ module Cloudflair
|
|
22
20
|
@settings ||= Cloudflair::Settings.new zone_id
|
23
21
|
end
|
24
22
|
|
25
|
-
|
26
|
-
|
27
|
-
def path
|
28
|
-
"zones/#{zone_id}"
|
23
|
+
def purge_cache
|
24
|
+
@purge_cache ||= Cloudflair::PurgeCache.new zone_id
|
29
25
|
end
|
30
26
|
end
|
31
27
|
end
|
@@ -5,6 +5,20 @@ require 'cloudflair/connection'
|
|
5
5
|
module Cloudflair
|
6
6
|
module Communication
|
7
7
|
def response(response)
|
8
|
+
return nil if response.status == 304
|
9
|
+
|
10
|
+
http_error? response.status
|
11
|
+
|
12
|
+
parse response
|
13
|
+
end
|
14
|
+
|
15
|
+
def connection
|
16
|
+
Cloudflair::Connection.new
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def parse(response)
|
8
22
|
body = response.body
|
9
23
|
|
10
24
|
unless body['success']
|
@@ -15,8 +29,29 @@ module Cloudflair
|
|
15
29
|
body['result']
|
16
30
|
end
|
17
31
|
|
18
|
-
def
|
19
|
-
|
32
|
+
def http_error?(status)
|
33
|
+
case status
|
34
|
+
when 200..399 then
|
35
|
+
return
|
36
|
+
when 400 then
|
37
|
+
fail Cloudflair::CloudflairError, '400 Bad Request'
|
38
|
+
when 401 then
|
39
|
+
fail Cloudflair::CloudflairError, '401 Unauthorized'
|
40
|
+
when 403 then
|
41
|
+
fail Cloudflair::CloudflairError, '403 Forbidden'
|
42
|
+
when 429 then
|
43
|
+
fail Cloudflair::CloudflairError, '429 Too Many Requests'
|
44
|
+
when 405 then
|
45
|
+
fail Cloudflair::CloudflairError, '405 Method Not Allowed'
|
46
|
+
when 415 then
|
47
|
+
fail Cloudflair::CloudflairError, '415 Unsupported Media Type'
|
48
|
+
when 400..499 then
|
49
|
+
fail Cloudflair::CloudflairError, "#{status} Request Error"
|
50
|
+
when 500..599 then
|
51
|
+
fail Cloudflair::CloudflairError, "#{status} Remote Error"
|
52
|
+
else
|
53
|
+
fail Cloudflair::CloudflairError, "#{status} Unknown Error Code"
|
54
|
+
end
|
20
55
|
end
|
21
56
|
end
|
22
57
|
end
|
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
require 'faraday/detailed_logger'
|
4
|
+
|
1
5
|
module Cloudflair
|
2
6
|
class Connection
|
3
7
|
def self.new
|
@@ -5,7 +9,7 @@ module Cloudflair
|
|
5
9
|
|
6
10
|
Faraday.new(url: config.cloudflare.api_base_url, headers: headers) do |faraday|
|
7
11
|
faraday.request :json
|
8
|
-
faraday.response
|
12
|
+
faraday.response config.faraday.adapter if config.faraday.logger
|
9
13
|
faraday.response :json, content_type: /\bjson$/
|
10
14
|
|
11
15
|
faraday.adapter config.faraday.adapter || Faraday.default_adapter
|
data/lib/cloudflair/entity.rb
CHANGED
@@ -26,6 +26,14 @@ module Cloudflair
|
|
26
26
|
|
27
27
|
@deletable = deletable
|
28
28
|
end
|
29
|
+
|
30
|
+
def path(path = nil)
|
31
|
+
return @path if @path
|
32
|
+
|
33
|
+
fail ArgumentError, 'path is not defined' if path.nil?
|
34
|
+
|
35
|
+
@path = path
|
36
|
+
end
|
29
37
|
end
|
30
38
|
|
31
39
|
def revert
|
@@ -132,6 +140,17 @@ module Cloudflair
|
|
132
140
|
self.class.deletable
|
133
141
|
end
|
134
142
|
|
143
|
+
def path
|
144
|
+
return @path if @path
|
145
|
+
|
146
|
+
path = self.class.path
|
147
|
+
interpreted_path = path.clone
|
148
|
+
path.scan /:([a-zA-Z_][a-zA-Z0-9_]+[!?=]?)/ do |match, *|
|
149
|
+
interpreted_path.gsub! ":#{match}", send(match).to_s
|
150
|
+
end
|
151
|
+
@path = interpreted_path
|
152
|
+
end
|
153
|
+
|
135
154
|
def dirty
|
136
155
|
@dirty ||= {}
|
137
156
|
end
|
data/lib/cloudflair/version.rb
CHANGED
data/lib/cloudflair.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
require 'cloudflair/api
|
2
|
-
require 'cloudflair/communication'
|
3
|
-
require 'cloudflair/connection'
|
1
|
+
require 'cloudflair/api'
|
4
2
|
require 'cloudflair/version'
|
5
3
|
require 'dry-configurable'
|
6
4
|
|
@@ -15,8 +13,11 @@ require 'dry-configurable'
|
|
15
13
|
# config.cloudflare.auth.user_service_key = 'YOUR_USER_SERVICE_KEY'
|
16
14
|
#
|
17
15
|
# # these are optional:
|
16
|
+
#
|
18
17
|
# config.cloudflare.api_base_url = 'https://your_cloudflare_mock.local'
|
19
18
|
# config.faraday.adapter = :your_preferred_faraday_adapter
|
19
|
+
# # built-in options: :logger, :detailed_logger; default: nil
|
20
|
+
# config.faraday.logger = :logger
|
20
21
|
# end
|
21
22
|
# </code>
|
22
23
|
module Cloudflair
|
@@ -34,5 +35,6 @@ module Cloudflair
|
|
34
35
|
|
35
36
|
setting :faraday do
|
36
37
|
setting :adapter, :net_http
|
38
|
+
setting :logger
|
37
39
|
end
|
38
40
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Mäder
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: faraday-detailed_logger
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.1.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.1.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,6 +127,7 @@ files:
|
|
113
127
|
- bin/setup
|
114
128
|
- cloudflair.gemspec
|
115
129
|
- lib/cloudflair.rb
|
130
|
+
- lib/cloudflair/api.rb
|
116
131
|
- lib/cloudflair/api/zone.rb
|
117
132
|
- lib/cloudflair/api/zone/purge_cache.rb
|
118
133
|
- lib/cloudflair/api/zone/settings.rb
|