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 )