Cloudflare
API Client. Written for the Elixir community,
based on :restlax
.
If available in Hex, the package can be installed
by adding cloudflare
to your list of dependencies in mix.exs
:
def deps do
[
{:cloudflare, "~> 0.2"}
]
end
config :cloudflare,
auth_token: "my-auth-token"
Or
config :cloudflare,
auth_email: "[email protected]",
auth_key: "my-auth-key"
Or both ¯\(°_o)/¯
.
Cloudflare.Zone.index(opts: [auth_token: "my-auth-token"])
Cloudflare.Zone.index(opts: [auth_email: "[email protected]", auth_key: "my-auth-key"])
Or directly as header
Cloudflare.Zone.index(headers: [{"Authorization", "Bearer my-auth-token"}])
Cloudflare.Zone.index(headers: [{"X-Auth-Email", "[email protected]"}, {"X-Auth-Key", "my-auth-key"}])
Normally it's teadius to explicitly pass the client module in.
Cloudflare.Zone.index(client: CloudFlare.Client)
It can be registered on application start, e.g. in YourApp.Application.start
defmodule YourApp.Application do
use Application
def start(_type, _args) do
Cloudflare.Client.init() # <- You can add this line
children = [
{Phoenix.PubSub, name: App.PubSub},
App.Repo,
AppWeb.Endpoint
]
opts = [strategy: :one_for_one, name: App.Supervisor]
Supervisor.start_link(children, opts)
end
def config_change(changed, _new, removed) do
AppWeb.Endpoint.config_change(changed, removed)
:ok
end
end
Cloudflare.Zone.index()
Cloudflare.DnsRecord.index(params: [zone_id: "my-zone-id"])
Cloudflare.DnsRecord.create(
%{type: "A", name: "my.domain", content: "127.0.0.1", ttl: 120},
params: [zone_id: "my-zone-id"]
)
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/cloudflare.
Half manually scraped Cloudflare docs are located in priv/docs
. Pick an entity and write module for it.
Simple entities can be as easy as Cloudflare.Account
and Cloudflare.User
Some need a little customization like Cloudflare.DnsRecord
Some need more Cloudflare.ZoneSetting