From: Dietmar Maurer Date: Fri, 22 Jun 2018 07:50:13 +0000 (+0200) Subject: pve-api-definition.dat: add root index method X-Git-Url: https://git.proxmox.com/?p=pve-client.git;a=commitdiff_plain;h=2ecf9b57e894b6308daee2e60a2d7f5bd417932c pve-api-definition.dat: add root index method --- diff --git a/PVE/APIClient/Helpers.pm b/PVE/APIClient/Helpers.pm index 5c2e4cb..9ee00e9 100644 --- a/PVE/APIClient/Helpers.pm +++ b/PVE/APIClient/Helpers.pm @@ -51,31 +51,30 @@ sub print_result { # TODO: implement different output formats ($format) if ($format eq 'json') { - print to_json($data, {utf8 => 1, allow_nonref => 1, canonical => 1, pretty => 1 }); + print to_json($data, {utf8 => 1, allow_nonref => 1, canonical => 1, pretty => 1 }); } elsif ($format eq 'text') { - my $type = $result_schema->{type}; - if ($type eq 'object') { - die "implement me"; - } elsif ($type eq 'array') { - my $item_type = $result_schema->{items}->{type}; - if ($item_type eq 'object') { - die "implement me"; - } elsif ($item_type eq 'array') { - die "implement me"; - } else { - foreach my $el (@$data) { - print "$el\n" - } - } - } else { - print "$data\n"; - } + my $type = $result_schema->{type}; + if ($type eq 'object') { + die "implement me"; + } elsif ($type eq 'array') { + my $item_type = $result_schema->{items}->{type}; + if ($item_type eq 'object') { + die "implement me"; + } elsif ($item_type eq 'array') { + die "implement me"; + } else { + foreach my $el (@$data) { + print "$el\n" + } + } + } else { + print "$data\n"; + } } else { - die "internal error: unknown output format"; # should not happen + die "internal error: unknown output format"; # should not happen } } - my $__real_remove_formats; $__real_remove_formats = sub { my ($properties) = @_; @@ -164,7 +163,9 @@ sub find_method_info { my $stack = [ grep { length($_) > 0 } split('\/+' , $path)]; # skip empty fragments - my $child = $map_path_to_info->(get_api_definition(), $stack, $uri_param); + my $api = get_api_definition(); + + my $child = scalar(@$stack) ? $map_path_to_info->($api->{children}, $stack, $uri_param) : $api; if (!($child && $child->{info} && $child->{info}->{$method})) { return undef if $noerr; @@ -229,7 +230,7 @@ sub merge_api_definition_properties { sub complete_api_path { my ($text) = @_; - get_api_definition(); # make sure API data is loaded + my $api = get_api_definition(); # make sure API data is loaded $text =~ s!^/!!; @@ -238,10 +239,10 @@ sub complete_api_path { my $info; if (!defined($dir)) { $dir = ''; - $info = { children => $pve_api_definition }; + $info = $api; } else { my $stack = [ grep { length($_) > 0 } split('\/+' , $dir)]; # skip empty fragments - $info = $map_path_to_info->($pve_api_definition, $stack, {}); + $info = $map_path_to_info->($api->{children}, $stack, {}); } my $res = []; diff --git a/extractapi.pl b/extractapi.pl index 1971c9c..8a650df 100755 --- a/extractapi.pl +++ b/extractapi.pl @@ -32,9 +32,16 @@ sub remove_code_refs { } } -my $tree = PVE::RESTHandler::api_dump('PVE::API2', undef, 1); - -remove_code_refs($tree); -Storable::store_fd($tree, \*STDOUT); +my $root = { + path => '/', + text => '', + children => PVE::RESTHandler::api_dump('PVE::API2', undef, 1), + info => { + GET => PVE::API2->map_method_by_name('index'), + }, +}; + +remove_code_refs($root); +Storable::store_fd($root, \*STDOUT); exit(0); diff --git a/pve-api-definition.dat b/pve-api-definition.dat index 4fa941a..f21a6db 100644 Binary files a/pve-api-definition.dat and b/pve-api-definition.dat differ