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