glare 0.1.2 → 0.2.0
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/lib/glare.rb +1 -0
- data/lib/glare/api_response.rb +9 -1
- data/lib/glare/cf_dns_records.rb +5 -4
- data/lib/glare/client.rb +5 -4
- data/lib/glare/domain/cf_zones.rb +5 -4
- data/lib/glare/domain/record.rb +1 -1
- data/lib/glare/domain/zone.rb +1 -1
- data/lib/glare/errors.rb +6 -0
- data/lib/glare/version.rb +1 -1
- data/spec/resolve_domain_spec.rb +16 -3
- data/spec/units/glare_spec.rb +3 -3
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7176b88b94cbb8eb1635f374010d3781c9abcb92
|
4
|
+
data.tar.gz: 23dfafaf1b6c0fd137615c3bf6671a43f9c28ec9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b48e09275b67e1246760bec68ec00a55e0ee59034bc6a09501e814c792ee532321170a3fdbda25d16c41c139f0802c1d6e537fe20fdf85259f63a1549fcdc5b7
|
7
|
+
data.tar.gz: 93b4c521285065f59d378dd0cc6713ba65ed3b724895097975a464b51b83c2e35aa5448a11d1f748f36500daff52c8e7161a9075837e29bb4356c185aa761bbc
|
data/.gitignore
CHANGED
data/lib/glare.rb
CHANGED
data/lib/glare/api_response.rb
CHANGED
@@ -8,11 +8,19 @@ module Glare
|
|
8
8
|
content['result']
|
9
9
|
end
|
10
10
|
|
11
|
+
def valid!
|
12
|
+
raise Glare::Errors::ApiError unless success?
|
13
|
+
self
|
14
|
+
end
|
15
|
+
|
11
16
|
private
|
12
17
|
|
18
|
+
def success?
|
19
|
+
content['success']
|
20
|
+
end
|
21
|
+
|
13
22
|
def content
|
14
23
|
@response.content
|
15
24
|
end
|
16
25
|
end
|
17
|
-
private_constant :ApiResponse
|
18
26
|
end
|
data/lib/glare/cf_dns_records.rb
CHANGED
@@ -11,9 +11,8 @@ module Glare
|
|
11
11
|
|
12
12
|
class CfDnsRecords
|
13
13
|
class << self
|
14
|
-
def from_result(
|
15
|
-
|
16
|
-
result = response.result
|
14
|
+
def from_result(api_response)
|
15
|
+
result = api_response.result
|
17
16
|
|
18
17
|
records = result.map do |item|
|
19
18
|
CfDnsRecord.new(
|
@@ -37,7 +36,9 @@ module Glare
|
|
37
36
|
end
|
38
37
|
|
39
38
|
def to_update(desired_records)
|
40
|
-
|
39
|
+
records_to_update = desired_records.count
|
40
|
+
records = @records.first(records_to_update)
|
41
|
+
records.reject do |record|
|
41
42
|
desired_records.any? { |r| r.content == record.content }
|
42
43
|
end
|
43
44
|
end
|
data/lib/glare/client.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'jsonclient'
|
2
|
+
require 'glare/api_response'
|
2
3
|
|
3
4
|
module Glare
|
4
5
|
class Client
|
@@ -14,19 +15,19 @@ module Glare
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def get(query, params)
|
17
|
-
@http.get(BASE_URL + query, params, @headers)
|
18
|
+
ApiResponse.new(@http.get(BASE_URL + query, params, @headers)).valid!
|
18
19
|
end
|
19
20
|
|
20
21
|
def post(query, data)
|
21
|
-
@http.post(BASE_URL + query, data, @headers)
|
22
|
+
ApiResponse.new(@http.post(BASE_URL + query, data, @headers)).valid!
|
22
23
|
end
|
23
24
|
|
24
25
|
def put(query, data)
|
25
|
-
@http.put(BASE_URL + query, data, @headers)
|
26
|
+
ApiResponse.new(@http.put(BASE_URL + query, data, @headers)).valid!
|
26
27
|
end
|
27
28
|
|
28
29
|
def delete(query, params=nil)
|
29
|
-
@http.delete(BASE_URL + query, params, @headers)
|
30
|
+
ApiResponse.new(@http.delete(BASE_URL + query, params, @headers)).valid!
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'glare/domain/cf_zones'
|
2
|
+
require 'glare/errors'
|
2
3
|
|
3
4
|
module Glare
|
4
5
|
class Domain
|
5
6
|
class CfZones
|
6
7
|
def self.from_result(api_response)
|
7
|
-
|
8
|
-
result = response.result
|
8
|
+
result = api_response.result
|
9
9
|
|
10
10
|
zones = result.map do |item|
|
11
11
|
CfZone.new(
|
@@ -21,8 +21,9 @@ module Glare
|
|
21
21
|
@zones = zones
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
25
|
-
@zones.
|
24
|
+
def first_id
|
25
|
+
raise ::Glare::Errors::NotExistingZoneError.new if @zones.empty?
|
26
|
+
@zones.first.id
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
data/lib/glare/domain/record.rb
CHANGED
@@ -26,8 +26,8 @@ module Glare
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def update(zone_id, dns_records, existing_records)
|
29
|
-
update_current_records(zone_id, dns_records, existing_records)
|
30
29
|
delete_uneeded_records(zone_id, dns_records, existing_records)
|
30
|
+
update_current_records(zone_id, dns_records, existing_records)
|
31
31
|
create_new_records(zone_id, dns_records, existing_records)
|
32
32
|
end
|
33
33
|
|
data/lib/glare/domain/zone.rb
CHANGED
data/lib/glare/errors.rb
ADDED
data/lib/glare/version.rb
CHANGED
data/spec/resolve_domain_spec.rb
CHANGED
@@ -5,13 +5,26 @@ RSpec.describe 'Resolve domain' do
|
|
5
5
|
let(:domain) { 'cname.flywire.cc' }
|
6
6
|
let(:destination) { ['peertransfer.me'] }
|
7
7
|
let(:type) { 'CNAME' }
|
8
|
-
before do
|
9
|
-
register_domain(domain, destination)
|
10
|
-
end
|
11
8
|
|
12
9
|
it 'resolves to right destination' do
|
10
|
+
register_domain(domain, destination)
|
11
|
+
|
13
12
|
expect(resolve(domain)).to eq(destination)
|
14
13
|
end
|
14
|
+
|
15
|
+
it 'raises an exception if domain does not exist in account' do
|
16
|
+
register_domain(domain, destination)
|
17
|
+
|
18
|
+
expect do
|
19
|
+
resolve('error.ojete.cc')
|
20
|
+
end.to raise_error(Glare::Errors::NotExistingZoneError)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'raises an exception if api returns error' do
|
24
|
+
expect do
|
25
|
+
register_domain('error.flywire.cc', '1.1.1.1')
|
26
|
+
end.to raise_error(Glare::Errors::ApiError)
|
27
|
+
end
|
15
28
|
end
|
16
29
|
|
17
30
|
context 'when a domain contains more than one destination' do
|
data/spec/units/glare_spec.rb
CHANGED
@@ -8,9 +8,9 @@ RSpec.describe Glare do
|
|
8
8
|
allow(Glare::Client).to receive(:new).and_return(client)
|
9
9
|
end
|
10
10
|
let(:client) { spy(Glare::Client) }
|
11
|
-
let(:zone_list) { load_fixture('list_zone') }
|
12
|
-
let(:empty_result) { load_fixture('empty_result') }
|
13
|
-
let(:wadus_records) { load_fixture('wadus_records') }
|
11
|
+
let(:zone_list) { Glare::ApiResponse.new(load_fixture('list_zone')) }
|
12
|
+
let(:empty_result) { Glare::ApiResponse.new(load_fixture('empty_result')) }
|
13
|
+
let(:wadus_records) { Glare::ApiResponse.new(load_fixture('wadus_records')) }
|
14
14
|
|
15
15
|
describe '.resolve' do
|
16
16
|
it 'resolves a fqdn' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glare
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Luis Salas
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- lib/glare/domain/cf_zones.rb
|
106
106
|
- lib/glare/domain/record.rb
|
107
107
|
- lib/glare/domain/zone.rb
|
108
|
+
- lib/glare/errors.rb
|
108
109
|
- lib/glare/version.rb
|
109
110
|
- spec/delete_domain_spec.rb
|
110
111
|
- spec/fixtures/empty_result.json
|
@@ -133,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
134
|
version: '0'
|
134
135
|
requirements: []
|
135
136
|
rubyforge_project:
|
136
|
-
rubygems_version: 2.
|
137
|
+
rubygems_version: 2.5.1
|
137
138
|
signing_key:
|
138
139
|
specification_version: 4
|
139
140
|
summary: API client for CloudFlare v4 API
|