dnsmadeeasy 0.3.2 → 0.3.5

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
  SHA256:
3
- metadata.gz: ed2f0693df9db3d005273c6ce41b114aab36b57516c84ed47ef7e27bd4a35339
4
- data.tar.gz: 39389e4043a3976819594a40f4f8d64e1c653244c14783a6d08d59176bb06ed6
3
+ metadata.gz: 071e02ddbb88d13234c3a135672e186062472b44f6a0b3227fd4f9b5c5097205
4
+ data.tar.gz: '04249c110d948a410e2235716b2e05c70fa76667a7dd338d409883f8f03dfa6d'
5
5
  SHA512:
6
- metadata.gz: 5f4f38240929d627ae8ad99d80255bf14d8cad007144876d856504a0a126370964dea4d521e54eceb99694bd13df4ef09ca7acea91f22a0ddaafc582e8c3fe13
7
- data.tar.gz: 63a1ec57791474e042312bd6fdaa2ebaeba7b8b88f24d590bf9f5b620ea5f8dcd3dc5fcdf0a286652eee1a0bbb94ace257ee9bd20ba141e458c59b65f6d36874
6
+ metadata.gz: df525957ac6b092b428fbd236e85b19ea0d5fda02b7c3a91d813e06ac22376ff7c94e5434fb4b39aa90969c03f926c73efb73b9704686f44c7b84ca10121a8e5
7
+ data.tar.gz: 356ea81dffbf405a73ffce3e0c8278e6b329746769c983b9397793c50773ec3ec853b430f6f31781f5e9f3a1ca424e3a173a7c54d5727ac79a9be94a081de7ea
@@ -0,0 +1,2 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
@@ -0,0 +1,174 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2019-12-03 14:53:41 -0800 using RuboCop version 0.77.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 3
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: EnforcedStyle.
12
+ # SupportedStyles: space, no_space
13
+ Layout/HeredocIndentation:
14
+ Exclude:
15
+ - dnsmadeeasy.gemspec
16
+
17
+ Layout/SpaceInsideParens:
18
+ Exclude:
19
+ - 'Rakefile'
20
+ - 'spec/lib/dnsmadeeasy/api/client_spec.rb'
21
+
22
+ # Offense count: 3
23
+ Lint/AmbiguousRegexpLiteral:
24
+ Exclude:
25
+ - 'spec/lib/dnsmadeeasy/credentials/api_keys_spec.rb'
26
+ - 'spec/lib/dnsmadeeasy/runner_spec.rb'
27
+
28
+ # Offense count: 3
29
+ # Configuration parameters: MaximumRangeSize.
30
+ Lint/MissingCopEnableDirective:
31
+ Exclude:
32
+ - 'dnsmadeeasy.gemspec'
33
+ - 'lib/dnsmadeeasy/runner.rb'
34
+
35
+ # Offense count: 5
36
+ # Cop supports --auto-correct.
37
+ Lint/RedundantCopDisableDirective:
38
+ Exclude:
39
+ - 'lib/dnsmadeeasy/runner.rb'
40
+
41
+ # Offense count: 1
42
+ Lint/UselessAssignment:
43
+ Exclude:
44
+ - 'lib/dnsmadeeasy/runner.rb'
45
+
46
+ # Offense count: 7
47
+ Metrics/AbcSize:
48
+ Max: 37
49
+
50
+ # Offense count: 2
51
+ # Configuration parameters: CountComments.
52
+ Metrics/ClassLength:
53
+ Max: 250
54
+
55
+ # Offense count: 2
56
+ Metrics/CyclomaticComplexity:
57
+ Max: 12
58
+
59
+ # Offense count: 11
60
+ # Configuration parameters: CountComments, ExcludedMethods.
61
+ Metrics/MethodLength:
62
+ Max: 29
63
+
64
+ # Offense count: 3
65
+ # Configuration parameters: CountKeywordArgs.
66
+ Metrics/ParameterLists:
67
+ Max: 8
68
+
69
+ # Offense count: 2
70
+ Metrics/PerceivedComplexity:
71
+ Max: 14
72
+
73
+ # Offense count: 1
74
+ # Configuration parameters: AllowedChars.
75
+ Style/AsciiComments:
76
+ Exclude:
77
+ - 'lib/dnsmadeeasy/credentials.rb'
78
+
79
+ # Offense count: 4
80
+ # Cop supports --auto-correct.
81
+ # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, IgnoredMethods, AllowBracesOnProceduralOneLiners.
82
+ # SupportedStyles: line_count_based, semantic, braces_for_chaining, always_braces
83
+ # ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
84
+ # FunctionalMethods: let, let!, subject, watch
85
+ # IgnoredMethods: lambda, proc, it
86
+ Style/BlockDelimiters:
87
+ Exclude:
88
+ - 'spec/lib/dnsmadeeasy/api/client_spec.rb'
89
+ - 'spec/lib/dnsmadeeasy/credentials/yaml_file_spec.rb'
90
+
91
+ # Offense count: 6
92
+ Style/Documentation:
93
+ Exclude:
94
+ - 'spec/**/*'
95
+ - 'test/**/*'
96
+ - 'lib/dme.rb'
97
+ - 'lib/dnsmadeeasy.rb'
98
+ - 'lib/dnsmadeeasy/api/client.rb'
99
+ - 'lib/dnsmadeeasy/credentials.rb'
100
+ - 'lib/dnsmadeeasy/credentials/yaml_file.rb'
101
+ - 'lib/dnsmadeeasy/runner.rb'
102
+
103
+ # Offense count: 5
104
+ # Configuration parameters: MinBodyLength.
105
+ Style/GuardClause:
106
+ Exclude:
107
+ - 'lib/dnsmadeeasy.rb'
108
+ - 'lib/dnsmadeeasy/api/client.rb'
109
+ - 'lib/dnsmadeeasy/credentials/api_keys.rb'
110
+ - 'lib/dnsmadeeasy/runner.rb'
111
+
112
+ # Offense count: 1
113
+ # Cop supports --auto-correct.
114
+ Style/IfUnlessModifier:
115
+ Exclude:
116
+ - 'lib/dnsmadeeasy/runner.rb'
117
+
118
+ # Offense count: 3
119
+ # Cop supports --auto-correct.
120
+ # Configuration parameters: PreferredDelimiters.
121
+ Style/PercentLiteralDelimiters:
122
+ Exclude:
123
+ - 'Rakefile'
124
+ - 'dnsmadeeasy.gemspec'
125
+ - 'lib/dnsmadeeasy/runner.rb'
126
+
127
+ # Offense count: 8
128
+ # Cop supports --auto-correct.
129
+ # Configuration parameters: AllowAsExpressionSeparator.
130
+ Style/Semicolon:
131
+ Exclude:
132
+ - 'lib/dnsmadeeasy.rb'
133
+
134
+ # Offense count: 2
135
+ # Cop supports --auto-correct.
136
+ # Configuration parameters: EnforcedStyle.
137
+ # SupportedStyles: only_raise, only_fail, semantic
138
+ Style/SignalException:
139
+ Exclude:
140
+ - 'lib/dnsmadeeasy/api/client.rb'
141
+
142
+ # Offense count: 5
143
+ # Cop supports --auto-correct.
144
+ # Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
145
+ # SupportedStyles: single_quotes, double_quotes
146
+ Style/StringLiterals:
147
+ Exclude:
148
+ - 'Gemfile'
149
+ - 'Rakefile'
150
+ - 'lib/dnsmadeeasy/credentials/api_keys.rb'
151
+ - 'spec/lib/dnsmadeeasy/api/client_spec.rb'
152
+
153
+ # Offense count: 1
154
+ # Cop supports --auto-correct.
155
+ # Configuration parameters: EnforcedStyleForMultiline.
156
+ # SupportedStylesForMultiline: comma, consistent_comma, no_comma
157
+ Style/TrailingCommaInArrayLiteral:
158
+ Exclude:
159
+ - 'spec/lib/dnsmadeeasy/api/client_spec.rb'
160
+
161
+ # Offense count: 1
162
+ # Cop supports --auto-correct.
163
+ # Configuration parameters: EnforcedStyleForMultiline.
164
+ # SupportedStylesForMultiline: comma, consistent_comma, no_comma
165
+ Style/TrailingCommaInHashLiteral:
166
+ Exclude:
167
+ - 'spec/lib/dnsmadeeasy/api/client_spec.rb'
168
+
169
+ # Offense count: 97
170
+ # Cop supports --auto-correct.
171
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
172
+ # URISchemes: http, https
173
+ Metrics/LineLength:
174
+ Max: 305
@@ -5,16 +5,20 @@ sudo: false
5
5
  language: ruby
6
6
  cache: bundler
7
7
  rvm:
8
- - 2.4.1
9
- - 2.3.5
10
- before_install: gem install bundler -v 1.15.4
8
+ - 2.3.6
9
+ - 2.4.3
10
+ - 2.5.0
11
+ - 2.6.5
12
+ - jruby-9.1.15.0
13
+ before_install: gem install bundler -v 2.0.2
11
14
  before_script:
15
+ - gem update --system
12
16
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64
13
17
  > ./cc-test-reporter
14
18
  - chmod +x ./cc-test-reporter
15
19
  - "./cc-test-reporter before-build"
16
20
  script:
17
21
  - bundle exec rspec
22
+ - bundle exec rubocop
18
23
  after_script:
19
24
  - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
20
-
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in dnsmadeeasy.gemspec
data/README.md CHANGED
@@ -39,40 +39,40 @@ Once you have the key and the secret, you have several choices:
39
39
  ```
40
40
 
41
41
  3. Configuring API keys as above is easy, and can be done using environment variables. Alternatively, it may be convenient to store credentials in a YAML file.
42
-
43
- * If filename is not specified, there is default location where this file is searched, which is `~/.dnsmadeeasy/credentials.yml`.
44
- * If filename is provided, it will be read, and must conform to the following format:
42
+
43
+ * If filename is not specified, there is default location where this file is searched, which is `~/.dnsmadeeasy/credentials.yml`.
44
+ * If filename is provided, it will be read, and must conform to the following format:
45
45
 
46
- **Simple Credentials Format**
46
+ **Simple Credentials Format**
47
47
 
48
- ```yaml
49
- # file: ~/.dnsmadeeasy/credentials.yml
50
- credentials:
51
- api_key: 2062259f-f666b17-b1fa3b48-042ad4030
52
- api_secret: 2265bc3-e31ead-95b286312e-c215b6a0
53
- ```
48
+ ```yaml
49
+ # file: ~/.dnsmadeeasy/credentials.yml
50
+ credentials:
51
+ api_key: 2062259f-f666b17-b1fa3b48-042ad4030
52
+ api_secret: 2265bc3-e31ead-95b286312e-c215b6a0
53
+ ```
54
54
 
55
- **Multi-Account Credentials Format**
55
+ **Multi-Account Credentials Format**
56
56
 
57
- Below you see two accounts, with production key and secret being encrypted. See [further below](#encryption) about encrypting your key and secrets.
58
-
59
- ```yaml
60
- accounts:
61
- - name: development
62
- default_account: true
63
- credentials:
64
- api_key: 12345678-a8f8-4466-ffff-2324aaaa9098
65
- api_secret: 43009899-abcc-ffcc-eeee-09f809808098
66
- - name: production
67
- credentials:
68
- api_key: "BAhTOh1TeW06OkRhdGE6OldyYXBwZXJT............"
69
- api_secret: "BAhTOh1TeW06OkRhdGE6OldyYXBwZ............"
70
- encryption_key: spec/fixtures/sym.key
71
- ```
57
+ Below you see two accounts, with production key and secret being encrypted. See [further below](#encryption) about encrypting your key and secrets.
72
58
 
73
- You can use the following method to access both simple and multi-account YAML configurations:
59
+ ```yaml
60
+ accounts:
61
+ - name: development
62
+ default_account: true
63
+ credentials:
64
+ api_key: 12345678-a8f8-4466-ffff-2324aaaa9098
65
+ api_secret: 43009899-abcc-ffcc-eeee-09f809808098
66
+ - name: production
67
+ credentials:
68
+ api_key: "BAhTOh1TeW06OkRhdGE6OldyYXBwZXJT............"
69
+ api_secret: "BAhTOh1TeW06OkRhdGE6OldyYXBwZ............"
70
+ encryption_key: spec/fixtures/sym.key
71
+ ```
72
+
73
+ You can use the following method to access both simple and multi-account YAML configurations:
74
74
 
75
- ```ruby
75
+ ```ruby
76
76
  require 'dnsmadeeasy'
77
77
  DnsMadeEasy.configure_from_file(file, account = nil, encryption_key = nil)
78
78
 
@@ -85,17 +85,17 @@ Once you have the key and the secret, you have several choices:
85
85
  'config/dme.yaml',
86
86
  'production',
87
87
  ENV['PRODUCTION_KEY'])
88
- ```
88
+ ```
89
89
 
90
90
  3. Finally, you can use `DME.credentials_from_file` method that, unlike the method above, uses hash arguments:
91
91
 
92
- ```ruby
92
+ ```ruby
93
93
  @creds = DnsMadeEasy.credentials_from_file(file: 'my-creds.yml',
94
94
  account: 'production',
95
95
  encryption_key: 'MY_KEY')
96
96
  @creds.api_key # => ...
97
97
  @creds.api_secret # => ...
98
- ```
98
+ ```
99
99
 
100
100
  Method above simply returns the credentials instance, but does not "save" it as the default credentials like `configure_from_file`. Therefore, if you need to access multiple accounts at the same time, this method will help you maintain multiple credentials at the same time.
101
101
 
@@ -250,6 +250,21 @@ Here is the complete of all methods supported by the `DnsMadeEasy::Api::Client`:
250
250
  * `find_first`
251
251
  * `find_record_ids`
252
252
 
253
+ #### Secondary Domains
254
+ * `secondary_domain`
255
+ * `secondary_domains`
256
+ * `get_id_by_secondary_domain`
257
+ * `create_secondary_domain`
258
+ * `create_secondary_domains`
259
+ * `update_secondary_domains`
260
+ * `delete_secondary_domain`
261
+
262
+ #### Secondary IpSets
263
+ * `secondary_ip_set`
264
+ * `secondary_ip_sets`
265
+ * `create_secondary_ip_set`
266
+ * `update_secondary_ip_set`
267
+ * `delete_secondary_ip_set`
253
268
 
254
269
  <a name="encryption"></a>
255
270
 
@@ -337,6 +352,9 @@ Valid Operations Are:
337
352
  create_ns_record
338
353
  create_ptr_record
339
354
  create_record
355
+ create_secondary_domain
356
+ create_secondary_domains
357
+ create_secondary_ip_set
340
358
  create_spf_record
341
359
  create_srv_record
342
360
  create_txt_record
@@ -344,15 +362,24 @@ Valid Operations Are:
344
362
  delete_domain
345
363
  delete_record
346
364
  delete_records
365
+ delete_secondary_domain
366
+ delete_secondary_ip_set
347
367
  domain
348
368
  domains
349
369
  find_all
350
370
  find_first
351
371
  find_record_ids
352
372
  get_id_by_domain
373
+ get_id_by_secondary_domain
353
374
  records_for
375
+ secondary_domain
376
+ secondary_domains
377
+ secondary_ip_set
378
+ secondary_ip_sets
354
379
  update_record
355
380
  update_records
381
+ update_secondary_domains
382
+ update_secondary_ip_set
356
383
  ```
357
384
 
358
385
  For example:
@@ -419,6 +446,81 @@ To delete a domain:
419
446
  DME.delete_domain ('test.io')
420
447
  ```
421
448
 
449
+ ### Managing Secondary Domains
450
+
451
+ To retrieve all secondary domains:
452
+ ```ruby
453
+ DME.secondary_domains
454
+ ```
455
+
456
+ To retrieve secondary domain by id:
457
+
458
+ ```ruby
459
+ DME.secondary_domain(domain_id)
460
+ ```
461
+
462
+ To retrieve the id of a domain by the secondary domain name:
463
+
464
+ ```ruby
465
+ DME.get_id_by_secondary_domain('test.io')
466
+ ```
467
+
468
+ To create a secondary domain:
469
+
470
+ ```ruby
471
+ # IP_SET_ID is id of ip_set you want to associate domain with
472
+ DME.create_secondary_domain('test.io', IP_SET_ID)
473
+
474
+ # Multiple domains can be created by:
475
+ DME.create_secondary_domains(%w[test.io moo.re], IP_SET_ID)
476
+ ```
477
+
478
+ To update a secondary domain:
479
+
480
+ ```ruby
481
+ # IP_SET_ID is id of ip_set you want to associate
482
+ # DOMAIN_ID is id of domain
483
+ DME.update_secondary_domains([DOMAIN_ID], IP_SET_ID)
484
+ ```
485
+
486
+ To delete a secondary domain:
487
+
488
+ ```ruby
489
+ DME.delete_secondary_domain('test.io')
490
+ ```
491
+
492
+ ### Managing Secondary IpSets
493
+
494
+ To retrieve all secondary IpSets:
495
+ ```ruby
496
+ DME.secondary_ip_sets
497
+ ```
498
+
499
+ To retrieve single ipSet:
500
+
501
+ ```ruby
502
+ DME.secondary_ip_set(IP_SET_ID)
503
+ ```
504
+
505
+ To create an ipSet:
506
+
507
+ ```ruby
508
+ # IP_LIST is list of ips to be associated with this ip_set, like %w[8.8.8.8, 1.1.1.1]
509
+ DME.create_secondary_ip_set('ip-set-name', IP_LIST)
510
+ ```
511
+
512
+ To update an ipSet:
513
+
514
+ ```ruby
515
+ DME.update_secondary_ip_set(IP_SET_ID, 'ip-list-name', IP_LIST)
516
+ ```
517
+
518
+ To delete an ipSet:
519
+
520
+ ```ruby
521
+ DME.delete_secondary_ip_set(IP_SET_ID)
522
+ ```
523
+
422
524
  ### Managing Records
423
525
 
424
526
  To retrieve all records for a given domain name:
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'yard'
@@ -13,22 +15,21 @@ task :permissions do
13
15
  shell("find . -type d -exec chmod o+x,g+x {} \\;")
14
16
  end
15
17
 
16
- task :build => :permissions
18
+ task build: :permissions
17
19
 
18
20
  YARD::Rake::YardocTask.new(:doc) do |t|
19
21
  t.files = %w(lib/**/*.rb exe/*.rb - README.md LICENSE.txt)
20
- t.options.unshift('--title','DNS Client for DnsMadeEasy')
21
- t.after = ->() { exec('open doc/index.html') }
22
+ t.options.unshift('--title', 'DNS Client for DnsMadeEasy')
23
+ t.after = -> { exec('open doc/index.html') }
22
24
  end
23
25
 
24
26
  RSpec::Core::RakeTask.new(:spec)
25
27
 
26
- task :default => :spec
27
- task :gem => :install do
28
+ task default: :spec
29
+ task gem: :install do
28
30
  gem = `ls -1 *.gemspec | sed 's/\.gemspec//g'`.chomp
29
31
  puts "gem is #{gem}"
30
32
  puts `gem uninstall -ax #{gem}`.chomp
31
- file=`ls -1 pkg`.chomp
33
+ file = `ls -1 pkg`.chomp
32
34
  puts `gem install pkg/#{file}`
33
35
  end
34
-