API-CLI
view release on metacpan or search on metacpan
lib/API/CLI.pm view on Meta::CPAN
my $data = do { local $/; <$fh> };
close $fh;
$REQ->content($data);
}
}
my ($ok, $out, $content) = $REQ->request;
if (defined $out) {
unless ($ok) {
$out = $run->error($out);
}
warn $out;
}
say $content;
}
1;
__END__
=pod
=head1 NAME
API::CLI - Generic Framework for REST API Command Line Clients
=head1 SYNOPSIS
use API::CLI::App::Spec;
package API::CLI::MetaCPAN;
use base 'API::CLI';
sub add_auth {
}
package main;
my $appspec_file = "$Bin/../metacpancl-appspec.yaml";
my $spec = API::CLI::App::Spec->read($appspec_file);
my $runner = App::Spec::Run->new(
spec => $spec,
cmd => API::CLI::MetaCPAN->new(
dir => "$ENV{HOME}/.githubcl",
),
);
$runner->run;
=head1 DESCRIPTION
This is an experimental first version.
With API::CLI you can create a simple commandline client for any
REST API which has an OpenAPI specification.
# 1. parameter: owner
# 2. parameter: repo
% githubcl GET /repos/:owner/:repo perlpunk API-CLI-p5
The generated help will show all methods, endpoints, parameters and
options.
Query parameters are represented as command line options starting with
C<--q->:
% metacpancl GET /pod/:module App::Spec --q-content-type text/x-pod
=head1 NAME
App::Spec - Specification for commandline apps
...
It can also generate shell tab completion:
% metacpancl <TAB>
GET -- GET call
POST -- POST call
help -- Show command help
% digitaloceancl GET /<TAB>
/account -- Account information
/droplets -- List all droplets
/droplets/:id -- Retrieve a droplet by id
% metacpancl GET /pod/:module App::Spec --q-content-type text/<TAB>
text/html text/plain text/x-markdown text/x-pod
Bash users: Note that completion for options and parameters currently does not
work.
=head1 METHODS
=over 4
=item add_auth
=item apicall
=item dir
=item read_appconfig
=item openapi
=back
=head1 SEE ALSO
=over 4
=item L<https://github.com/APIs-guru/openapi-directory>
=item L<App::Spec> - Commandline Interface Framework
=head1 LICENSE
This library is free software and may be distributed under the same terms
as perl itself.
( run in 0.827 second using v1.01-cache-2.11-cpan-3782747c604 )