From acaa3b8c5c3fafccd1738892bde62f697cba2058 Mon Sep 17 00:00:00 2001 From: Ryan Gasik Date: Wed, 24 Oct 2018 20:53:29 -0700 Subject: [PATCH] Break out utility functions into separate file, to allow other api portions to use --- lib/App/Netdisco/Web/Plugin/API/Device.pm | 50 +------------------ lib/App/Netdisco/Web/Plugin/API/Util.pm | 59 +++++++++++++++++++++++ 2 files changed, 60 insertions(+), 49 deletions(-) create mode 100644 lib/App/Netdisco/Web/Plugin/API/Util.pm diff --git a/lib/App/Netdisco/Web/Plugin/API/Device.pm b/lib/App/Netdisco/Web/Plugin/API/Device.pm index ae457899..a270910d 100644 --- a/lib/App/Netdisco/Web/Plugin/API/Device.pm +++ b/lib/App/Netdisco/Web/Plugin/API/Device.pm @@ -10,55 +10,7 @@ use Dancer::Exception qw(:all); use App::Netdisco::Web::Plugin; -sub parse_search_params { - my $params = shift; - my $search = {}; - my $partial = $params->{partial} || 0; - foreach my $param (keys %{$params}) { - if ($param ne 'return_url' and $param ne 'partial') { - if ($partial == 1) { - $search->{"text(".$param.")"} = { like => '%'.$params->{$param}.'%'}; - } - else { - $search->{$param} = $params->{$param}; - } - } - } - return $search; -} -sub format_data { - my $items = shift; - - header( 'Content-Type' => 'application/json'); - my $results = {}; - if (ref($items) =~ m/ResultSet/) { - my @hashes; - foreach my $item ($items->all) { - my $c = {}; - my $columns = $item->{_column_data}; - foreach my $col (keys %{$columns}) { - $c->{$col} = $columns->{$col}; - } - push @hashes, $c; - } - $results->{data} = \@hashes; - } - elsif (ref($items) =~ m/Result/) { - $results->{data} = $items->{_column_data}; - } - else { - $results->{data} = $items; - } - return to_json $results; -}; - -sub format_error { - my $status = shift; - my $message = shift; - header( 'Content-Type' => 'application/json'); - status $status; - return to_json { error => $message }; -} +use App::Netdisco::Web::Plugin::API::Util; get '/api/device/all' => sub { my $devices=schema('netdisco')->resultset('Device')->all; diff --git a/lib/App/Netdisco/Web/Plugin/API/Util.pm b/lib/App/Netdisco/Web/Plugin/API/Util.pm new file mode 100644 index 00000000..5e36a9e4 --- /dev/null +++ b/lib/App/Netdisco/Web/Plugin/API/Util.pm @@ -0,0 +1,59 @@ +package App::Netdisco::Web::Plugin::API::Util; +#Collection of API utilities + +use Dancer ':syntax'; + +use base 'Exporter'; +our @EXPORT = qw/parse_search_params format_data format_error/; + +sub parse_search_params { + my $params = shift; + my $search = {}; + my $partial = $params->{partial} || 0; + foreach my $param (keys %{$params}) { + if ($param ne 'return_url' and $param ne 'partial') { + if ($partial == 1) { + $search->{"text(".$param.")"} = { like => '%'.$params->{$param}.'%'}; + } + else { + $search->{$param} = $params->{$param}; + } + } + } + return $search; +} +sub format_data { + my $items = shift; + + header( 'Content-Type' => 'application/json'); + my $results = {}; + if (ref($items) =~ m/ResultSet/) { + my @hashes; + foreach my $item ($items->all) { + my $c = {}; + my $columns = $item->{_column_data}; + foreach my $col (keys %{$columns}) { + $c->{$col} = $columns->{$col}; + } + push @hashes, $c; + } + $results->{data} = \@hashes; + } + elsif (ref($items) =~ m/Result/) { + $results->{data} = $items->{_column_data}; + } + else { + $results->{data} = $items; + } + return to_json $results; +}; + +sub format_error { + my $status = shift; + my $message = shift; + header( 'Content-Type' => 'application/json'); + status $status; + return to_json { error => $message }; +} + +true;