]> iEval git - webservice-foaas.git/blame - lib/WebService/FOAAS/Codegen.pm
Add https dependencies to PREREQ_PM
[webservice-foaas.git] / lib / WebService / FOAAS / Codegen.pm
CommitLineData
943f1904
MG
1package WebService::FOAAS::Codegen;
2
3use 5.014000;
4use strict;
5use warnings;
6
7use HTTP::Tiny;
8use JSON::MaybeXS qw/decode_json/;
9
10sub run {
11 my $ht = HTTP::Tiny->new;
12 my $result = $ht->get('https://foaas.com/operations');
13 die $result->{reason} unless $result->{success};
14
15 my @export;
16
17 print <<"EOF";
18### Start of code generated by WebService::FOAAS::Codegen->run
19
20\=head1 AVAILABLE METHODS
21
22\=over
23EOF
24
25 my @ops = map { $_->{url} =~ y/-/_/r } @{decode_json $result->{content}};
26 for my $op (@ops) {
27 my (undef, $name, @args) = split '/', $op;
28 my $nargs = @args;
29 push @export, "foaas_$name";
30 print <<"EOF"
31
32\=item foaas_$name @{[join ', ', map { y/:/$/r } @args]}
33
34\=cut
35
36sub foaas_$name {
37 die "Expected $nargs arguments" unless \@_ == $nargs || \@_ == @{[$nargs + 1]};
38 request '$name', \@_;
39}
40
41BEGIN { \*$name = \\&foaas_$name }
42EOF
43 }
44
45 my @export_ok = (@export, map { substr $_, 6 } @export);
46 print <<"EOF"
47
48BEGIN {
49 our \@EXPORT = qw/@export/;
50 our \@EXPORT_OK = qw/@export_ok/;
51}
52
53\=back
54
55\=cut
56
57### End of code generated by WebService::FOAAS::Codegen->run
58EOF
59}
60
611;
62__END__
This page took 0.02317 seconds and 4 git commands to generate.