cloudflair 0.2.0 → 0.4.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.
Files changed (63) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +38 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +10 -0
  6. data/Gemfile +2 -0
  7. data/README.md +4 -7
  8. data/Rakefile +2 -0
  9. data/VERSION +1 -0
  10. data/cloudflair.gemspec +9 -9
  11. data/lib/cloudflair/api/railguns.rb +2 -0
  12. data/lib/cloudflair/api/zone/analytics.rb +2 -0
  13. data/lib/cloudflair/api/zone/available_plan.rb +2 -0
  14. data/lib/cloudflair/api/zone/available_rate_plan.rb +2 -0
  15. data/lib/cloudflair/api/zone/custom_hostname.rb +19 -0
  16. data/lib/cloudflair/api/zone/dns_record.rb +3 -0
  17. data/lib/cloudflair/api/zone/purge_cache.rb +4 -2
  18. data/lib/cloudflair/api/zone/railgun.rb +2 -0
  19. data/lib/cloudflair/api/zone/settings/advanced_ddos.rb +2 -0
  20. data/lib/cloudflair/api/zone/settings/always_online.rb +2 -0
  21. data/lib/cloudflair/api/zone/settings/browser_cache_ttl.rb +2 -0
  22. data/lib/cloudflair/api/zone/settings/browser_check.rb +2 -0
  23. data/lib/cloudflair/api/zone/settings/cache_level.rb +2 -0
  24. data/lib/cloudflair/api/zone/settings/challenge_ttl.rb +2 -0
  25. data/lib/cloudflair/api/zone/settings/development_mode.rb +2 -0
  26. data/lib/cloudflair/api/zone/settings/email_obfuscation.rb +2 -0
  27. data/lib/cloudflair/api/zone/settings/hotlink_protection.rb +2 -0
  28. data/lib/cloudflair/api/zone/settings/ip_geolocation.rb +2 -0
  29. data/lib/cloudflair/api/zone/settings/ipv6.rb +2 -0
  30. data/lib/cloudflair/api/zone/settings/minify.rb +2 -0
  31. data/lib/cloudflair/api/zone/settings/mirage.rb +2 -0
  32. data/lib/cloudflair/api/zone/settings/mobile_redirect.rb +2 -0
  33. data/lib/cloudflair/api/zone/settings/origin_error_page_pass_thru.rb +2 -0
  34. data/lib/cloudflair/api/zone/settings/polish.rb +2 -0
  35. data/lib/cloudflair/api/zone/settings/prefetch_preload.rb +2 -0
  36. data/lib/cloudflair/api/zone/settings/response_buffering.rb +2 -0
  37. data/lib/cloudflair/api/zone/settings/rocket_loader.rb +2 -0
  38. data/lib/cloudflair/api/zone/settings/security_header.rb +2 -0
  39. data/lib/cloudflair/api/zone/settings/security_level.rb +2 -0
  40. data/lib/cloudflair/api/zone/settings/server_side_exclude.rb +2 -0
  41. data/lib/cloudflair/api/zone/settings/sort_query_string_for_cache.rb +2 -0
  42. data/lib/cloudflair/api/zone/settings/ssl.rb +2 -0
  43. data/lib/cloudflair/api/zone/settings/tls_1_2_only.rb +2 -0
  44. data/lib/cloudflair/api/zone/settings/tls_1_3.rb +2 -0
  45. data/lib/cloudflair/api/zone/settings/tls_client_auth.rb +2 -0
  46. data/lib/cloudflair/api/zone/settings/true_client_ip_header.rb +2 -0
  47. data/lib/cloudflair/api/zone/settings/waf.rb +2 -0
  48. data/lib/cloudflair/api/zone/settings/websockets.rb +2 -0
  49. data/lib/cloudflair/api/zone/settings.rb +30 -28
  50. data/lib/cloudflair/api/zone.rb +3 -0
  51. data/lib/cloudflair/api/zone__available_plans.rb +2 -0
  52. data/lib/cloudflair/api/zone__custom_hostnames.rb +31 -0
  53. data/lib/cloudflair/api/zone__dns_records.rb +2 -2
  54. data/lib/cloudflair/api/zone__railguns.rb +2 -0
  55. data/lib/cloudflair/api.rb +2 -0
  56. data/lib/cloudflair/communication.rb +23 -20
  57. data/lib/cloudflair/connection.rb +21 -12
  58. data/lib/cloudflair/entity.rb +41 -42
  59. data/lib/cloudflair/error/cloudflair_error.rb +2 -0
  60. data/lib/cloudflair/error/cloudflare_error.rb +2 -0
  61. data/lib/cloudflair/version.rb +2 -1
  62. data/lib/cloudflair.rb +4 -2
  63. metadata +35 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4669b1632efb2191777972709d0f9adfa5ed8aff
4
- data.tar.gz: b196ca2d670f3d2aa0cb2ef04e72c43fd1952183
2
+ SHA256:
3
+ metadata.gz: 966bf25156f0cedddd418a9b070227eb819e128984175fe2da2aaca46189da7a
4
+ data.tar.gz: 2da3f8e7083bc2534ef799125b57294521030581724dd6247327f8fb93b47195
5
5
  SHA512:
6
- metadata.gz: c9d0d0bfc5784c16e1f7e2e35340da7851939db39a9fd93e1fd941d160751b68e0a58f7376f02bb85b1a02e7512639a8c3c8d54a2ceb7182380cb2c0bfc08bcb
7
- data.tar.gz: 25bc5ddea914d14d5771dfe4ae0e3c4d75a4e79caa7ca71beb7031b1b331615bfe21e553116ce17be840c24236a1be6a15f79cf93300677ef481698ba3accee9
6
+ metadata.gz: de912a3e2901d8f4d70caf78fe489789953100b0afa83b19743ab9c648f3e7bf8674454a62db79d58e83163b7e9da54100ce01cb456a931de1380ac90ffb68e9
7
+ data.tar.gz: a36444251a1c61347f2c5990ac9ba749002cbba09e62be188a881a645ca30da4ddf43cbd8dbaadb77a3b421c57eabf5ced3789b45991d87c8ac9607da67eb8ea
data/.rubocop.yml ADDED
@@ -0,0 +1,38 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rspec
4
+
5
+ AllCops:
6
+ Exclude:
7
+ - 'bin/**/*'
8
+ - 'db/**/*'
9
+ TargetRubyVersion: 2.6.1
10
+
11
+ Layout/AlignHash:
12
+ EnforcedColonStyle: table
13
+ EnforcedHashRocketStyle: table
14
+
15
+ Metrics/BlockLength:
16
+ Exclude:
17
+ - Guardfile
18
+ - 'spec/**/*spec.rb'
19
+
20
+ Metrics/LineLength:
21
+ Exclude:
22
+ - Guardfile
23
+ Max: 110
24
+
25
+ Rails:
26
+ Enabled: true
27
+
28
+ Rails/HttpPositionalArguments:
29
+ Exclude:
30
+
31
+ Rails/SkipsModelValidations:
32
+ Enabled: false
33
+
34
+ RSpec/MultipleExpectations:
35
+ Enabled: false
36
+
37
+ Style/Documentation:
38
+ Enabled: false
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ cloudflair
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.4
1
+ 2.7.5
data/.travis.yml CHANGED
@@ -9,3 +9,13 @@ notifications:
9
9
  on_success: never
10
10
  slack:
11
11
  secure: o1rlXNKZgQUIIfpzz//KpClcUS/ea5ECbbTaexQYHn84hqPNlsBdWhSrLg2s6MIJ1zSml4NBKQgwQJCV/6keel06XeNPvGPdQLVmSsBCWS4EJ/CvAAsXadghmSDYdsZlTaXvwa2ZdIaCHrM/SncZYi7I+KIiGsbV0KJgYVTlWGPWuN1kh3od1Ixw6W+TFUKONz8OqVFGo2yCr68zDtxUvrY8G/TNRRtWUINHPSIHL7+7JxzOtDZKOITptcLii8tmqi07HtmU7+78lDMlze8ejhchEDKoycTwVOQDRxjjLbDKZsV33nqG5XYRqW8FQv6zJ2c3eCfd2M2Lm+WkPe/ZBQ25Ok4/wK35T0oPt5lW6LKRNt202nQiI6vqn54489knOUpvA60z2r6taIgI3Os8kCdG8rX95Hob4gpU4zLqPNz26vqGiB0vz4DFSJWpRlYK15YT7SpEEMW2luPcTGHaclRSUFgjo/JkVH6zg+1rcMW4ZbKoxJZoNu+nmk9m1Xaz0r5tfJHBzB5XguRcKakRWkhb0rV4Nvo1as1PFtpxt9tiZsIXNTDNtf+upQeJs1Tevm6z4zBGXOIp//MIJEUyUkJ7Fkb+pyRbDOh30JSQJs0Z1y+/LA0rNkbQ+/jjeoKAepnFvawsXZF6UVWZxsBzAkIWTe+bwghnxX4Gm454RiI=
12
+ deploy:
13
+ provider: rubygems
14
+ api_key:
15
+ secure: GisVn77etjRfIwmjsktJVFU182lSuZqbQBsb8jkMoBr0/01fE/tWpZHOMNnKU5JoIaaQAGA0F1w+OXk/eAldvWHbu++074/XcgGerMBV5kxhBOpKEaSu5/cxUfgtGIi2eBBS4xe+GEwtlkI08c6BCiX9pUuUn8LwuUvN7NLNd7nLnZhhnawAoG75aWoMXnudqbIoX/1kGIem8XMuugWwxcr7PsnBy43Mj3yYXmtbO5IW4LC1sDywYc3O/lHmC7hner5yFJSa3kCNN9IMEieRW8/bZAlu3HncfJoORha3tZq37Po/kV8OBuYMoHwxQouCnrh0OW3QNrsmFF+tTy8z132GDjOIaNHwKZyvtXHgfmq4KXdSU5dTlDR5U4Z7jFTbOifc1+UuU1B3RHMHsrqtJgb5ihoXAjtZI8JSjQ7aI+bX9aSt3OpELymuAzoW1mV/Rf4kuNq23jmgDKBEhnR6YdQ864pFGnPL00kPhMUQ+iVX4OFQMZ2/eayYuNGz1LV1WDfFoFSsinZtr/erNnziYJHuzULfFdVg7+ZGMkmLFl7RHiRlphrylW+IN0K+hKEaTDFJ/yVYlLvr/OakR2l4kiPlxfQPXAtmh4MRe1vJdyT3RlGha9qecPddGuzWw3kG8A8bJv9H15YaplHRsu8HryMH5Zt5Tup8cnN37kMrILg=
16
+ gem: cloudflair
17
+ on:
18
+ tags: true
19
+ repo: ninech/cloudflair
20
+ condition: "$TRAVIS_RUBY_VERSION == 2.4"
21
+ skip_cleanup: true
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 cloudflair.gemspec
data/README.md CHANGED
@@ -5,8 +5,6 @@
5
5
 
6
6
  A simple Ruby-wrapper around Cloudflare's v4 API.
7
7
 
8
- ![Animation of Homer Simpson using of a rescue flare.](https://media.giphy.com/media/n8A8omwp1mVAA/giphy.gif)
9
-
10
8
  ## Installation
11
9
 
12
10
  Add this line to your application's Gemfile:
@@ -114,9 +112,10 @@ A good reference on how to use this wrapper are also the Rspecs.
114
112
  * `/zones/:zone_id/available_plans` GET
115
113
  * `/zones/:zone_id/available_plans/:plan_id` GET
116
114
  * `/zones/:zone_id/available_rate_plans`
115
+ * `/zones/:zone_id/custom_hostnames` GET, POST, PATCH
117
116
  * `/zones/:zone_id/dns_records` GET, POST
118
117
  * `/zones/:zone_id/dns_records/:record_id` GET, DELETE (PUT not implemented)
119
- * `/zones/:zone_id/purge_cache` DELETE
118
+ * `/zones/:zone_id/purge_cache` POST
120
119
  * `/zones/:zone_id/railguns` GET
121
120
  * `/zones/:zone_id/railguns/:railgun_id` GET
122
121
  * `/zones/:zone_id/railguns/:railgun_id/diagnose` GET, PATCH
@@ -180,8 +179,6 @@ The gem is available as open source under the terms of the [MIT License](http://
180
179
 
181
180
  ## About
182
181
 
183
- This gem is currently maintained and funded by [nine.ch](https://nine.ch).
184
-
185
- [![nine.ch Logo](https://blog.nine.ch/assets/logo.png)](https://nine.ch)
182
+ This gem is currently maintained and funded by [nine](https://nine.ch).
186
183
 
187
- We run your Linux server infrastructure – without interruptions, around the clock.
184
+ [![logo of the company 'nine'](https://logo.apps.at-nine.ch/Dmqied_eSaoBMQwk3vVgn4UIgDo=/trim/500x0/logo_claim.png)](https://www.nine.ch)
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
 
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.4.0
data/cloudflair.gemspec CHANGED
@@ -1,14 +1,14 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'cloudflair/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'cloudflair'
9
- spec.version = Cloudflair::VERSION
9
+ spec.version = File.read('VERSION')
10
10
  spec.authors = ['Christian Mäder']
11
- spec.email = %w(christian.maeder@nine.ch)
11
+ spec.email = %w[christian.maeder@nine.ch]
12
12
 
13
13
  spec.summary = "Wrapper to CloudFlare's v4 REST API."
14
14
  spec.description = "Cloudflair aims to provide easy access to CloudFlare's public API."
@@ -22,15 +22,15 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = %w[lib]
24
24
 
25
+ spec.add_runtime_dependency "dry-configurable", "> 0.12"
25
26
  spec.add_runtime_dependency 'faraday', '>= 0.10.0'
26
- spec.add_runtime_dependency 'faraday_middleware'
27
- spec.add_runtime_dependency 'dry-configurable', '~> 0.1'
28
27
  spec.add_runtime_dependency 'faraday-detailed_logger'
28
+ spec.add_runtime_dependency 'faraday_middleware'
29
29
 
30
- spec.add_development_dependency 'bundler', '~> 1.12'
31
- spec.add_development_dependency 'rake', '~> 10.0'
32
- spec.add_development_dependency 'rspec', '~> 3.0'
33
30
  spec.add_development_dependency 'dotenv', '~> 2.1'
31
+ spec.add_development_dependency 'rake', '~> 12.0'
32
+ spec.add_development_dependency 'rspec', '~> 3.0'
34
33
  spec.add_development_dependency 'rubocop', '~> 0.48'
34
+ spec.add_development_dependency 'rubocop-performance'
35
35
  spec.add_development_dependency 'rubocop-rspec', '~> 1.15'
36
36
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cloudflair/entity'
4
+
5
+ module Cloudflair
6
+ class CustomHostname
7
+ include Cloudflair::Entity
8
+
9
+ attr_reader :zone_id, :custom_hostname_id
10
+ deletable true
11
+ patchable_fields :ssl, :custom_origin_server, :custom_metadata
12
+ path 'zones/:zone_id/custom_hostnames/:custom_hostname_id'
13
+
14
+ def initialize(zone_id, custom_hostname_id)
15
+ @zone_id = zone_id
16
+ @custom_hostname_id = custom_hostname_id
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -6,6 +8,7 @@ module Cloudflair
6
8
 
7
9
  attr_reader :zone_id, :record_id
8
10
  deletable true
11
+ patchable_fields :content
9
12
  path 'zones/:zone_id/dns_records/:record_id'
10
13
 
11
14
  def initialize(zone_id, record_id)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/communication'
2
4
 
3
5
  module Cloudflair
@@ -13,7 +15,7 @@ module Cloudflair
13
15
  ##
14
16
  # @param purge_everything must be set to true
15
17
  def everything(purge_everything)
16
- resp = connection.delete(path) { |req| req.body = { purge_everything: purge_everything } }
18
+ resp = connection.post(path) { |req| req.body = { purge_everything: purge_everything } }
17
19
  response resp
18
20
  self
19
21
  end
@@ -23,7 +25,7 @@ module Cloudflair
23
25
  def selective(cache_identifier = {})
24
26
  return self if cache_identifier.nil? || cache_identifier.empty?
25
27
 
26
- resp = connection.delete(path) { |req| req.body = cache_identifier }
28
+ resp = connection.post(path) { |req| req.body = cache_identifier }
27
29
  response resp
28
30
  self
29
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/entity'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/api/zone/settings/advanced_ddos'
2
4
  require 'cloudflair/api/zone/settings/always_online'
3
5
  require 'cloudflair/api/zone/settings/browser_cache_ttl'
@@ -38,36 +40,36 @@ module Cloudflair
38
40
  end
39
41
 
40
42
  {
41
- advanced_ddos: Cloudflair::AdvancedDdos,
42
- always_online: Cloudflair::AlwaysOnline,
43
- browser_cache_ttl: Cloudflair::BrowserCacheTtl,
44
- browser_check: Cloudflair::BrowserCheck,
45
- cache_level: Cloudflair::CacheLevel,
46
- challenge_ttl: Cloudflair::ChallengeTtl,
47
- development_mode: Cloudflair::DevelopmentMode,
48
- email_obfuscation: Cloudflair::EmailObfuscation,
49
- hotlink_protection: Cloudflair::HotlinkProtection,
50
- ip_geolocation: Cloudflair::IpGeolocation,
51
- ipv6: Cloudflair::Ipv6,
52
- minify: Cloudflair::Minify,
53
- mirage: Cloudflair::Mirage,
54
- mobile_redirect: Cloudflair::MobileRedirect,
43
+ advanced_ddos: Cloudflair::AdvancedDdos,
44
+ always_online: Cloudflair::AlwaysOnline,
45
+ browser_cache_ttl: Cloudflair::BrowserCacheTtl,
46
+ browser_check: Cloudflair::BrowserCheck,
47
+ cache_level: Cloudflair::CacheLevel,
48
+ challenge_ttl: Cloudflair::ChallengeTtl,
49
+ development_mode: Cloudflair::DevelopmentMode,
50
+ email_obfuscation: Cloudflair::EmailObfuscation,
51
+ hotlink_protection: Cloudflair::HotlinkProtection,
52
+ ip_geolocation: Cloudflair::IpGeolocation,
53
+ ipv6: Cloudflair::Ipv6,
54
+ minify: Cloudflair::Minify,
55
+ mirage: Cloudflair::Mirage,
56
+ mobile_redirect: Cloudflair::MobileRedirect,
55
57
  origin_error_page_pass_thru: Cloudflair::OriginErrorPagePassThru,
56
- polish: Cloudflair::Polish,
57
- prefetch_preload: Cloudflair::PrefetchPreload,
58
- response_buffering: Cloudflair::ResponseBuffering,
59
- rocket_loader: Cloudflair::RocketLoader,
60
- security_header: Cloudflair::SecurityHeader,
61
- security_level: Cloudflair::SecurityLevel,
62
- server_side_exclude: Cloudflair::ServerSideExclude,
58
+ polish: Cloudflair::Polish,
59
+ prefetch_preload: Cloudflair::PrefetchPreload,
60
+ response_buffering: Cloudflair::ResponseBuffering,
61
+ rocket_loader: Cloudflair::RocketLoader,
62
+ security_header: Cloudflair::SecurityHeader,
63
+ security_level: Cloudflair::SecurityLevel,
64
+ server_side_exclude: Cloudflair::ServerSideExclude,
63
65
  sort_query_string_for_cache: Cloudflair::SortQueryStringForCache,
64
- ssl: Cloudflair::Ssl,
65
- tls_client_auth: Cloudflair::TlsClientAuth,
66
- tls_1_2_only: Cloudflair::Tls12Only,
67
- tls_1_3: Cloudflair::Tls13,
68
- true_client_ip_header: Cloudflair::TrueClientIpHeader,
69
- waf: Cloudflair::Waf,
70
- websockets: Cloudflair::Websockets,
66
+ ssl: Cloudflair::Ssl,
67
+ tls_client_auth: Cloudflair::TlsClientAuth,
68
+ tls_1_2_only: Cloudflair::Tls12Only,
69
+ tls_1_3: Cloudflair::Tls13,
70
+ true_client_ip_header: Cloudflair::TrueClientIpHeader,
71
+ waf: Cloudflair::Waf,
72
+ websockets: Cloudflair::Websockets
71
73
  }.each do |method, klass|
72
74
  define_method method do
73
75
  klass.new @zone_id
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/api/zone/analytics'
2
4
  require 'cloudflair/api/zone/available_plan'
3
5
  require 'cloudflair/api/zone/available_rate_plan'
@@ -12,6 +14,7 @@ module Cloudflair
12
14
  require 'cloudflair/api/zone__dns_records'
13
15
  require 'cloudflair/api/zone__available_plans'
14
16
  require 'cloudflair/api/zone__railguns'
17
+ require 'cloudflair/api/zone__custom_hostnames'
15
18
 
16
19
  attr_reader :zone_id
17
20
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/api/zone/available_plan'
2
4
 
3
5
  module Cloudflair
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cloudflair/api/zone/custom_hostname'
4
+
5
+ module Cloudflair
6
+ class Zone
7
+ def custom_hostnames(filter = {})
8
+ raw_hostnames = response connection.get("#{path}/custom_hostnames", filter)
9
+
10
+ raw_hostnames.map { |raw_hostname| build_custom_hostname(raw_hostname) }
11
+ end
12
+
13
+ def custom_hostname(custom_hostname_id)
14
+ Cloudflair::CustomHostname.new zone_id, custom_hostname_id
15
+ end
16
+
17
+ def new_custom_hostname(hostname_data)
18
+ raw_hostname = response connection.post("#{path}/custom_hostnames", hostname_data)
19
+
20
+ build_custom_hostname raw_hostname
21
+ end
22
+
23
+ private
24
+
25
+ def build_custom_hostname(raw_hostname)
26
+ hostname = custom_hostname raw_hostname['id']
27
+ hostname.data = raw_hostname
28
+ hostname
29
+ end
30
+ end
31
+ end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/api/zone/dns_record'
2
4
 
3
5
  module Cloudflair
4
6
  class Zone
5
7
  def dns_records(filter = {})
6
8
  raw_records = response connection.get("#{path}/dns_records", filter)
7
-
8
9
  raw_records.map { |raw_record| build_dns_record(raw_record) }
9
10
  end
10
11
 
@@ -14,7 +15,6 @@ module Cloudflair
14
15
 
15
16
  def new_dns_record(record_data)
16
17
  raw_record = response connection.post("#{path}/dns_records", record_data)
17
-
18
18
  build_dns_record raw_record
19
19
  end
20
20
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/api/zone/railgun'
2
4
 
3
5
  module Cloudflair
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/api/zone'
2
4
  require 'cloudflair/api/railguns'
3
5
  require 'cloudflair/communication'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/error/cloudflare_error'
2
4
  require 'cloudflair/error/cloudflair_error'
3
5
  require 'cloudflair/connection'
@@ -35,8 +37,9 @@ module Cloudflair
35
37
  body = response.body
36
38
 
37
39
  unless body['success']
38
- fail Cloudflair::CloudflairError, "Unrecognized response format: '#{body}'" unless body['errors']
39
- fail Cloudflair::CloudflareError, body['errors']
40
+ raise Cloudflair::CloudflairError, "Unrecognized response format: '#{body}'" unless body['errors']
41
+
42
+ raise Cloudflair::CloudflareError, body['errors']
40
43
  end
41
44
 
42
45
  body['result']
@@ -44,32 +47,32 @@ module Cloudflair
44
47
 
45
48
  def raise_on_http_error(status)
46
49
  case status
47
- when 200..399 then
48
- when 400..499 then
50
+ when 200..399
51
+ when 400..499
49
52
  raise_on_http_client_error status
50
- when 500..599 then
51
- fail Cloudflair::CloudflairError, "#{status} Remote Error"
53
+ when 500..599
54
+ raise Cloudflair::CloudflairError, "#{status} Remote Error"
52
55
  else
53
- fail Cloudflair::CloudflairError, "#{status} Unknown Error Code"
56
+ raise Cloudflair::CloudflairError, "#{status} Unknown Error Code"
54
57
  end
55
58
  end
56
59
 
57
60
  def raise_on_http_client_error(status)
58
61
  case status
59
- when 400 then
60
- fail Cloudflair::CloudflairError, '400 Bad Request'
61
- when 401 then
62
- fail Cloudflair::CloudflairError, '401 Unauthorized'
63
- when 403 then
64
- fail Cloudflair::CloudflairError, '403 Forbidden'
65
- when 405 then
66
- fail Cloudflair::CloudflairError, '405 Method Not Allowed'
67
- when 415 then
68
- fail Cloudflair::CloudflairError, '415 Unsupported Media Type'
69
- when 429 then
70
- fail Cloudflair::CloudflairError, '429 Too Many Requests'
62
+ when 400
63
+ raise Cloudflair::CloudflairError, '400 Bad Request'
64
+ when 401
65
+ raise Cloudflair::CloudflairError, '401 Unauthorized'
66
+ when 403
67
+ raise Cloudflair::CloudflairError, '403 Forbidden'
68
+ when 405
69
+ raise Cloudflair::CloudflairError, '405 Method Not Allowed'
70
+ when 415
71
+ raise Cloudflair::CloudflairError, '415 Unsupported Media Type'
72
+ when 429
73
+ raise Cloudflair::CloudflairError, '429 Too Many Requests'
71
74
  else
72
- fail Cloudflair::CloudflairError, "#{status} Request Error"
75
+ raise Cloudflair::CloudflairError, "#{status} Request Error"
73
76
  end
74
77
  end
75
78
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'faraday'
2
4
  require 'faraday_middleware'
3
5
  require 'faraday/detailed_logger'
@@ -7,25 +9,32 @@ module Cloudflair
7
9
  class Connection
8
10
  def self.new
9
11
  config = Cloudflair.config
10
-
11
12
  new_faraday_from config
12
13
  end
13
14
 
14
- def self.headers
15
- headers = {}
15
+ def self.headers # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
16
16
  cloudflare_auth_config = Cloudflair.config.cloudflare.auth
17
- if !(cloudflare_auth_config.key.nil? || cloudflare_auth_config.email.nil?)
18
- headers['X-Auth-Key'] = cloudflare_auth_config.key
19
- headers['X-Auth-Email'] = cloudflare_auth_config.email
20
- elsif !cloudflare_auth_config.user_service_key.nil?
21
- headers['X-Auth-User-Service-Key'] = cloudflare_auth_config.user_service_key
22
- else
23
- raise CloudflairError, 'Neither email & key nor user_service_key have been defined.'
17
+
18
+ if !cloudflare_auth_config.key.nil? && !cloudflare_auth_config.email.nil?
19
+ return({
20
+ 'X-Auth-Key' => cloudflare_auth_config.key,
21
+ 'X-Auth-Email' => cloudflare_auth_config.email
22
+ })
24
23
  end
25
- headers
24
+
25
+ unless cloudflare_auth_config.user_service_key.nil?
26
+ return({
27
+ 'Authorization' => "Bearer #{cloudflare_auth_config.user_service_key}"
28
+ })
29
+ end
30
+
31
+ raise(
32
+ CloudflairError,
33
+ 'Neither email & key nor user_service_key have been defined.'
34
+ )
26
35
  end
27
36
 
28
- private_class_method def self.new_faraday_from(config)
37
+ private_class_method def self.new_faraday_from(config) # rubocop:disable Metrics/AbcSize
29
38
  Faraday.new(url: config.cloudflare.api_base_url, headers: headers) do |faraday|
30
39
  faraday.request :json
31
40
  faraday.response config.faraday.logger if config.faraday.logger
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/communication'
2
4
 
3
5
  module Cloudflair
@@ -16,13 +18,14 @@ module Cloudflair
16
18
  def patchable_fields(*fields)
17
19
  return @patchable_fields if @patchable_fields
18
20
 
19
- if fields.nil?
20
- @patchable_fields = []
21
- elsif fields.is_a?(Array)
22
- @patchable_fields = fields.map(&:to_s)
23
- else
24
- @patchable_fields = [fields.to_s]
25
- end
21
+ @patchable_fields =
22
+ if fields.nil?
23
+ []
24
+ elsif fields.is_a?(Array)
25
+ fields.map(&:to_s)
26
+ else
27
+ [fields.to_s]
28
+ end
26
29
  end
27
30
 
28
31
  def deletable(deletable = false)
@@ -34,7 +37,7 @@ module Cloudflair
34
37
  def path(path = nil)
35
38
  return @path if @path
36
39
 
37
- fail ArgumentError, 'path is not defined' if path.nil?
40
+ raise ArgumentError, 'path is not defined' if path.nil?
38
41
 
39
42
  @path = path
40
43
  end
@@ -42,11 +45,12 @@ module Cloudflair
42
45
  def object_fields(*fields)
43
46
  return @object_fields if @object_fields
44
47
 
45
- if fields.nil? || fields.empty?
46
- @object_fields = []
47
- else
48
- @object_fields = fields.map(&:to_s)
49
- end
48
+ @object_fields =
49
+ if fields.nil? || fields.empty?
50
+ []
51
+ else
52
+ fields.map(&:to_s)
53
+ end
50
54
  end
51
55
 
52
56
  # allowed values:
@@ -69,17 +73,17 @@ module Cloudflair
69
73
  end
70
74
 
71
75
  def turn_all_items_into_a_single_hash(fields_to_class_map)
72
- fields_map = {}
73
- fields_to_class_map.each do |field_definition|
74
- if field_definition.is_a?(Hash)
75
- fields_to_class_map[0].each do |field, klass_or_proc|
76
- fields_map[field.to_s] = klass_or_proc
76
+ {}.tap do |fields_map|
77
+ fields_to_class_map.each do |field_definition|
78
+ if field_definition.is_a?(Hash)
79
+ fields_to_class_map[0].each do |field, klass_or_proc|
80
+ fields_map[field.to_s] = klass_or_proc
81
+ end
82
+ else
83
+ fields_map[field_definition.to_s] = nil
77
84
  end
78
- else
79
- fields_map[field_definition.to_s] = nil
80
85
  end
81
86
  end
82
- fields_map
83
87
  end
84
88
  end
85
89
 
@@ -102,7 +106,7 @@ module Cloudflair
102
106
  end
103
107
 
104
108
  def delete
105
- fail Cloudflair::CloudflairError, "Can't delete unless deletable=true" unless deletable
109
+ raise Cloudflair::CloudflairError, "Can't delete unless deletable=true" unless deletable
106
110
  return self if @deleted
107
111
 
108
112
  @data = response connection.delete path
@@ -126,27 +130,23 @@ module Cloudflair
126
130
  def method_missing(name_as_symbol, *args, &block)
127
131
  name = normalize_accessor name_as_symbol
128
132
 
129
- return data if :_raw_data! == name_as_symbol
133
+ return data if name_as_symbol == :_raw_data!
130
134
 
131
135
  if name.end_with?('=')
132
136
  if patchable_fields.include?(name[0..-2])
133
137
  dirty_data[name[0..-2]] = args[0]
134
138
  return
135
- else
136
- super
137
139
  end
138
- end
139
140
 
140
- # allow access to the unmodified data using 'zone.always_string!' or 'zone._name!'
141
- if name.end_with?('!') && data.keys.include?(name[0..-2])
142
- return data[name[0..2]]
141
+ super
143
142
  end
144
143
 
144
+ # allow access to the unmodified data using 'zone.always_string!' or 'zone._name!'
145
+ return data[name[0..2]] if name.end_with?('!') && data.key?(name[0..-2])
145
146
  return objectify(name) if object_fields.include? name
146
- return arrayify(name, array_object_fields[name]) if array_object_fields.keys.include? name
147
-
148
- return dirty_data[name] if dirty_data.keys.include? name
149
- return data[name] if data.is_a?(Hash) && data.keys.include?(name)
147
+ return arrayify(name, array_object_fields[name]) if array_object_fields.key?(name)
148
+ return dirty_data[name] if dirty_data.key?(name)
149
+ return data[name] if data.is_a?(Hash) && data.key?(name)
150
150
 
151
151
  super
152
152
  end
@@ -154,16 +154,13 @@ module Cloudflair
154
154
  def respond_to_missing?(name_as_symbol, *args)
155
155
  name = normalize_accessor name_as_symbol
156
156
 
157
- return true if :_raw_data! == name_as_symbol
158
-
157
+ return true if name_as_symbol == :_raw_data!
159
158
  return true if name.end_with?('=') && patchable_fields.include?(name[0..-2])
160
- return true if name.end_with?('!') && data.keys.include?(name[0..-2])
161
-
159
+ return true if name.end_with?('!') && data.key?(name[0..-2])
162
160
  return true if object_fields.include? name
163
- return true if array_object_fields.keys.include? name
164
-
165
- return true if dirty_data.keys.include? name
166
- return true if data.is_a?(Hash) && data.keys.include?(name)
161
+ return true if array_object_fields.key?(name)
162
+ return true if dirty_data.key?(name)
163
+ return true if data.is_a?(Hash) && data.key?(name)
167
164
 
168
165
  super
169
166
  end
@@ -235,9 +232,11 @@ module Cloudflair
235
232
 
236
233
  def replace_path_variables_in(path)
237
234
  interpreted_path = path.clone
235
+
238
236
  path.scan(/:([a-zA-Z_][a-zA-Z0-9_]+[!?=]?)/) do |match, *|
239
- interpreted_path.gsub! ":#{match}", send(match).to_s
237
+ interpreted_path = interpreted_path.gsub ":#{match}", send(match).to_s
240
238
  end
239
+
241
240
  interpreted_path
242
241
  end
243
242
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Cloudflair
2
4
  class CloudflairError < StandardError
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Cloudflair
2
4
  class CloudflareError < StandardError
3
5
  attr_reader :cloudflare_errors
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Cloudflair
2
- VERSION = '0.2.0'.freeze
3
4
  end
data/lib/cloudflair.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cloudflair/api'
2
4
  require 'cloudflair/version'
3
5
  require 'dry-configurable'
@@ -25,7 +27,7 @@ module Cloudflair
25
27
  extend Dry::Configurable
26
28
 
27
29
  setting :cloudflare do
28
- setting :api_base_url, 'https://api.cloudflare.com/client/v4/'
30
+ setting :api_base_url, default: "https://api.cloudflare.com/client/v4/"
29
31
  setting :auth do
30
32
  setting :key
31
33
  setting :email
@@ -34,7 +36,7 @@ module Cloudflair
34
36
  end
35
37
 
36
38
  setting :faraday do
37
- setting :adapter, :net_http
39
+ setting :adapter, default: :net_http
38
40
  setting :logger
39
41
  end
40
42
  end
metadata CHANGED
@@ -1,59 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudflair
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Mäder
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-22 00:00:00.000000000 Z
11
+ date: 2022-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: faraday
14
+ name: dry-configurable
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ">"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.0
19
+ version: '0.12'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - ">"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.10.0
26
+ version: '0.12'
27
27
  - !ruby/object:Gem::Dependency
28
- name: faraday_middleware
28
+ name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.10.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.10.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: dry-configurable
42
+ name: faraday-detailed_logger
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0.1'
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0.1'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: faraday-detailed_logger
56
+ name: faraday_middleware
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,33 +67,33 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: bundler
70
+ name: dotenv
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.12'
75
+ version: '2.1'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.12'
82
+ version: '2.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '12.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
96
+ version: '12.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -109,33 +109,33 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3.0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: dotenv
112
+ name: rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.1'
117
+ version: '0.48'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.1'
124
+ version: '0.48'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop
126
+ name: rubocop-performance
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '0.48'
131
+ version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '0.48'
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop-rspec
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -159,12 +159,15 @@ extra_rdoc_files: []
159
159
  files:
160
160
  - ".gitignore"
161
161
  - ".rspec"
162
+ - ".rubocop.yml"
163
+ - ".ruby-gemset"
162
164
  - ".ruby-version"
163
165
  - ".travis.yml"
164
166
  - Gemfile
165
167
  - LICENSE.txt
166
168
  - README.md
167
169
  - Rakefile
170
+ - VERSION
168
171
  - bin/cloudflair
169
172
  - bin/console
170
173
  - bin/setup
@@ -176,6 +179,7 @@ files:
176
179
  - lib/cloudflair/api/zone/analytics.rb
177
180
  - lib/cloudflair/api/zone/available_plan.rb
178
181
  - lib/cloudflair/api/zone/available_rate_plan.rb
182
+ - lib/cloudflair/api/zone/custom_hostname.rb
179
183
  - lib/cloudflair/api/zone/dns_record.rb
180
184
  - lib/cloudflair/api/zone/purge_cache.rb
181
185
  - lib/cloudflair/api/zone/railgun.rb
@@ -211,6 +215,7 @@ files:
211
215
  - lib/cloudflair/api/zone/settings/waf.rb
212
216
  - lib/cloudflair/api/zone/settings/websockets.rb
213
217
  - lib/cloudflair/api/zone__available_plans.rb
218
+ - lib/cloudflair/api/zone__custom_hostnames.rb
214
219
  - lib/cloudflair/api/zone__dns_records.rb
215
220
  - lib/cloudflair/api/zone__railguns.rb
216
221
  - lib/cloudflair/communication.rb
@@ -239,8 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
244
  - !ruby/object:Gem::Version
240
245
  version: '0'
241
246
  requirements: []
242
- rubyforge_project:
243
- rubygems_version: 2.5.2
247
+ rubygems_version: 3.1.6
244
248
  signing_key:
245
249
  specification_version: 4
246
250
  summary: Wrapper to CloudFlare's v4 REST API.