glare 0.4.0 → 0.6.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
- SHA1:
3
- metadata.gz: a704d9f5af8df8ee5a03f7e2c73ecdcca75eabc2
4
- data.tar.gz: a4e53971ad770c1239f06bddb568b366e4cfb736
2
+ SHA256:
3
+ metadata.gz: 27e49ade7bb6778f14de878da4ad2bbc90fdf192542682086c22888805d957fe
4
+ data.tar.gz: d2f684300c0acb3652dccbf0956b28a49a82b016f8cbb0864c48dbc33a2fcba4
5
5
  SHA512:
6
- metadata.gz: d69f25042bf3de9da4028ba361ad1ab7deaf82f651c1bbf671c59d71fb8931cc831d73bb3f55b3f580ad08d9db58969e408bfcda2d41065160fee1d64d495d04
7
- data.tar.gz: eae5c856c6dd64a9f4ae4e7e21f0fdea8aa082beff6a4baf73d7036c2338780353f42ccb27767fc82696a4fc69f2051fff523b4fc4aaab5425186ac55a24050d
6
+ metadata.gz: b0b1b129746cdedf5bd3ac073345396a746e162103802231f3363bcecc39da13ab249abaccae66037bc5607f30570b5538e87760020b0b7f739654a111d75d32
7
+ data.tar.gz: be5bd9e5ebf93bc27ce1e9966ec95f9fd766eae8c9620ec12f0e16f1ed1935342cccd3f49ccc3a11368e78dd49323fc692b654756bc0b69fac2c12f9d56f45d3
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.test_files = Dir['spec/**/*.{rb,json}']
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 1.9'
25
- spec.add_development_dependency 'rake', '~> 11.0'
26
- spec.add_development_dependency 'rspec', '~> 3.4'
24
+ spec.add_development_dependency 'bundler', '>= 1.9'
25
+ spec.add_development_dependency 'rake', '~> 12.3'
26
+ spec.add_development_dependency 'rspec', '~> 3.7'
27
27
 
28
- spec.add_dependency 'public_suffix'
29
- spec.add_dependency 'httpclient'
28
+ spec.add_dependency 'public_suffix', '>= 3.0.2', '< 4.0'
29
+ spec.add_dependency 'httpclient', '>= 2.8.3', '< 3.0'
30
30
  end
@@ -10,9 +10,9 @@ require 'glare/errors'
10
10
 
11
11
  module Glare
12
12
  class << self
13
- def register(fqdn, destination, type)
13
+ def register(fqdn, destination, type, proxied = false)
14
14
  client = build_client
15
- Domain.new(client).register(fqdn, destination, type)
15
+ Domain.new(client).register(fqdn, destination, type, proxied)
16
16
  end
17
17
 
18
18
  def resolve(fqdn, type)
@@ -1,29 +1,30 @@
1
1
  module Glare
2
2
  class CfDnsRecord
3
- include Comparable
4
-
5
- def initialize(id:, name:, type:, content:)
3
+ def initialize(id:, name:, type:, content:, proxied: false)
6
4
  @id = id
7
5
  @name = name
8
6
  @type = type
9
7
  @content = content
8
+ @proxied = proxied
10
9
  end
11
10
 
12
- def <=>(cf_dns_record)
13
- @type <=> cf_dns_record.type &&
14
- @name <=> cf_dns_record.name &&
15
- @content <=> cf_dns_record.content
11
+ def ==(cf_dns_record)
12
+ @type == cf_dns_record.type &&
13
+ @name == cf_dns_record.name &&
14
+ @content == cf_dns_record.content &&
15
+ @proxied == cf_dns_record.proxied
16
16
  end
17
17
 
18
18
  def to_h
19
19
  {
20
20
  type: @type,
21
21
  name: @name,
22
- content: @content
22
+ content: @content,
23
+ proxied: @proxied
23
24
  }
24
25
  end
25
26
 
26
27
  attr_reader :id, :name, :type
27
- attr_accessor :content
28
+ attr_accessor :content, :proxied
28
29
  end
29
30
  end
@@ -12,7 +12,8 @@ module Glare
12
12
  id: item['id'],
13
13
  name: item['name'],
14
14
  type: item['type'],
15
- content: item['content']
15
+ content: item['content'],
16
+ proxied: item['proxied']
16
17
  )
17
18
  end
18
19
 
@@ -28,16 +28,14 @@ module Glare
28
28
  end
29
29
 
30
30
  class Operation
31
- include Comparable
32
-
33
31
  def initialize(record, action)
34
32
  @record = record.dup
35
33
  @action = action
36
34
  end
37
35
 
38
- def <=>(operation)
39
- @record <=> operation.record &&
40
- @action <=> operation.action
36
+ def ==(operation)
37
+ @record == operation.record &&
38
+ @action == operation.action
41
39
  end
42
40
 
43
41
  attr_reader :action, :record
@@ -1,27 +1,28 @@
1
1
  module Glare
2
2
  class DnsRecord
3
- include Comparable
4
-
5
- def initialize(name:, type:, content:)
3
+ def initialize(name:, type:, content:, proxied: false)
6
4
  @name = name
7
5
  @type = type
8
6
  @content = content
7
+ @proxied = proxied
9
8
  end
10
9
 
11
10
  def to_h
12
11
  {
13
12
  type: @type,
14
13
  name: @name,
15
- content: @content
14
+ content: @content,
15
+ proxied: @proxied
16
16
  }
17
17
  end
18
18
 
19
- def <=>(dns_record)
20
- @type <=> dns_record.type &&
21
- @name <=> dns_record.name &&
22
- @content <=> dns_record.content
19
+ def ==(dns_record)
20
+ @type == dns_record.type &&
21
+ @name == dns_record.name &&
22
+ @content == dns_record.content &&
23
+ @proxied == dns_record.proxied
23
24
  end
24
25
 
25
- attr_reader :content, :type, :name
26
+ attr_reader :content, :type, :name, :proxied
26
27
  end
27
28
  end
@@ -7,9 +7,9 @@ module Glare
7
7
  @client = client
8
8
  end
9
9
 
10
- def register(fqdn, destinations, type)
10
+ def register(fqdn, destinations, type, proxied = false)
11
11
  dns_records = Array(destinations).map do |destination|
12
- DnsRecord.new(type: type, name: fqdn, content: destination)
12
+ DnsRecord.new(type: type, name: fqdn, content: destination, proxied: proxied)
13
13
  end
14
14
 
15
15
  zone = Zone.new(@client, fqdn)
@@ -2,7 +2,7 @@ module Glare
2
2
  class Domain
3
3
  class Record
4
4
  class << self
5
- def register(client, zone, dns_records)
5
+ def register(client, zone, dns_records, proxied = false)
6
6
  @client = client
7
7
  existing_records = zone.records(dns_records.first.type)
8
8
  zone_id = zone.id
@@ -1,3 +1,3 @@
1
1
  module Glare
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -1,8 +1,8 @@
1
1
  require 'glare'
2
2
 
3
- RSpec.describe 'delete domain' do
3
+ RSpec.describe 'delete domain', integration: true do
4
4
  context 'when a domain is registered' do
5
- let(:domain) { 'a.flywire.cc' }
5
+ let(:domain) { 'a.flywire.com.cn' }
6
6
  let(:type) { 'A' }
7
7
  let(:destination) { ['1.2.3.5', '6.7.8.9'] }
8
8
  before do
@@ -1,8 +1,8 @@
1
1
  require 'glare'
2
2
 
3
- RSpec.describe 'Resolve domain' do
3
+ RSpec.describe 'Resolve domain', integration: true do
4
4
  context 'when a domain is registered' do
5
- let(:domain) { 'cname.flywire.cc' }
5
+ let(:domain) { 'cname.flywire.com.cn' }
6
6
  let(:destination) { ['peertransfer.me'] }
7
7
  let(:type) { 'CNAME' }
8
8
 
@@ -22,13 +22,13 @@ RSpec.describe 'Resolve domain' do
22
22
 
23
23
  it 'raises an exception if api returns error' do
24
24
  expect do
25
- register_domain('error.flywire.cc', '1.1.1.1')
25
+ register_domain('error.flywire.com.cn', '1.1.1.1')
26
26
  end.to raise_error(Glare::Errors::ApiError)
27
27
  end
28
28
  end
29
29
 
30
30
  context 'when a domain contains more than one destination' do
31
- let(:domain) { 'a.flywire.cc' }
31
+ let(:domain) { 'a.flywire.com.cn' }
32
32
  let(:type) { 'A' }
33
33
  before do
34
34
  register_domain(domain, destination)
@@ -92,7 +92,7 @@ RSpec.describe Glare do
92
92
 
93
93
  expect(client).to have_received(:post).with(
94
94
  '/zones/9de4eb694c380d79845d35cd939cc7a7/dns_records',
95
- type: 'CNAME', name: 'not-exist.example.com', content: 'a_destination'
95
+ type: 'CNAME', name: 'not-exist.example.com', content: 'a_destination', proxied: false
96
96
  )
97
97
  end
98
98
 
@@ -109,12 +109,12 @@ RSpec.describe Glare do
109
109
 
110
110
  expect(client).to have_received(:post).with(
111
111
  '/zones/9de4eb694c380d79845d35cd939cc7a7/dns_records',
112
- type: 'CNAME', name: 'not-exist.example.com', content: 'a_destination'
112
+ type: 'CNAME', name: 'not-exist.example.com', content: 'a_destination', proxied: false
113
113
  )
114
114
 
115
115
  expect(client).to have_received(:post).with(
116
116
  '/zones/9de4eb694c380d79845d35cd939cc7a7/dns_records',
117
- type: 'CNAME', name: 'not-exist.example.com', content: 'another_destination'
117
+ type: 'CNAME', name: 'not-exist.example.com', content: 'another_destination', proxied: false
118
118
  )
119
119
  end
120
120
 
@@ -155,7 +155,7 @@ RSpec.describe Glare do
155
155
 
156
156
  expect(client).to have_received(:put).with(
157
157
  '/zones/9de4eb694c380d79845d35cd939cc7a7/dns_records/a1f984afe5544840505494298f54c33e',
158
- type: 'CNAME', name: 'wadus.example.com', content: 'a_destination.com'
158
+ type: 'CNAME', name: 'wadus.example.com', content: 'a_destination.com', proxied: false
159
159
  )
160
160
 
161
161
  expect(client).not_to have_received(:put).with(
@@ -174,12 +174,12 @@ RSpec.describe Glare do
174
174
 
175
175
  expect(client).to have_received(:put).with(
176
176
  any_args,
177
- type: 'CNAME', name: 'wadus.example.com', content: 'a_destination.com'
177
+ type: 'CNAME', name: 'wadus.example.com', content: 'a_destination.com', proxied: false
178
178
  )
179
179
 
180
180
  expect(client).to have_received(:put).with(
181
181
  any_args,
182
- type: 'CNAME', name: 'wadus.example.com', content: 'yet_another_destination.com'
182
+ type: 'CNAME', name: 'wadus.example.com', content: 'yet_another_destination.com', proxied: false
183
183
  )
184
184
  end
185
185
  end
@@ -194,7 +194,7 @@ RSpec.describe Glare do
194
194
 
195
195
  expect(client).to have_received(:put).with(
196
196
  any_args,
197
- { type: 'CNAME', name: 'wadus.example.com', content: 'a_destination.com' }
197
+ { type: 'CNAME', name: 'wadus.example.com', content: 'a_destination.com', proxied: false }
198
198
  )
199
199
 
200
200
  expect(client).to have_received(:delete).once
@@ -215,7 +215,7 @@ RSpec.describe Glare do
215
215
 
216
216
  expect(client).to have_received(:post).with(
217
217
  '/zones/9de4eb694c380d79845d35cd939cc7a7/dns_records',
218
- type: 'CNAME', name: 'wadus.example.com', content: 'a_third_destination.com'
218
+ type: 'CNAME', name: 'wadus.example.com', content: 'a_third_destination.com', proxied: false
219
219
  )
220
220
  end
221
221
  end
@@ -21,7 +21,7 @@ RSpec.describe Glare::CfDnsRecords::Updater do
21
21
  expect(operations.count).to be_zero
22
22
  end
23
23
 
24
- it 'can detects new records to add when there are some records' do
24
+ it 'can detect new records to add when there are some records' do
25
25
  current_record = existing_record(content: '1.2.3.4')
26
26
  current_records = Glare::CfDnsRecords.new([current_record])
27
27
 
@@ -44,10 +44,9 @@ RSpec.describe Glare::CfDnsRecords::Updater do
44
44
  new_records = [update_record, new_record].shuffle
45
45
 
46
46
  operations = Glare::CfDnsRecords::Updater.new(current_records, new_records).calculate
47
- add_operation = Glare::CfDnsRecords::Updater::Operation.new(new_record, :add)
47
+ add_operation = Glare::CfDnsRecords::Updater::Operation.new(new_records.last, :add)
48
48
 
49
- current_record.content = '1.2.3.6'
50
- update_operation = Glare::CfDnsRecords::Updater::Operation.new(current_record, :update)
49
+ update_operation = Glare::CfDnsRecords::Updater::Operation.new(new_records.first, :update)
51
50
 
52
51
  expect(operations.insertions).to eq([add_operation])
53
52
  expect(operations.updates).to eq([update_operation])
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.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Luis Salas
@@ -9,20 +9,20 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-11-30 00:00:00.000000000 Z
12
+ date: 2019-08-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.9'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.9'
28
28
  - !ruby/object:Gem::Dependency
@@ -31,56 +31,68 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '11.0'
34
+ version: '12.3'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '11.0'
41
+ version: '12.3'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '3.4'
48
+ version: '3.7'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '3.4'
55
+ version: '3.7'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: public_suffix
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: 3.0.2
63
+ - - "<"
64
+ - !ruby/object:Gem::Version
65
+ version: '4.0'
63
66
  type: :runtime
64
67
  prerelease: false
65
68
  version_requirements: !ruby/object:Gem::Requirement
66
69
  requirements:
67
70
  - - ">="
68
71
  - !ruby/object:Gem::Version
69
- version: '0'
72
+ version: 3.0.2
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
70
76
  - !ruby/object:Gem::Dependency
71
77
  name: httpclient
72
78
  requirement: !ruby/object:Gem::Requirement
73
79
  requirements:
74
80
  - - ">="
75
81
  - !ruby/object:Gem::Version
76
- version: '0'
82
+ version: 2.8.3
83
+ - - "<"
84
+ - !ruby/object:Gem::Version
85
+ version: '3.0'
77
86
  type: :runtime
78
87
  prerelease: false
79
88
  version_requirements: !ruby/object:Gem::Requirement
80
89
  requirements:
81
90
  - - ">="
82
91
  - !ruby/object:Gem::Version
83
- version: '0'
92
+ version: 2.8.3
93
+ - - "<"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.0'
84
96
  description:
85
97
  email:
86
98
  - josacar@users.noreply.github.com
@@ -140,19 +152,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
152
  version: '0'
141
153
  requirements: []
142
154
  rubyforge_project:
143
- rubygems_version: 2.5.1
155
+ rubygems_version: 2.7.7
144
156
  signing_key:
145
157
  specification_version: 4
146
158
  summary: API client for CloudFlare v4 API
147
159
  test_files:
160
+ - spec/units/operations_spec.rb
148
161
  - spec/units/api_response_spec.rb
149
162
  - spec/units/glare_spec.rb
150
- - spec/units/operations_spec.rb
151
- - spec/delete_domain_spec.rb
152
163
  - spec/resolve_domain_spec.rb
153
164
  - spec/spec_helper.rb
165
+ - spec/delete_domain_spec.rb
166
+ - spec/fixtures/wadus_records_reverse_order.json
154
167
  - spec/fixtures/wadus_records.json
155
168
  - spec/fixtures/empty_result.json
156
- - spec/fixtures/list_zone.json
157
169
  - spec/fixtures/error_response.json
158
- - spec/fixtures/wadus_records_reverse_order.json
170
+ - spec/fixtures/list_zone.json