glare 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de9b063e4c69c21566a74862a623247fd9385cf31d7e24742e5970c9ab50cfed
4
- data.tar.gz: 121de9045bf2d3d05bad31ae5ffee1501e4e6c7b7f65726bba34ae7ab22e7add
3
+ metadata.gz: e226cb39d95b10c480df7d010890467f8f65af0d2640f80dc05bb9fe0cc38dd6
4
+ data.tar.gz: 80ffd27027901623f5ff3b79989d5f89bb8bd6c354889bc48fc037d41dfc9484
5
5
  SHA512:
6
- metadata.gz: 2ec90aa14e010e2a7c1a131e163438458127bee37774bca20d515773b19cc4d4f1e1a528907e2fbdaf77861838d25e7af7bb971b68a8dc6e8fa41e001bb9a961
7
- data.tar.gz: c88b3aff8e5572ab0f463b4a541aabb0610a5ddd100bd9349f338638b207913e4c56a199e9f8ec4966d96745b78be67bccfd81256db6e40494eb11c0d6923eb0
6
+ metadata.gz: a5610704ad3c8db6f575a98e491b94b5333c98113153fbd1ff54b0c1e6280bbc931330b8795c7a3297beda1793ee31c8de08e0092dd1a5adce5a81e65f13046c
7
+ data.tar.gz: 05bd9c85b68b445d88dba8610ae3b14c8587f2db31bf9f3453e334da50b2717f769d88f3cd6d27cb2c4abd1025607c737570b0a58e4decf1c235a37558deee49
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
  .envrc
11
11
  /spec/examples.txt
12
12
  /.ruby-version
13
+ /vendor
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
@@ -1,5 +1,7 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
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
@@ -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 = build_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 = build_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 = build_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 = build_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 = build_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'.freeze
41
- CF_AUTH_KEY = 'CF_AUTH_KEY'.freeze
42
- CF_API_TOKEN = 'CF_API_TOKEN'.freeze
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)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare/errors'
2
4
 
3
5
  module Glare
@@ -12,6 +14,7 @@ module Glare
12
14
 
13
15
  def valid!
14
16
  raise Glare::Errors::ApiError.new(errors) unless success?
17
+
15
18
  self
16
19
  end
17
20
 
@@ -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 ==(cf_dns_record)
13
- @type == cf_dns_record.type &&
14
- @name == cf_dns_record.name &&
15
- @content == cf_dns_record.content &&
16
- @proxied == cf_dns_record.proxied &&
17
- @ttl == cf_dns_record.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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare/cf_dns_record'
2
4
  require 'glare/cf_dns_records/updater'
3
5
 
@@ -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 ==(operation)
37
- @record == operation.record &&
38
- @action == operation.action
38
+ def ==(other)
39
+ @record == other.record &&
40
+ @action == other.action
39
41
  end
40
42
 
41
43
  attr_reader :action, :record
@@ -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'.freeze
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, :content_type => /\bjson$/
17
+ builder.response :json, content_type: /\bjson$/
16
18
 
17
- builder.adapter :net_http
19
+ builder.adapter :net_http
18
20
  end
19
21
  end
20
22
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Glare
2
4
  class Credentials
3
5
  def initialize(email, auth_key)
@@ -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 ==(dns_record)
22
- @type == dns_record.type &&
23
- @name == dns_record.name &&
24
- @content == dns_record.content &&
25
- @proxied == dns_record.proxied &&
26
- @ttl == dns_record.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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare/domain/zone'
2
4
  require 'glare/domain/record'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare/domain/cf_zones'
2
4
  require 'glare/errors'
3
5
 
@@ -23,6 +25,7 @@ module Glare
23
25
 
24
26
  def first_id
25
27
  raise ::Glare::Errors::NotExistingZoneError.new if @zones.empty?
28
+
26
29
  @zones.first.id
27
30
  end
28
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Glare
2
4
  class Domain
3
5
  class Record
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Glare
2
4
  module Errors
3
5
  class NotExistingZoneError < StandardError; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Glare
2
- VERSION = '1.1.0'.freeze
4
+ VERSION = '1.2.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare'
2
4
 
3
5
  RSpec.describe 'delete domain', integration: true do
@@ -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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare'
2
4
 
3
5
  RSpec.describe 'Resolve domain', integration: true do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'coveralls'
2
4
  Coveralls.wear!
3
5
 
@@ -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
- records_with_correct_ttl = records(domain).all? { |r| r.ttl == 300 }
16
- expect(records_with_correct_ttl).to eq(true)
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare/api_response'
2
4
 
3
5
  RSpec.describe Glare::ApiResponse do
@@ -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
- Glare.register('not-exist.example.com', ['a_destination', 'another_destination'].shuffle, 'CNAME', proxied: true, ttl: 1)
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)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'glare/cf_dns_records'
2
4
  require 'glare/domain/record'
3
5
  require 'glare/dns_record'
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.1.0
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-02-19 00:00:00.000000000 Z
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: public_suffix
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: '5.0'
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: '5.0'
69
+ version: '1.0'
76
70
  - !ruby/object:Gem::Dependency
77
- name: faraday
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.16.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.16.0
83
+ version: 1.0.0.rc1
90
84
  - !ruby/object:Gem::Dependency
91
- name: faraday_middleware
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.13.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.13.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
- rubygems_version: 3.1.2
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/delete_domain_spec.rb
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/resolve_domain_spec.rb
174
- - spec/units/glare_spec.rb
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