cloudflare_client_rb 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53055d6f6789ba960ef43045e6b102ffb4e97baf
4
- data.tar.gz: 3ef8b8314e81ae120c8c3711b75997d56e5f0e0e
3
+ metadata.gz: 97207869fc9f1586e9c8f2d51b1e2467d615020c
4
+ data.tar.gz: b3c6f6042a41012d3629f2e93364bbc34c0b4051
5
5
  SHA512:
6
- metadata.gz: ba0a7b3a325441795cbfe180f351a8385bf5770b79c9b8b6008770438f9fbe4497af207ded9bc20f207482769c6418dee161e1b4311e669a2632031a60f4d468
7
- data.tar.gz: f26ff45885f8efb43349310c4ea943522742b0dbbd320154e531104c2e2846b0c1b339af79c605656bc09c9e148beb779eb687e415a9640f6b73df897dd19000
6
+ metadata.gz: 49a932c5de6eeb9601d598fe49acdef3d234c20c70cd22f24fab7a4807f8b653d1610be67372ff13c55bb59e0f7ab918ff11ab8cad39c056bef0da909bdd3e15
7
+ data.tar.gz: e97e7da2f1201ed21693d4c87879d962dba9101fcdf16b1f70d518a592f493a9f76af60d82fd88b44966ac1544fb3de1dab5176427abf5451a665a70f3d86bc9
@@ -6,6 +6,7 @@ class CloudflareClient
6
6
  require 'date'
7
7
  require 'byebug'
8
8
  Dir[File.expand_path('../cloudflare_client/*.rb', __FILE__)].each { |f| require f }
9
+ require 'cloudflare_client/middleware/response/raise_error'
9
10
 
10
11
  API_BASE = 'https://api.cloudflare.com/client/v4'.freeze
11
12
  VALID_BUNDLE_METHODS = %w[ubiquitous optimal force].freeze
@@ -136,6 +137,7 @@ class CloudflareClient
136
137
  client = Faraday.new(url: API_BASE) do |conn|
137
138
  conn.request :multipart
138
139
  conn.request :url_encoded
140
+ conn.use Middleware::Response::RaiseError
139
141
  conn.adapter :net_http
140
142
  end
141
143
  client.headers['X-Auth-Key'] = params[:auth_key]
@@ -0,0 +1,109 @@
1
+ class CloudflareClient
2
+ class ResponseError < StandardError
3
+ # The Faraday::Response object that caused the exception to be raised.
4
+ attr_reader :response, :method, :uri, :url
5
+
6
+ def initialize(message = nil, response = nil, method = nil, uri = nil, url = nil)
7
+ super(message)
8
+ @response = response
9
+ @method = method
10
+ @uri = uri
11
+ @url = url
12
+ end
13
+ end
14
+
15
+ # An exception that is raised when a response status in the 4xx range is
16
+ # encountered. There's a number of subclasses that allow you to granularly
17
+ # handle specific status codes.
18
+ class ClientError < ResponseError; end
19
+
20
+ # Client errors:
21
+ class BadRequest < ClientError; end
22
+ class Unauthorized < ClientError; end
23
+ class Forbidden < ClientError; end
24
+ class ResourceNotFound < ClientError; end
25
+ class Conflict < ClientError; end
26
+ class Gone < ClientError; end
27
+ class PreconditionFailed < ClientError; end
28
+ class UnprocessableEntity < ClientError; end
29
+ class TooManyRequests < ClientError; end
30
+ class Locked < ClientError; end
31
+
32
+ # An exception that is raised when a response status in the 5xx range is
33
+ # encountered. There's a number of subclasses that allow you to granularly
34
+ # handle specific status codes.
35
+ class ServerError < ResponseError; end
36
+
37
+ # Server errors:
38
+ class InternalServerError < ServerError; end
39
+ class BadGateway < ServerError; end
40
+ class ServiceUnavailable < ServerError; end
41
+ class GatewayTimeout < ServerError; end
42
+
43
+ module Middleware
44
+ module Response
45
+ # Raises ResponseError exceptions when a response status in either the
46
+ # 4xx range or the 5xx range is encountered. There are a number of specific
47
+ # exception mappings as well as general exception types covering the
48
+ # respective ranges.
49
+ class RaiseError
50
+ CLIENT_ERRORS = 400...500
51
+ SERVER_ERRORS = 500...600
52
+
53
+ def initialize(app)
54
+ @app = app
55
+ end
56
+
57
+ def call(env)
58
+ response = @app.call(env)
59
+ handle_status(response, env.method, env.url.request_uri, env.url.to_s)
60
+ response
61
+ end
62
+
63
+ private
64
+
65
+ def handle_status(response, method, uri, url)
66
+ case response.status
67
+ when 400
68
+ raise CloudflareClient::BadRequest.new('400 Bad Request', response, method, uri, url)
69
+ when 401
70
+ raise CloudflareClient::Unauthorized.new('401 Unauthorized', response, method, uri, url)
71
+ when 403
72
+ raise CloudflareClient::Forbidden.new('403 Forbidden', response, method, uri, url)
73
+ when 404
74
+ raise CloudflareClient::ResourceNotFound.new('404 Not Found', response, method, uri, url)
75
+ when 407
76
+ # Mimic the behavior that we get with proxy requests with HTTPS. We still
77
+ # use Faraday exceptions for network errors, as it's difficult to reliably
78
+ # wrap these in CloudflareClient without losing information.
79
+ raise Faraday::ConnectionFailed.new('407 Proxy Authentication Required', response)
80
+ when 409
81
+ raise CloudflareClient::Conflict.new('409 Conflict', response, method, uri, url)
82
+ when 410
83
+ raise CloudflareClient::Gone.new('410 Gone', response, method, uri, url)
84
+ when 412
85
+ raise CloudflareClient::PreconditionFailed.new('412 Precondition Failed', response, method, uri, url)
86
+ when 422
87
+ raise CloudflareClient::UnprocessableEntity.new('422 Unprocessable Entity', response, method, uri, url)
88
+ when 423
89
+ raise CloudflareClient::Locked.new('423 Locked', response, method, uri, url)
90
+ when 429
91
+ raise CloudflareClient::TooManyRequests.new('429 Too Many Requests', response, method, uri, url)
92
+ when 500
93
+ raise CloudflareClient::InternalServerError.new('500 Internal Server Error', response, method, uri, url)
94
+ when 502
95
+ raise CloudflareClient::BadGateway.new('502 Bad Gateway', response, method, uri, url)
96
+ when 503
97
+ raise CloudflareClient::ServiceUnavailable.new('503 Service Unavailable', response, method, uri, url)
98
+ when 504
99
+ raise CloudflareClient::GatewayTimeout.new('504 Gateway Timeout', response, method, uri, url)
100
+ when CLIENT_ERRORS
101
+ raise CloudflareClient::ClientError.new(response.status.to_s, response, method, uri, url)
102
+ when SERVER_ERRORS
103
+ raise CloudflareClient::ServerError.new(response.status.to_s, response, method, uri, url)
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -1,3 +1,3 @@
1
1
  class CloudflareClient
2
- VERSION = '4.0.0'
2
+ VERSION = '4.1.0'
3
3
  end
@@ -9,6 +9,8 @@ class CloudflareClient::Zone::DNS < CloudflareClient::Zone::Base
9
9
  def create(name:, type:, content:, ttl: nil, proxied: nil)
10
10
  raise ("type must be one of #{VALID_TYPES.flatten}") unless VALID_TYPES.include?(type)
11
11
  data = {name: name, type: type, content: content}
12
+ data[:ttl] = ttl unless ttl.nil?
13
+ data[:proxied] = proxied unless proxied.nil?
12
14
  cf_post(path: "/zones/#{zone_id}/dns_records", data: data)
13
15
  end
14
16
 
@@ -20,7 +20,7 @@ class CloudflareClient::Zone::PageRule < CloudflareClient::Zone::Base
20
20
 
21
21
  ##
22
22
  # list all the page rules for a zone
23
- def list(status: 'disabled', order: 'priority', direction: 'desc', match: 'all')
23
+ def list(status: 'active', order: 'priority', direction: 'desc', match: 'all')
24
24
  valid_value_check(:status, status, VALID_STATUSES)
25
25
  valid_value_check(:order, order, VALID_ORDERS)
26
26
  valid_value_check(:direction, direction, VALID_DIRECTIONS)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudflare_client_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian waters
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-12 00:00:00.000000000 Z
11
+ date: 2017-12-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: iwaters@zendesk.com
@@ -18,6 +18,7 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - lib/cloudflare_client.rb
20
20
  - lib/cloudflare_client/certificate.rb
21
+ - lib/cloudflare_client/middleware/response/raise_error.rb
21
22
  - lib/cloudflare_client/organization.rb
22
23
  - lib/cloudflare_client/organization/access_rule.rb
23
24
  - lib/cloudflare_client/organization/invite.rb