NAME Mojo::Cloudflare - Talk with the cloudflare API using Mojo::UserAgent VERSION 0.02 DESCRIPTION Mojo::Cloudflare is an async client for the CloudFlare API . SYNOPSIS use Mojo::Cloudflare; my $cf = Mojo::Cloudflare->new( email => 'sample@example.com', key => '8afbe6dea02407989af4dd4c97bb6e25', zone => 'example.com', ); for my $record (@{ $cf->records("all")->get("/objs") }) { warn $record->{zone_name}; $cf->edit_record({ id => $record->{rec_id}, type => 'CNAME', name => 'home', content => 'example.com', ttl => 1, service_mode => 0, }); } ATTRIBUTES api_url Holds the endpoint where we communicate. Default is . email $str = $self->email; $self = $self->email($str); The e-mail address associated with the API key. key $str = $self->key; $self = $self->key($str); This is the API key made available on your Account page. zone $str = $self->zone; $self = $self->zone($str); The zone (domain) to act on. METHODS add_record $json = $self->add_record(\%args); $self = $self->add_record(\%args, sub { my($self, $err, $json) = @_; # ... }); Used to add a new DNS record. $err is true and contains a string on error, while $json is a Mojo::JSON::Pointer object with the "rec" part from the JSON on success: { "request" => { ... }, "response" => { "rec" => { # <== this structure "obj" => { ... }, }, }, "result": ..., "msg": ... }; Example usage: $rec_tag = $json->get("/obj/rec_tag"); Valid %args: * type => {A,CNAME,MX,TXT,SPF,AAAA,NS,SRV,LOC}, Name of the DNS record. * name => $str Name of the DNS record * content => $str The content of the DNS record, will depend on the the type of record being added. * ttl => $int TTL of record in seconds. 1 (default) = Automatic, otherwise, value must in between 120 and 86400 seconds. * priority => $int MX record priority. delete_record $json = $self->delete_record($id); $self = $self->delete_record($id, sub { my($self, $err, $json) = @_; # ... }); Used to delete a DNS record. $err is true and contains a string on error, while $json is a Mojo::JSON::Pointer object on success. edit_record $json = $self->edit_record(\%args); $self = $self->edit_record(\%args, sub { my($self, $err, $json) = @_; # ... }); Used to edit a DNS record. $err is true and contains a string on error, while $json is a Mojo::JSON::Pointer object on success. See "add_record" for more details on the response. Valid %args: * id => $str DNS Record ID. Required argument. * type => {A,CNAME,MX,TXT,SPF,AAAA,NS,SRV,LOC}, Name of the DNS record. * name => $str Name of the DNS record * content => $str The content of the DNS record, will depend on the the type of record being added. * ttl => $int TTL of record in seconds. 1 = Automatic, otherwise, value must in between 120 and 86400 seconds. * service_mode => $bool Status of CloudFlare Proxy, 1 = orange cloud, 0 = grey cloud. * priority => $int MX record priority. records $json = $self->records($offset); $self = $self->records($offset, sub { my($self, $err, $json) = @_; }); $offset is optional and defaults to "all", which will retrieve all the DNS records instead of the limit of 180 set by CloudFlare. COPYRIGHT AND LICENSE Copyright (C) 2014, Jan Henning Thorsen This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0. AUTHOR Jan Henning Thorsen - "jhthorsen@cpan.org"