Cryflare

Cryflare is a low-level API client for Cloudflare® v4. It features an intuitive interface that maps directly to the Cloudflare API.

Usage Examples

# Create a new client
client = Cryflare.new(email: "cloudflare-email", key: "cloudflare-api-key")
  1. Get zone by name

    client.zones.list(name: "grottopress.com") do |response|
      if response.success?
        response.result.try &.first?.try do |zone|
          puts zone.id
          puts zone.name
          puts zone.owner.name
          # ...
        end
      else
        response.errors.each do |error|
          puts error.code
          puts error.message
        end
      end
    end
  2. Create new DNS record

    client.dns_records.create(
      "zone-id",
      type: "A",
      name: "example.com",
      content: "127.0.0.1",
      ttl: 120
    ) do |response|
      if response.success?
        response.result.try do |dns_record|
          puts dns_record.id
          puts dns_record.name
          puts dns_record.content
          # ...
        end
      else
        response.errors.each do |error|
          puts error.code
          puts error.message
        end
      end
    end
  3. Delete firewall rule

    client.firewall_rules.delete("zone-id", "rule-id") do |response|
      if response.success?
        response.result.try do |firewall_rule|
          puts firewall_rule.id
          # ...
        end
      else
        response.errors.each do |error|
          puts error.code
          puts error.message
        end
      end
    end

Documentation

Find the complete documentation in the docs/ directory of this repository.

Todo

Development

Generate a token from your Cloudflare account that can read zones (Zone:Read).

Create a .env.sh file:

#!/bin/bash
#
export CLOUDFLARE_TOKEN='your-cloudflare-token-here'

Update the file with your own details. Then run tests with source .env.sh && crystal spec.

IMPORTANT: Remember to set permissions for your env file to 0600 or stricter: chmod 0600 .env*.

Contributing

  1. Fork it
  2. Switch to the master branch: git checkout master
  3. Create your feature branch: git checkout -b my-new-feature
  4. Make your changes, updating changelog and documentation as appropriate.
  5. Commit your changes: git commit
  6. Push to the branch: git push origin my-new-feature
  7. Submit a new Pull Request against the GrottoPress:master branch.

Legal

Cloudflare is a registered trademark of Cloudflare, Inc.