class CloudflareClient::Zone

Constants

VALID_ZONE_STATUSES

Public Class Methods

new(*args) click to toggle source

Zone based operations

Calls superclass method CloudflareClient::new
# File lib/cloudflare_client/zone.rb, line 10
def initialize(*args)
  super
end

Public Instance Methods

create_zone(name:, jump_start: true, organization: {id: nil, name: nil}) click to toggle source

create's a zone with a given name create_zone(name: name_of_zone, jump_start: true|false (default true), organization: {id: org_id, name: org_name})

# File lib/cloudflare_client/zone.rb, line 36
def create_zone(name:, jump_start: true, organization: {id: nil, name: nil})
  raise('Zone name required') if name.nil?
  unless organization[:id].nil? && organization[:name].nil
    org_data = organization.merge(status: 'active', permissions: ['#zones:read'])
  end
  data = {name: name, jump_start: jump_start, organization: org_data}
  cf_post(path: '/zones', data: data)
end
delete_zone(zone_id:) click to toggle source

delete a given zone delete_zone(zone_id: id_of_zone

# File lib/cloudflare_client/zone.rb, line 93
def delete_zone(zone_id:)
  raise('zone_id required') if zone_id.nil?
  cf_delete(path: "/zones/#{zone_id}")
end
edit_zone(zone_id:, paused: nil, vanity_name_servers: [], plan: {id: nil}) click to toggle source

edit the properties of a zone NOTE: some of these options require an enterprise account edit_zone(zone_id: id_of_zone, paused: true|false, vanity_name_servers: ['ns1.foo.bar', 'ns2.foo.bar'], plan: {id: plan_id})

# File lib/cloudflare_client/zone.rb, line 66
def edit_zone(zone_id:, paused: nil, vanity_name_servers: [], plan: {id: nil})
  raise('zone_id required') if zone_id.nil?
  data                       = {}
  data[:paused]              = paused unless paused.nil?
  data[:vanity_name_servers] = vanity_name_servers unless vanity_name_servers.empty?
  data[:plan]                = plan unless plan[:id].nil?
  cf_patch(path: "/zones/#{zone_id}", data: data)
end
purge_zone_cache(zone_id:, tags: [], files: [], purge_everything: nil) click to toggle source

various zone caching controlls. supploy an array of tags, or files, or the purge_everything bool

# File lib/cloudflare_client/zone.rb, line 78
def purge_zone_cache(zone_id:, tags: [], files: [], purge_everything: nil)
  raise('zone_id required') if zone_id.nil?
  if purge_everything.nil? && (tags.empty? && files.empty?)
    raise('specify a combination tags[], files[] or purge_everything')
  end
  data                    = {}
  data[:purge_everything] = purge_everything unless purge_everything.nil?
  data[:tags]             = tags unless tags.empty?
  data[:files]            = files unless files.empty?
  cf_delete(path: "/zones/#{zone_id}/purge_cache", data: data)
end
update_zone_settings(zone_id:, settings: []) click to toggle source

update 1 or more settings in a zone settings: [{name: value: true},{name: 'value'}…] api.cloudflare.com/#zone-settings-properties

# File lib/cloudflare_client/zone.rb, line 117
def update_zone_settings(zone_id:, settings: [])
  raise('zone_id required') if zone_id.nil?
  data = settings.map do |setting|
    raise("setting_name \"#{setting[:name]}\" not valid") unless valid_setting?(setting[:name])
    {id: setting[:name], value: setting[:value]}
  end
  data = {items: data}
  cf_patch(path: "/zones/#{zone_id}/settings", data: data)
end
zone(zone_id:) click to toggle source

return all the details for a given zone_id zone_details(zone_id: id_of_my_zone

# File lib/cloudflare_client/zone.rb, line 56
def zone(zone_id:)
  raise('zone_id required') if zone_id.nil?
  cf_get(path: "/zones/#{zone_id}")
end
zone_activation_check(zone_id:) click to toggle source

request another zone activation (ssl) check zone_activation_check(zone_id:)

# File lib/cloudflare_client/zone.rb, line 48
def zone_activation_check(zone_id:)
  raise('zone_id required') if zone_id.nil?
  cf_put(path: "/zones/#{zone_id}/activation_check")
end
zone_setting(zone_id:, name:) click to toggle source

there are a lot of settings that can be returned.

# File lib/cloudflare_client/zone.rb, line 107
def zone_setting(zone_id:, name:)
  raise('zone_id required') if zone_id.nil?
  raise('setting_name not valid') if name.nil? || !valid_setting?(name)
  cf_get(path: "/zones/#{zone_id}/settings/#{name}")
end
zone_settings(zone_id:) click to toggle source

return all settings for a given zone

# File lib/cloudflare_client/zone.rb, line 100
def zone_settings(zone_id:)
  raise('zone_id required') if zone_id.nil?
  cf_get(path: "/zones/#{zone_id}/settings")
end
zones(name: nil, status: nil, per_page: 50, page: 1) click to toggle source

list_zones will either list all zones or search for zones based on params results are paginated! list_zones(name: name_of_zone, status: active|pending, page: page_no)

# File lib/cloudflare_client/zone.rb, line 18
def zones(name: nil, status: nil, per_page: 50, page: 1)
  params            = {}
  params[:per_page] = per_page
  params[:page]     = page
  params[:name]     = name unless name.nil?

  unless status.nil?
    raise "status must be one of #{VALID_ZONE_STATUSES.flatten}" unless VALID_ZONE_STATUSES.include?(status)
    params[:status] = status
  end

  cf_get(path: '/zones', params: params)
end