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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5f191a543603fccd5d3f0b0c8de96a5f91cd657
4
- data.tar.gz: 25c831074962b9946ccde5958252820987120087
3
+ metadata.gz: 7176b88b94cbb8eb1635f374010d3781c9abcb92
4
+ data.tar.gz: 23dfafaf1b6c0fd137615c3bf6671a43f9c28ec9
5
5
  SHA512:
6
- metadata.gz: 505288e7e9ec1ea1ab83d81034962e7eeb77b29ecf29a6c681448da5a806a483287b3f4c0e7ebe4246a31b9c781493fe48957254d7f4f2001d89d527d5636519
7
- data.tar.gz: 053d5b8a1b9a195eae1ccc02c99879f084e54b3351b00c50e5ab966b561a8d59c2c46ed1417120b5e41cbddee3e8d6f376bf499ed0bf5ae42e1bc64b5742d311
6
+ metadata.gz: b48e09275b67e1246760bec68ec00a55e0ee59034bc6a09501e814c792ee532321170a3fdbda25d16c41c139f0802c1d6e537fe20fdf85259f63a1549fcdc5b7
7
+ data.tar.gz: 93b4c521285065f59d378dd0cc6713ba65ed3b724895097975a464b51b83c2e35aa5448a11d1f748f36500daff52c8e7161a9075837e29bb4356c185aa761bbc
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
  /tmp/
10
10
  .envrc
11
11
  /spec/examples.txt
12
+ /.ruby-version
data/lib/glare.rb CHANGED
@@ -6,6 +6,7 @@ require 'glare/domain'
6
6
  require 'glare/api_response'
7
7
  require 'glare/dns_record'
8
8
  require 'glare/cf_dns_records'
9
+ require 'glare/errors'
9
10
 
10
11
  module Glare
11
12
  class << self
@@ -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
@@ -11,9 +11,8 @@ module Glare
11
11
 
12
12
  class CfDnsRecords
13
13
  class << self
14
- def from_result(api_result)
15
- response = ApiResponse.new(api_result)
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
- @records.reject do |record|
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
- response = ApiResponse.new(api_response)
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 first
25
- @zones.first
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
 
@@ -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
 
@@ -16,7 +16,7 @@ module Glare
16
16
  def id
17
17
  return @id if @id
18
18
  zone_search = @client.get('/zones', name: registered_domain)
19
- @id = CfZones.from_result(zone_search).first.id
19
+ @id = CfZones.from_result(zone_search).first_id
20
20
  end
21
21
 
22
22
  private
@@ -0,0 +1,6 @@
1
+ module Glare
2
+ module Errors
3
+ class NotExistingZoneError < StandardError; end
4
+ class ApiError < StandardError; end
5
+ end
6
+ end
data/lib/glare/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Glare
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -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
@@ -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.1.2
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-07-13 00:00:00.000000000 Z
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.4.5
137
+ rubygems_version: 2.5.1
137
138
  signing_key:
138
139
  specification_version: 4
139
140
  summary: API client for CloudFlare v4 API