cloudflair 0.0.5 → 0.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5544a93b5a42bf842ac8e55baa5d7fcb4bc19702
4
- data.tar.gz: 7664480c03564666fb4ab299aa8c75a51357cddd
3
+ metadata.gz: e0026c99261c0b4e103318525b4ae84d4a355ee3
4
+ data.tar.gz: ea221bddb6dad9ff7d3a34c6e9c7c4d5950d9c8c
5
5
  SHA512:
6
- metadata.gz: 48a1afcdf0395bf0fe4c71e298861ab67f2b1435dde27f8b4653f3bd53941a8720e3a4c52ffacfe9adafab3e0f0eb14f197479495b530dd4c91e2a1fb294f8e0
7
- data.tar.gz: 13f6ad242a69ad4991ea15e39382c38e26b1e0f0219e4435025925ffaeff81d9e633b343ad87e75eb021394a296f7e8821f297c60450cd4b50430cc227146a2c
6
+ metadata.gz: c00fb8e18dcd6fb0ffd246782a4cd814d7d0bf09a1c67a12deceab171b5c0b9ad0948b31d2371e5bc9440d8e8f19eed8558fc2370d9f99cb1404346ba0765894
7
+ data.tar.gz: 887e4a0fd254b061c1777c73d505a4a0588e8b86c2e623a70a9bcbc5b5c3b6e5f9c6bf60b90aafc735633bb7641a87b826db9c4777a6d68918864fa31968b8dc
data/README.md CHANGED
@@ -93,3 +93,11 @@ The gem is available as open source under the terms of the [MIT License](http://
93
93
  * Metrics reporting
94
94
  * Rate Limit Tracking
95
95
  * (Global) Rate Limit Tracking (redis?)
96
+
97
+ ## About
98
+
99
+ This gem is currently maintained and funded by [nine.ch](https://nine.ch).
100
+
101
+ [![nine.ch Logo](https://blog.nine.ch/assets/logo.png)](https://nine.ch)
102
+
103
+ We run your Linux server infrastructure – without interruptions, around the clock.
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/cloudflair.gemspec CHANGED
@@ -24,7 +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
+ spec.add_runtime_dependency 'faraday-detailed_logger', '~> 2.1'
28
28
 
29
29
  spec.add_development_dependency 'bundler', '~> 1.12'
30
30
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -12,6 +12,5 @@ module Cloudflair
12
12
  def initialize(zone_id)
13
13
  @zone_id = zone_id
14
14
  end
15
-
16
15
  end
17
16
  end
@@ -1,7 +1,20 @@
1
1
  require 'cloudflair/api/zone'
2
+ require 'cloudflair/communication'
2
3
 
3
4
  module Cloudflair
5
+ extend Cloudflair::Communication
6
+
4
7
  def self.zone(zone_id)
5
8
  Zone.new zone_id
6
9
  end
10
+
11
+ def self.zones(filter = {})
12
+ json_hashes = response connection.get('zones', filter)
13
+
14
+ json_hashes.map do |json|
15
+ zone = Zone.new(json['id'])
16
+ zone.data = json
17
+ zone
18
+ end
19
+ end
7
20
  end
@@ -7,9 +7,9 @@ module Cloudflair
7
7
  def response(response)
8
8
  return nil if response.status == 304
9
9
 
10
- http_error? response.status
10
+ raise_on_http_error response.status
11
11
 
12
- parse response
12
+ read response
13
13
  end
14
14
 
15
15
  def connection
@@ -18,7 +18,7 @@ module Cloudflair
18
18
 
19
19
  private
20
20
 
21
- def parse(response)
21
+ def read(response)
22
22
  body = response.body
23
23
 
24
24
  unless body['success']
@@ -29,28 +29,34 @@ module Cloudflair
29
29
  body['result']
30
30
  end
31
31
 
32
- def http_error?(status)
32
+ def raise_on_http_error(status)
33
33
  case status
34
34
  when 200..399 then
35
- return
35
+ when 400..499 then
36
+ raise_on_http_client_error status
37
+ when 500..599 then
38
+ fail Cloudflair::CloudflairError, "#{status} Remote Error"
39
+ else
40
+ fail Cloudflair::CloudflairError, "#{status} Unknown Error Code"
41
+ end
42
+ end
43
+
44
+ def raise_on_http_client_error(status)
45
+ case status
36
46
  when 400 then
37
47
  fail Cloudflair::CloudflairError, '400 Bad Request'
38
48
  when 401 then
39
49
  fail Cloudflair::CloudflairError, '401 Unauthorized'
40
50
  when 403 then
41
51
  fail Cloudflair::CloudflairError, '403 Forbidden'
42
- when 429 then
43
- fail Cloudflair::CloudflairError, '429 Too Many Requests'
44
52
  when 405 then
45
53
  fail Cloudflair::CloudflairError, '405 Method Not Allowed'
46
54
  when 415 then
47
55
  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"
56
+ when 429 then
57
+ fail Cloudflair::CloudflairError, '429 Too Many Requests'
52
58
  else
53
- fail Cloudflair::CloudflairError, "#{status} Unknown Error Code"
59
+ fail Cloudflair::CloudflairError, "#{status} Request Error"
54
60
  end
55
61
  end
56
62
  end
@@ -7,13 +7,7 @@ module Cloudflair
7
7
  def self.new
8
8
  config = Cloudflair.config
9
9
 
10
- Faraday.new(url: config.cloudflare.api_base_url, headers: headers) do |faraday|
11
- faraday.request :json
12
- faraday.response config.faraday.adapter if config.faraday.logger
13
- faraday.response :json, content_type: /\bjson$/
14
-
15
- faraday.adapter config.faraday.adapter || Faraday.default_adapter
16
- end
10
+ new_faraday_from config
17
11
  end
18
12
 
19
13
  def self.headers
@@ -27,5 +21,15 @@ module Cloudflair
27
21
  end
28
22
  headers
29
23
  end
24
+
25
+ private_class_method def self.new_faraday_from(config)
26
+ Faraday.new(url: config.cloudflare.api_base_url, headers: headers) do |faraday|
27
+ faraday.request :json
28
+ faraday.response config.faraday.logger if config.faraday.logger
29
+ faraday.response :json, content_type: /\bjson$/
30
+
31
+ faraday.adapter config.faraday.adapter || Faraday.default_adapter
32
+ end
33
+ end
30
34
  end
31
35
  end
@@ -111,6 +111,12 @@ module Cloudflair
111
111
  super
112
112
  end
113
113
 
114
+ ##
115
+ # :internal: Used to pre-populate an entity
116
+ def data=(data)
117
+ @data = data
118
+ end
119
+
114
120
  alias get! reload
115
121
  alias save patch
116
122
 
@@ -143,12 +149,15 @@ module Cloudflair
143
149
  def path
144
150
  return @path if @path
145
151
 
146
- path = self.class.path
152
+ @path = replace_path_variables_in self.class.path
153
+ end
154
+
155
+ def replace_path_variables_in(path)
147
156
  interpreted_path = path.clone
148
- path.scan /:([a-zA-Z_][a-zA-Z0-9_]+[!?=]?)/ do |match, *|
157
+ path.scan(/:([a-zA-Z_][a-zA-Z0-9_]+[!?=]?)/) do |match, *|
149
158
  interpreted_path.gsub! ":#{match}", send(match).to_s
150
159
  end
151
- @path = interpreted_path
160
+ interpreted_path
152
161
  end
153
162
 
154
163
  def dirty
@@ -1,3 +1,3 @@
1
1
  module Cloudflair
2
- VERSION = '0.0.5'.freeze
2
+ VERSION = '0.0.6'.freeze
3
3
  end
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.5
4
+ version: 0.0.6
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-20 00:00:00.000000000 Z
11
+ date: 2016-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.1.0
61
+ version: '2.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.1.0
68
+ version: '2.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement