glare 1.1.0 → 1.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/Gemfile +2 -0
- data/glare.gemspec +5 -3
- data/lib/glare.rb +25 -13
- data/lib/glare/api_response.rb +3 -0
- data/lib/glare/cf_dns_record.rb +8 -6
- data/lib/glare/cf_dns_records.rb +2 -0
- data/lib/glare/cf_dns_records/updater.rb +5 -3
- data/lib/glare/client.rb +5 -3
- data/lib/glare/credentials.rb +2 -0
- data/lib/glare/dns_record.rb +9 -7
- data/lib/glare/domain.rb +2 -0
- data/lib/glare/domain/cf_zones.rb +3 -0
- data/lib/glare/domain/record.rb +2 -0
- data/lib/glare/domain/zone.rb +3 -0
- data/lib/glare/errors.rb +2 -0
- data/lib/glare/version.rb +3 -1
- data/spec/delete_domain_spec.rb +2 -0
- data/spec/proxied_spec.rb +2 -0
- data/spec/resolve_domain_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/ttl_spec.rb +4 -2
- data/spec/units/api_response_spec.rb +2 -0
- data/spec/units/glare_spec.rb +4 -1
- data/spec/units/operations_spec.rb +2 -0
- metadata +29 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e226cb39d95b10c480df7d010890467f8f65af0d2640f80dc05bb9fe0cc38dd6
|
4
|
+
data.tar.gz: 80ffd27027901623f5ff3b79989d5f89bb8bd6c354889bc48fc037d41dfc9484
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5610704ad3c8db6f575a98e491b94b5333c98113153fbd1ff54b0c1e6280bbc931330b8795c7a3297beda1793ee31c8de08e0092dd1a5adce5a81e65f13046c
|
7
|
+
data.tar.gz: 05bd9c85b68b445d88dba8610ae3b14c8587f2db31bf9f3453e334da50b2717f769d88f3cd6d27cb2c4abd1025607c737570b0a58e4decf1c235a37558deee49
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/glare.gemspec
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
lib = File.expand_path('lib', __dir__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
require 'glare/version'
|
5
7
|
|
@@ -25,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
25
27
|
spec.add_development_dependency 'rake', '~> 12.3'
|
26
28
|
spec.add_development_dependency 'rspec', '~> 3.7'
|
27
29
|
|
30
|
+
spec.add_dependency 'faraday', '~> 1.0'
|
31
|
+
spec.add_dependency 'faraday_middleware', '>= 1.0.0.rc1'
|
28
32
|
spec.add_dependency 'public_suffix', '>= 3.0.2', '< 5.0'
|
29
|
-
spec.add_dependency 'faraday', '>= 0.16.0'
|
30
|
-
spec.add_dependency 'faraday_middleware', '>= 0.13.0'
|
31
33
|
end
|
data/lib/glare.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'public_suffix'
|
2
4
|
require 'glare/version'
|
3
5
|
require 'glare/credentials'
|
@@ -7,39 +9,49 @@ require 'glare/api_response'
|
|
7
9
|
require 'glare/dns_record'
|
8
10
|
require 'glare/cf_dns_records'
|
9
11
|
require 'glare/errors'
|
12
|
+
require 'forwardable'
|
10
13
|
|
11
14
|
module Glare
|
12
15
|
class << self
|
16
|
+
extend Forwardable
|
17
|
+
|
18
|
+
def_delegators :new, :register, :resolve, :deregister, :proxied?, :records
|
19
|
+
|
20
|
+
def new
|
21
|
+
Instance.new
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class Instance
|
26
|
+
def initialize
|
27
|
+
@client = Domain.new(build_client)
|
28
|
+
end
|
29
|
+
|
13
30
|
def register(fqdn, destination, type, proxied: false, ttl: 1)
|
14
|
-
client
|
15
|
-
Domain.new(client).register(fqdn, destination, type, proxied: proxied, ttl: ttl)
|
31
|
+
@client.register(fqdn, destination, type, proxied: proxied, ttl: ttl)
|
16
32
|
end
|
17
33
|
|
18
34
|
def resolve(fqdn, type)
|
19
|
-
client
|
20
|
-
Domain.new(client).resolve(fqdn, type)
|
35
|
+
@client.resolve(fqdn, type)
|
21
36
|
end
|
22
37
|
|
23
38
|
def deregister(fqdn, type)
|
24
|
-
client
|
25
|
-
Domain.new(client).deregister(fqdn, type)
|
39
|
+
@client.deregister(fqdn, type)
|
26
40
|
end
|
27
41
|
|
28
42
|
def proxied?(fqdn, type)
|
29
|
-
client
|
30
|
-
Domain.new(client).proxied?(fqdn, type)
|
43
|
+
@client.proxied?(fqdn, type)
|
31
44
|
end
|
32
45
|
|
33
46
|
def records(fqdn, type)
|
34
|
-
client
|
35
|
-
Domain.new(client).records(fqdn, type)
|
47
|
+
@client.records(fqdn, type)
|
36
48
|
end
|
37
49
|
|
38
50
|
private
|
39
51
|
|
40
|
-
CF_EMAIL = 'CF_EMAIL'
|
41
|
-
CF_AUTH_KEY = 'CF_AUTH_KEY'
|
42
|
-
CF_API_TOKEN = 'CF_API_TOKEN'
|
52
|
+
CF_EMAIL = 'CF_EMAIL'
|
53
|
+
CF_AUTH_KEY = 'CF_AUTH_KEY'
|
54
|
+
CF_API_TOKEN = 'CF_API_TOKEN'
|
43
55
|
|
44
56
|
def default_credentials
|
45
57
|
email = ENV.fetch(CF_EMAIL)
|
data/lib/glare/api_response.rb
CHANGED
data/lib/glare/cf_dns_record.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Glare
|
2
4
|
class CfDnsRecord
|
3
5
|
def initialize(id:, name:, type:, content:, proxied: false, ttl:)
|
@@ -9,12 +11,12 @@ module Glare
|
|
9
11
|
@ttl = ttl
|
10
12
|
end
|
11
13
|
|
12
|
-
def ==(
|
13
|
-
@type ==
|
14
|
-
@name ==
|
15
|
-
@content ==
|
16
|
-
@proxied ==
|
17
|
-
@ttl ==
|
14
|
+
def ==(other)
|
15
|
+
@type == other.type &&
|
16
|
+
@name == other.name &&
|
17
|
+
@content == other.content &&
|
18
|
+
@proxied == other.proxied &&
|
19
|
+
@ttl == other.ttl
|
18
20
|
end
|
19
21
|
|
20
22
|
def to_h
|
data/lib/glare/cf_dns_records.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Glare
|
2
4
|
class CfDnsRecords
|
3
5
|
class Updater
|
@@ -33,9 +35,9 @@ module Glare
|
|
33
35
|
@action = action
|
34
36
|
end
|
35
37
|
|
36
|
-
def ==(
|
37
|
-
@record ==
|
38
|
-
@action ==
|
38
|
+
def ==(other)
|
39
|
+
@record == other.record &&
|
40
|
+
@action == other.action
|
39
41
|
end
|
40
42
|
|
41
43
|
attr_reader :action, :record
|
data/lib/glare/client.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'faraday'
|
2
4
|
require 'faraday_middleware'
|
3
5
|
require 'logger'
|
@@ -6,15 +8,15 @@ require 'glare/api_response'
|
|
6
8
|
module Glare
|
7
9
|
class Client
|
8
10
|
BASE_HOST = 'https://api.cloudflare.com'
|
9
|
-
BASE_PATH = '/client/v4'
|
11
|
+
BASE_PATH = '/client/v4'
|
10
12
|
|
11
13
|
def initialize
|
12
14
|
@http = Faraday::Connection.new(BASE_HOST) do |builder|
|
13
15
|
builder.request :json
|
14
16
|
builder.response :logger, Logger.new(STDERR) if ENV['CF_DEBUG']
|
15
|
-
builder.response :json, :
|
17
|
+
builder.response :json, content_type: /\bjson$/
|
16
18
|
|
17
|
-
builder.adapter
|
19
|
+
builder.adapter :net_http
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
data/lib/glare/credentials.rb
CHANGED
data/lib/glare/dns_record.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Glare
|
2
4
|
class DnsRecord
|
3
|
-
def initialize(name:, type:, content:, proxied:, ttl:
|
5
|
+
def initialize(name:, type:, content:, proxied:, ttl:)
|
4
6
|
@name = name
|
5
7
|
@type = type
|
6
8
|
@content = content
|
@@ -18,12 +20,12 @@ module Glare
|
|
18
20
|
}
|
19
21
|
end
|
20
22
|
|
21
|
-
def ==(
|
22
|
-
@type ==
|
23
|
-
@name ==
|
24
|
-
@content ==
|
25
|
-
@proxied ==
|
26
|
-
@ttl ==
|
23
|
+
def ==(other)
|
24
|
+
@type == other.type &&
|
25
|
+
@name == other.name &&
|
26
|
+
@content == other.content &&
|
27
|
+
@proxied == other.proxied &&
|
28
|
+
@ttl == other.ttl
|
27
29
|
end
|
28
30
|
|
29
31
|
attr_reader :content, :type, :name, :proxied, :ttl
|
data/lib/glare/domain.rb
CHANGED
data/lib/glare/domain/record.rb
CHANGED
data/lib/glare/domain/zone.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'glare/domain/cf_zones'
|
2
4
|
|
3
5
|
module Glare
|
@@ -15,6 +17,7 @@ module Glare
|
|
15
17
|
|
16
18
|
def id
|
17
19
|
return @id if @id
|
20
|
+
|
18
21
|
zone_search = @client.get('/zones', name: registered_domain)
|
19
22
|
@id = CfZones.from_result(zone_search).first_id
|
20
23
|
end
|
data/lib/glare/errors.rb
CHANGED
data/lib/glare/version.rb
CHANGED
data/spec/delete_domain_spec.rb
CHANGED
data/spec/proxied_spec.rb
CHANGED
data/spec/resolve_domain_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/ttl_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'glare'
|
2
4
|
|
3
5
|
RSpec.describe 'retrieves proxied values', integration: true do
|
@@ -12,8 +14,8 @@ RSpec.describe 'retrieves proxied values', integration: true do
|
|
12
14
|
let(:destination) { ['1.2.3.4', '5.6.7.8'] }
|
13
15
|
|
14
16
|
it 'sets custom ttl' do
|
15
|
-
|
16
|
-
|
17
|
+
records_with_correct_ttl = records(domain).all? { |r| r.ttl == 300 }
|
18
|
+
expect(records_with_correct_ttl).to eq(true)
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
data/spec/units/glare_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'glare'
|
2
4
|
|
3
5
|
RSpec.describe Glare do
|
@@ -116,7 +118,8 @@ RSpec.describe Glare do
|
|
116
118
|
name: 'not-exist.example.com', type: 'CNAME'
|
117
119
|
).and_return(empty_result)
|
118
120
|
|
119
|
-
|
121
|
+
destinations = %w[a_destination another_destination].shuffle
|
122
|
+
Glare.register('not-exist.example.com', destinations, 'CNAME', proxied: true, ttl: 1)
|
120
123
|
|
121
124
|
expect(client).not_to have_received(:put).
|
122
125
|
with('/zones/9de4eb694c380d79845d35cd939cc7a7/dns_records', any_args)
|
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: 1.
|
4
|
+
version: 1.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: 2020-
|
12
|
+
date: 2020-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -54,53 +54,53 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '3.7'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: faraday
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 3.0.2
|
63
|
-
- - "<"
|
60
|
+
- - "~>"
|
64
61
|
- !ruby/object:Gem::Version
|
65
|
-
version: '
|
62
|
+
version: '1.0'
|
66
63
|
type: :runtime
|
67
64
|
prerelease: false
|
68
65
|
version_requirements: !ruby/object:Gem::Requirement
|
69
66
|
requirements:
|
70
|
-
- - "
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 3.0.2
|
73
|
-
- - "<"
|
67
|
+
- - "~>"
|
74
68
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
69
|
+
version: '1.0'
|
76
70
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
71
|
+
name: faraday_middleware
|
78
72
|
requirement: !ruby/object:Gem::Requirement
|
79
73
|
requirements:
|
80
74
|
- - ">="
|
81
75
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
76
|
+
version: 1.0.0.rc1
|
83
77
|
type: :runtime
|
84
78
|
prerelease: false
|
85
79
|
version_requirements: !ruby/object:Gem::Requirement
|
86
80
|
requirements:
|
87
81
|
- - ">="
|
88
82
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
83
|
+
version: 1.0.0.rc1
|
90
84
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
85
|
+
name: public_suffix
|
92
86
|
requirement: !ruby/object:Gem::Requirement
|
93
87
|
requirements:
|
94
88
|
- - ">="
|
95
89
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
90
|
+
version: 3.0.2
|
91
|
+
- - "<"
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '5.0'
|
97
94
|
type: :runtime
|
98
95
|
prerelease: false
|
99
96
|
version_requirements: !ruby/object:Gem::Requirement
|
100
97
|
requirements:
|
101
98
|
- - ">="
|
102
99
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
100
|
+
version: 3.0.2
|
101
|
+
- - "<"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '5.0'
|
104
104
|
description:
|
105
105
|
email:
|
106
106
|
- josacar@users.noreply.github.com
|
@@ -161,21 +161,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
version: '0'
|
163
163
|
requirements: []
|
164
|
-
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 2.7.7
|
165
166
|
signing_key:
|
166
167
|
specification_version: 4
|
167
168
|
summary: API client for CloudFlare v4 API
|
168
169
|
test_files:
|
169
|
-
- spec/
|
170
|
+
- spec/units/operations_spec.rb
|
171
|
+
- spec/units/api_response_spec.rb
|
172
|
+
- spec/units/glare_spec.rb
|
173
|
+
- spec/resolve_domain_spec.rb
|
170
174
|
- spec/spec_helper.rb
|
171
|
-
- spec/ttl_spec.rb
|
172
175
|
- spec/proxied_spec.rb
|
173
|
-
- spec/
|
174
|
-
- spec/
|
175
|
-
- spec/units/api_response_spec.rb
|
176
|
-
- spec/units/operations_spec.rb
|
176
|
+
- spec/delete_domain_spec.rb
|
177
|
+
- spec/ttl_spec.rb
|
177
178
|
- spec/fixtures/wadus_records_reverse_order.json
|
178
|
-
- spec/fixtures/error_response.json
|
179
179
|
- spec/fixtures/wadus_records.json
|
180
|
-
- spec/fixtures/list_zone.json
|
181
180
|
- spec/fixtures/empty_result.json
|
181
|
+
- spec/fixtures/error_response.json
|
182
|
+
- spec/fixtures/list_zone.json
|