cloud_party 0.1.1.pre.alpha.1 → 0.1.1
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/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/.rubocop_config.yml +2 -1
- data/.travis.yml +11 -6
- data/README.md +17 -8
- data/Rakefile +1 -1
- data/cloud_party.gemspec +27 -25
- data/lib/cloud_party/context.rb +5 -7
- data/lib/cloud_party/exception.rb +28 -54
- data/lib/cloud_party/exceptions/request_errors/bad_request_error.rb +26 -0
- data/lib/cloud_party/exceptions/request_errors/forbidden_error.rb +26 -0
- data/lib/cloud_party/exceptions/request_errors/method_not_allowed_error.rb +27 -0
- data/lib/cloud_party/exceptions/request_errors/not_found_error.rb +26 -0
- data/lib/cloud_party/exceptions/request_errors/too_many_requests_error.rb +27 -0
- data/lib/cloud_party/exceptions/request_errors/unauthorized_error.rb +26 -0
- data/lib/cloud_party/exceptions/request_errors/unsupported_media_type_error.rb +27 -0
- data/lib/cloud_party/exceptions/request_errors.rb +25 -0
- data/lib/cloud_party/exceptions/un_recognized_endpoint_error.rb +20 -0
- data/lib/cloud_party/exceptions/un_recognized_result_type_error.rb +14 -0
- data/lib/cloud_party/exceptions.rb +42 -1
- data/lib/cloud_party/nodes/accounts.rb +26 -0
- data/lib/cloud_party/nodes/ips.rb +5 -3
- data/lib/cloud_party/nodes/memberships.rb +6 -6
- data/lib/cloud_party/nodes/zones.rb +30 -0
- data/lib/cloud_party/nodes.rb +2 -0
- data/lib/cloud_party/response.rb +17 -3
- data/lib/cloud_party/responses/accounts.rb +148 -0
- data/lib/cloud_party/responses/ips.rb +3 -6
- data/lib/cloud_party/responses/memberships.rb +1 -0
- data/lib/cloud_party/responses/nodes/accounts.rb +3 -0
- data/lib/cloud_party/responses/nodes/zones/account.rb +30 -0
- data/lib/cloud_party/responses/nodes/zones/permissions.rb +33 -0
- data/lib/cloud_party/responses/nodes/zones/plan.rb +25 -0
- data/lib/cloud_party/responses/nodes/zones/plan_pending.rb +27 -0
- data/lib/cloud_party/responses/nodes/zones.rb +6 -0
- data/lib/cloud_party/responses/nodes.rb +7 -2
- data/lib/cloud_party/responses/zones.rb +150 -0
- data/lib/cloud_party/responses.rb +11 -0
- data/lib/cloud_party/version.rb +1 -1
- data/lib/cloud_party.rb +5 -1
- data/sonar-project.properties +9 -0
- metadata +55 -37
- data/lib/cloud_party/exceptions/bad_request_400.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9d6d0080a0cd0c540c77091058416c7356ec427394dbdbad571fecae55d2b96
|
4
|
+
data.tar.gz: e2ff2b1c423f6d11bcdbb2cf573c26423b9d64da0cba9dafad3a42c8b2b3154a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8977fd0128fb51169959e3ec22dadcc87bfa48ae6cd22e57b3a93d57d1d24e0f804cca2ed6e9834d116692eca0c49a297966d1c375cae9137f8cc8f3445728e9
|
7
|
+
data.tar.gz: dac649d63809a0fff7269c10763428ba297c45f2277b1268b7b01a9ec199e343ea31f7c94343672e084e92b862748e1a2a6bf29ea4fe38082bf3125949dd2d4d
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.rubocop_config.yml
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Available cops (428) + config for /home/ken/everygit/cloudflare_cli:
|
2
|
+
# Available cops (428) + config for /home/ken/everygit/cloudflare_cli:
|
2
3
|
# Department 'Bundler' (4):
|
3
4
|
Bundler/DuplicatedGem:
|
4
5
|
Description: Checks for duplicate gem entries in Gemfile.
|
@@ -866,7 +867,7 @@ Lint/FormatParameterMismatch:
|
|
866
867
|
Lint/HandleExceptions:
|
867
868
|
Description: Don't suppress exception.
|
868
869
|
StyleGuide: "#dont-hide-exceptions"
|
869
|
-
Enabled:
|
870
|
+
Enabled: false
|
870
871
|
|
871
872
|
Lint/ImplicitStringConcatenation:
|
872
873
|
Description: Checks for adjacent string literals on the same line, which could better
|
data/.travis.yml
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
language: ruby
|
2
|
-
bundler_args: --jobs=6 --retry=3 --standalone
|
2
|
+
bundler_args: "--jobs=6 --retry=3 --standalone"
|
3
3
|
script:
|
4
|
-
|
5
|
-
|
4
|
+
- echo "Running tests against $(ruby -v) ..."
|
5
|
+
- bundle exec rake -t
|
6
6
|
rvm:
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
- 2.3
|
8
|
+
- 2.4
|
9
|
+
- 2.5
|
10
|
+
addons:
|
11
|
+
sonarcloud:
|
12
|
+
organization: iotaspencer-github
|
13
|
+
token:
|
14
|
+
secure: LmYxRG98giIzDDwNdOcgiTK0b5+f+M92672qWhbsXQD9hWQUnPWJpbzRk7+ApjulxIIi28HYqTkS32K4VIPvP8N425idqqoPg98kpjkaG7kqKmj6zXARZSOhW7Qs7c3E0kmGEe10YQi88u75x9caR/aKoL/RmJq2wPCjOqJfVaQczEJb18ULFjLOpdO5AulHNbN3VByjf+miuIM7mztlyPwhH/tXiMxKR5TgTe5L0s2XwCblvxjYD+wQTz538m2CPTqgktlv2FqFxEsjTuZORzALlvBlaFTS/gxYnQhsMUEIE5SfxQ/xuQo1Zg07j8JjTLcTNr9tOBi5Q2mk9sgiLSbJowT/zkQGN6rWizu5NUhJJiVK1IN/B2vnuLCB9XvyeYYrfksxYS36vb2mFLOEt1b/BTjcjVuagc5/3krGR4K16xlyZYoOaAKfYGjmeYKAoNorSWBryZJqZtZA50SroK+2lwEfEokcogz+hbitWWSgUGbIBUowvZP7Sr/J8lWH3887rfANaVziXjmS3G3Dimv12AIdsx5sw3w8Lo7XgZt/P5W+dV6hKpwZvE2NoU8Y7JQyjdHBs6DTrOiIpIk4kgsgeXzgT1ti9VNMZrdlzEbgJKi1CrgvHa7tL9/EjxVBQDJBOBeq5VcoFJRVi/u63FJRlk7QXbrqOXvyDwU4O4Y=
|
10
15
|
|
data/README.md
CHANGED
@@ -1,28 +1,34 @@
|
|
1
|
+
# CloudParty
|
2
|
+
HTTParty based library for Cloudflare
|
3
|
+
|
4
|
+
### SonarCloud
|
5
|
+
[](https://sonarcloud.io/dashboard?id=cloud_party)
|
6
|
+
[](https://sonarcloud.io/dashboard?id=cloud_party)
|
7
|
+
|
8
|
+
### Badges
|
1
9
|
[](https://badge.fury.io/rb/cloud_party)
|
2
10
|
[](https://codeclimate.com/github/IotaSpencer/cloud_party)
|
3
11
|
[](https://codeclimate.com/github/IotaSpencer/cloud_party/coverage)
|
4
12
|
[](https://travis-ci.org/IotaSpencer/cloud_party)
|
5
|
-
# CloudParty
|
6
13
|
|
7
|
-
Super thin Ruby wrapper for Cloudflare's V4 API.
|
8
14
|
|
9
15
|
## Installation
|
10
16
|
|
11
17
|
Add this line to your application's Gemfile:
|
12
18
|
|
13
|
-
```
|
19
|
+
```
|
14
20
|
gem 'cloud_party'
|
15
21
|
```
|
16
22
|
|
17
23
|
And then execute:
|
18
24
|
|
19
|
-
```
|
25
|
+
```
|
20
26
|
$ bundle
|
21
27
|
```
|
22
28
|
|
23
29
|
Or install it yourself as:
|
24
30
|
|
25
|
-
```
|
31
|
+
```
|
26
32
|
$ gem install cloud_party
|
27
33
|
```
|
28
34
|
|
@@ -98,7 +104,7 @@ p zone.result
|
|
98
104
|
#### Add(POST) an A Record to the zone
|
99
105
|
|
100
106
|
```ruby
|
101
|
-
dns_record = connection.post('zones
|
107
|
+
dns_record = connection.post('zones/#!{#zone.result[:id]}/dns_records', {
|
102
108
|
type: 'A',
|
103
109
|
name: 'supercooldomain.com',
|
104
110
|
content: '127.0.0.1'
|
@@ -111,7 +117,7 @@ p dns_record.result
|
|
111
117
|
#### DELETE a zone
|
112
118
|
|
113
119
|
```ruby
|
114
|
-
deleted_zone = connection.delete('zones
|
120
|
+
deleted_zone = connection.delete('zones/#!{zone.result[:id]}')
|
115
121
|
|
116
122
|
# Check out the response
|
117
123
|
p deleted_zone
|
@@ -123,7 +129,7 @@ p deleted_zone
|
|
123
129
|
begin
|
124
130
|
connection.get('user')
|
125
131
|
rescue => e
|
126
|
-
# Inspect e.
|
132
|
+
# Inspect e.response for more details
|
127
133
|
p e.response
|
128
134
|
end
|
129
135
|
```
|
@@ -138,7 +144,10 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
138
144
|
|
139
145
|
Bug reports and pull requests are welcome on GitHub at https://github.com/trev/rubyflare. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
|
140
146
|
|
147
|
+
## Legal
|
141
148
|
|
149
|
+
cloud_party, its developers, and other collaborators are not affiliated with nor endorsed by Cloudflare unless explicitly
|
150
|
+
noted
|
142
151
|
## License
|
143
152
|
|
144
153
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
CHANGED
data/cloud_party.gemspec
CHANGED
@@ -4,33 +4,35 @@ lib = File.expand_path('lib', __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require 'cloud_party/version'
|
6
6
|
|
7
|
-
Gem::Specification.new do |
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
spec = Gem::Specification.new do |s|
|
8
|
+
s.name = 'cloud_party'
|
9
|
+
s.version = CloudParty::VERSION
|
10
|
+
s.authors = ['Ken Spencer']
|
11
|
+
s.email = ['me+gems@iotaspencer.me']
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
s.summary = "Thin Ruby wrapper around Cloudflare's V4 API. Based on https://github.com/trev/rubyflare"
|
14
|
+
s.description = "Thin Ruby wrapper around Cloudflare's V4 API for good measure!"
|
15
|
+
s.homepage = 'https://github.com/IotaSpencer/cloud_party'
|
16
|
+
s.license = 'MIT'
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
s.bindir = 'bin'
|
20
|
+
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
|
+
s.require_paths = %w[lib]
|
22
22
|
|
23
|
-
|
24
|
-
spec.add_development_dependency 'bundler', '~> 1.17.2'
|
25
|
-
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.6.0'
|
26
|
-
spec.add_development_dependency 'debase'
|
27
|
-
spec.add_development_dependency 'pry', '~> 0.11.3'
|
28
|
-
spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.1'
|
29
|
-
spec.add_development_dependency 'rspec', '~> 3.5'
|
30
|
-
spec.add_development_dependency 'ruby-debug-ide', '~> 0.7.0.beta7'
|
31
|
-
spec.add_development_dependency 'webmock', '~> 2.1'
|
23
|
+
s.required_ruby_version = '>= 2.3'
|
32
24
|
|
33
|
-
|
34
|
-
|
35
|
-
|
25
|
+
s.add_development_dependency 'bundler', '~> 1.17.2'
|
26
|
+
s.add_development_dependency 'codeclimate-test-reporter', '~> 0.6.0'
|
27
|
+
s.add_development_dependency 'debase'
|
28
|
+
s.add_development_dependency 'minitest'
|
29
|
+
s.add_development_dependency 'minitest-reporters', '>= 0.5.0'
|
30
|
+
s.add_development_dependency 'pry', '~> 0.11.3'
|
31
|
+
s.add_development_dependency 'rake', '~> 12.3', '>= 12.3.1'
|
32
|
+
s.add_development_dependency 'ruby-debug-ide', '~> 0.7.0.beta7'
|
33
|
+
s.add_development_dependency 'webmock', '~> 2.1'
|
34
|
+
|
35
|
+
s.add_runtime_dependency 'app_configuration'
|
36
|
+
s.add_runtime_dependency 'httparty', '~> 0.16.2'
|
36
37
|
end
|
38
|
+
# spec
|
data/lib/cloud_party/context.rb
CHANGED
@@ -3,13 +3,11 @@
|
|
3
3
|
require 'httparty'
|
4
4
|
require 'cloud_party/config'
|
5
5
|
module CloudParty
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
def self.inherited(subclass)
|
12
|
-
# I don't know yet
|
6
|
+
module Context
|
7
|
+
def self.included(base)
|
8
|
+
base.define_singleton_method(:cfg) do
|
9
|
+
CloudParty::Config.new
|
10
|
+
end
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
@@ -1,61 +1,35 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module CloudParty
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
class APIError < StandardError
|
14
|
-
attr_reader(:response)
|
15
|
-
def initialize(message, response)
|
16
|
-
super(message)
|
17
|
-
@response = response
|
18
|
-
end
|
19
|
-
end
|
20
|
-
class RequestError < StandardError
|
21
|
-
def initialize(obj:, method:, code:, response:, endpoint:)
|
22
|
-
@obj = obj
|
23
|
-
@method = method
|
24
|
-
@endpoint = endpoint
|
25
|
-
@code = code
|
26
|
-
@response = response
|
27
|
-
end
|
28
|
-
|
29
|
-
def to_s
|
30
|
-
[error_string.squish, extra_string].join("\n")
|
4
|
+
module Errors
|
5
|
+
class APIError < StandardError
|
6
|
+
attr_reader(:response)
|
7
|
+
def initialize(message, response)
|
8
|
+
super(message)
|
9
|
+
@response = response
|
10
|
+
end
|
31
11
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
Method Verb: #{@method}
|
55
|
-
Endpoint: #{@endpoint}
|
56
|
-
HTTP Status Code: #{@code}
|
57
|
-
Response Body: #{@response.body}
|
58
|
-
HEREDOC
|
12
|
+
class RequestError < StandardError
|
13
|
+
def initialize(obj:, method:, code:, response:, endpoint:)
|
14
|
+
@obj = obj
|
15
|
+
@method = method
|
16
|
+
@endpoint = endpoint
|
17
|
+
@code = code
|
18
|
+
@response = response
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
[error_string.squish, extra_string].join("\n")
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.extra_string
|
26
|
+
# This method should be overridden
|
27
|
+
end
|
28
|
+
|
29
|
+
# override error_string to provide your own error_string
|
30
|
+
def self.error_string
|
31
|
+
# This method should be overridden
|
32
|
+
end
|
59
33
|
end
|
60
34
|
end
|
61
35
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/exception'
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
# Request was invalid
|
7
|
+
class BadRequestError < RequestError
|
8
|
+
def initialize(obj:, method:, response:, endpoint: nil, code: 400)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.error_string
|
13
|
+
<<~HEREDOC
|
14
|
+
There was a '400 -- Bad Request' error.
|
15
|
+
HEREDOC
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.extra_string
|
19
|
+
<<~HEREDOC
|
20
|
+
VERB: #{@method}
|
21
|
+
|
22
|
+
HEREDOC
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/exception'
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
# Page/Endpoint doesn't exist
|
7
|
+
class ForbiddenError < RequestError
|
8
|
+
def initialize(obj:, method:, response:, endpoint: nil, code: 403)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.error_string
|
13
|
+
<<~HEREDOC
|
14
|
+
There was a '401 -- Unauthorized' error.
|
15
|
+
HEREDOC
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.extra_string
|
19
|
+
<<~HEREDOC
|
20
|
+
VERB: #{@method}
|
21
|
+
|
22
|
+
HEREDOC
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/exception'
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
# Page/Endpoint doesn't exist
|
7
|
+
class MethodNotAllowedError < RequestError
|
8
|
+
def initialize(obj:, method:, response:, endpoint: nil, code: 405)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.error_string
|
13
|
+
<<~HEREDOC
|
14
|
+
There was a '429 -- Too many requests' error.
|
15
|
+
You've hit the rate limit of Cloudflare
|
16
|
+
HEREDOC
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.extra_string
|
20
|
+
<<~HEREDOC
|
21
|
+
VERB: #{@method}
|
22
|
+
|
23
|
+
HEREDOC
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/exception'
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
# Page/Endpoint doesn't exist
|
7
|
+
class NotFoundError < RequestError
|
8
|
+
def initialize(obj:, method:, response:, endpoint: nil, code: 404)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.error_string
|
13
|
+
<<~HEREDOC
|
14
|
+
There was a '404 -- Not Found' error.
|
15
|
+
HEREDOC
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.extra_string
|
19
|
+
<<~HEREDOC
|
20
|
+
VERB: #{@method}
|
21
|
+
|
22
|
+
HEREDOC
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/exception'
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
# Page/Endpoint doesn't exist
|
7
|
+
class TooManyRequestsError < RequestError
|
8
|
+
def initialize(obj:, method:, response:, endpoint: nil, code: 429)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.error_string
|
13
|
+
<<~HEREDOC
|
14
|
+
There was a '429 -- Too many requests' error.
|
15
|
+
You've hit the rate limit of Cloudflare
|
16
|
+
HEREDOC
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.extra_string
|
20
|
+
<<~HEREDOC
|
21
|
+
VERB: #{@method}
|
22
|
+
|
23
|
+
HEREDOC
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/exception'
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
# Page/Endpoint doesn't exist
|
7
|
+
class UnauthorizedError < RequestError
|
8
|
+
def initialize(obj:, method:, response:, endpoint: nil, code: 401)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.error_string
|
13
|
+
<<~HEREDOC
|
14
|
+
There was a '401 -- Unauthorized' error.
|
15
|
+
HEREDOC
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.extra_string
|
19
|
+
<<~HEREDOC
|
20
|
+
VERB: #{@method}
|
21
|
+
|
22
|
+
HEREDOC
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/exception'
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
# Page/Endpoint doesn't exist
|
7
|
+
class UnsupportedMediaTypeError < RequestError
|
8
|
+
def initialize(obj:, method:, response:, endpoint: nil, code: 415)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.error_string
|
13
|
+
<<~HEREDOC
|
14
|
+
There was a '429 -- Too many requests' error.
|
15
|
+
You've hit the rate limit of Cloudflare
|
16
|
+
HEREDOC
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.extra_string
|
20
|
+
<<~HEREDOC
|
21
|
+
VERB: #{@method}
|
22
|
+
|
23
|
+
HEREDOC
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module CloudParty
|
2
|
+
module Errors
|
3
|
+
##
|
4
|
+
# 400
|
5
|
+
autoload :BadRequestError, 'cloud_party/exceptions/request_errors/bad_request_error'
|
6
|
+
##
|
7
|
+
# 401
|
8
|
+
autoload :UnauthorizedError, 'cloud_party/exceptions/request_errors/unauthorized_error'
|
9
|
+
##
|
10
|
+
# 403
|
11
|
+
autoload :ForbiddenError, 'cloud_party/exceptions/request_errors/forbidden_error'
|
12
|
+
##
|
13
|
+
# 404
|
14
|
+
autoload :NotFoundError, 'cloud_party/exceptions/request_errors/not_found_error'
|
15
|
+
##
|
16
|
+
# 405
|
17
|
+
autoload :MethodNotAllowedError, 'cloud_party/exceptions/request_errors/method_not_allowed_error'
|
18
|
+
##
|
19
|
+
# 415
|
20
|
+
autoload :UnsupportedMediaTypeError, 'cloud_party/exceptions/request_errors/unsupported_media_type_error'
|
21
|
+
##
|
22
|
+
# 429
|
23
|
+
autoload :TooManyRequestsError, 'cloud_party/exceptions/request_errors/too_many_requests_error'
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module CloudParty
|
4
|
+
module Errors
|
5
|
+
##
|
6
|
+
# UnRecognizedEndpointError
|
7
|
+
#
|
8
|
+
# When an endpoint is not recognized by the gem logic
|
9
|
+
class UnRecognizedEndpointError < StandardError
|
10
|
+
attr_reader :endpoint, :klass
|
11
|
+
|
12
|
+
def initialize(endpoint, klass)
|
13
|
+
super("'#{endpoint}' is not a recognized endpoint for class #{klass}")
|
14
|
+
@endpoint = endpoint
|
15
|
+
@klass = klass
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
##
|
3
|
+
# Raised when the result's `body` is not a recognized class
|
4
|
+
module CloudParty
|
5
|
+
module Errors
|
6
|
+
class UnRecognizedResultTypeError < StandardError
|
7
|
+
attr_reader :result_class
|
8
|
+
|
9
|
+
def initialize(result_object)
|
10
|
+
@result_class = result_object.class
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,6 +1,47 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'cloud_party/exception'
|
4
|
+
require 'cloud_party/exceptions/request_errors'
|
4
5
|
module CloudParty
|
5
|
-
|
6
|
+
module Errors
|
7
|
+
|
8
|
+
##
|
9
|
+
# ### ConnectionError
|
10
|
+
class ConnectionError < StandardError
|
11
|
+
attr_reader :response
|
12
|
+
|
13
|
+
def initialize(message, response)
|
14
|
+
super(message)
|
15
|
+
@response = response
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class UnknownError < RequestError
|
20
|
+
def initialize(obj:, method:, response:, endpoint: nil, code:)
|
21
|
+
super
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.error_string
|
25
|
+
<<~HEREDOC
|
26
|
+
An error with the request has occurred, please make
|
27
|
+
sure the method verb, endpoint, and credentials are
|
28
|
+
correct for this request.
|
29
|
+
HEREDOC
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.extra_string
|
33
|
+
<<~HEREDOC
|
34
|
+
Credentials Context: #{@obj&.class&.cfg}
|
35
|
+
|
36
|
+
Method Verb: #{@method}
|
37
|
+
Endpoint: #{@endpoint}
|
38
|
+
HTTP Status Code: #{@code}
|
39
|
+
Response Body: #{@response.body}
|
40
|
+
HEREDOC
|
41
|
+
end
|
42
|
+
end
|
43
|
+
autoload :UnRecognizedResultTypeError, 'cloud_party/exceptions/un_recognized_result_type_error'
|
44
|
+
autoload :UnRecognizedEndpointError, 'cloud_party/exceptions/un_recognized_endpoint_error'
|
45
|
+
|
46
|
+
end
|
6
47
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cloud_party/context'
|
4
|
+
require 'cloud_party/responses'
|
5
|
+
module CloudParty
|
6
|
+
module Nodes
|
7
|
+
class Accounts
|
8
|
+
include CloudParty::Context
|
9
|
+
include HTTParty
|
10
|
+
base_uri 'api.cloudflare.com:443/client/v4'
|
11
|
+
headers 'X-Auth-Email' => cfg.email,
|
12
|
+
'X-Auth-Key' => cfg.api_key,
|
13
|
+
'Content-Type' => 'application/json',
|
14
|
+
'User-Agent' => "CloudParty/#{CloudParty::VERSION}"
|
15
|
+
|
16
|
+
def initialize(options = nil)
|
17
|
+
super()
|
18
|
+
@options = options
|
19
|
+
end
|
20
|
+
|
21
|
+
def list
|
22
|
+
CloudParty::Responses::Accounts.new(:get, '/accounts', self.class.get('/accounts'), @options)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|