Cloudflare-API
view release on metacpan or search on metacpan
lib/Cloudflare/API/Workers.pm view on Meta::CPAN
my ($self, $name, %opt)=@_;
return $self->api()->request('GET',
$self->api()->account_path('workers', 'scripts', $name, 'subdomain'), %opt);
}
sub set_subdomain {
my ($self, $name, $body_hr, %opt)=@_;
die "subdomain body must be a hash reference\n" unless ref($body_hr) eq 'HASH';
return $self->api()->request('POST',
$self->api()->account_path('workers', 'scripts', $name, 'subdomain'),
json => $body_hr, %opt);
}
sub list_routes {
# Worker routes are zone-scoped, unlike the account-scoped script calls
#
my ($self, $zone_id, %query)=@_;
return $self->collect_list($self->list_routes_page($zone_id, %query));
}
sub list_routes_page {
my ($self, $zone_id, %query)=@_;
return $self->list_pagination(
'/zones/'.$self->api()->segment($zone_id).'/workers/routes',
{ mode => 'single' }, \%query);
}
sub list_routes_page_response {
my ($self, $zone_id, %query)=@_;
return $self->list_response(
'/zones/'.$self->api()->segment($zone_id).'/workers/routes', \%query);
}
sub create_route {
my ($self, $zone_id, $body_hr, %opt)=@_;
die "route body must be a hash reference\n" unless ref($body_hr) eq 'HASH';
return $self->api()->request('POST',
'/zones/'.$self->api()->segment($zone_id).'/workers/routes',
json => $body_hr, %opt);
}
sub update_route {
my ($self, $zone_id, $route_id, $body_hr, %opt)=@_;
die "route body must be a hash reference\n" unless ref($body_hr) eq 'HASH';
return $self->api()->request('PUT',
'/zones/'.$self->api()->segment($zone_id).'/workers/routes/'.
$self->api()->segment($route_id), json => $body_hr, %opt);
}
sub delete_route {
my ($self, $zone_id, $route_id, %opt)=@_;
return $self->api()->request('DELETE',
'/zones/'.$self->api()->segment($zone_id).'/workers/routes/'.
$self->api()->segment($route_id), %opt);
}
__END__
=encoding utf8
=begin markdown
# Cloudflare::API::Workers #
# NAME #
Cloudflare::API::Workers - manage Worker scripts, versions, assets, and routes
# SYNOPSIS #
```perl
my $workers=$api->workers();
my $version=$workers->upload_version('my-app',
metadata => {
main_module => 'worker.mjs',
compatibility_date => '2026-09-22'
},
files => [{ name => 'worker.mjs', path => 'dist/worker.mjs' }]
);
$workers->create_deployment('my-app', {
strategy => 'percentage',
versions => [{ version_id => $version->{'id'}, percentage => 100 }]
});
```
# DESCRIPTION #
Most Worker methods use the account ID configured on `Cloudflare::API`. Route methods instead take a zone ID explicitly. The module sends prepared modules and Cloudflare metadata; it does not build scripts, invoke npm or Wrangler, generate a Worker e...
Cloudflare's Worker identifiers have distinct purposes. The `id` returned by `list_scripts()` is the script name used in API paths, `tag` is the immutable Worker ID, `tags` contains user-assigned labels, and `etag` identifies the current script conte...
Non-list JSON methods return Cloudflare's decoded `result` by default. Except where noted, pass `full_response => 1` to return the complete decoded Cloudflare response. List methods follow all available pages and return a flat array reference. Their ...
# METHODS #
* **list_scripts(%query)** â List all account Worker scripts and return a flat array reference. Cloudflare currently returns this endpoint in one response.
* **list_scripts_page(%query)** â Return a lazy `HTTP::API::Core::Pagination` object. It currently completes after Cloudflare's single response.
* **list_scripts_page_response(%query)** â Make one list request and return the complete decoded Cloudflare response hash.
( run in 0.571 second using v1.01-cache-2.11-cpan-145b269f2f3 )