[interchange] Make JSON non-required module
David Christensen <[email protected]> Tue, 30 Dec 2014 16:30:00 +0000
| Newsgroups | gmane.comp.web.interchange.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 75bf32b7cccdfba3e864a441c4ab965882a56cf0 Author: David Christensen <[email protected]> Date: Tue Dec 30 10:29:38 2014 -0600 Make JSON non-required module lib/Vend/Server.pm | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) --- diff --git a/lib/Vend/Server.pm b/lib/Vend/Server.pm index 09fe475..dfd47a9 100644 --- a/lib/Vend/Server.pm +++ b/lib/Vend/Server.pm @@ -23,7 +23,7 @@ package Vend::Server; -use vars qw($VERSION); +use vars qw($VERSION $Has_JSON); $VERSION = '2.107'; use Cwd; @@ -35,9 +35,18 @@ use Errno qw/:POSIX/; use Config; use Socket; use Symbol; -use JSON (); use strict; +{ + local $@; + eval { + require JSON; + }; + unless ($@) { + $Has_JSON = 1; + } +} + no warnings qw(uninitialized); my $ppidsub = sub { return getppid }; @@ -323,13 +332,13 @@ sub parse_cgi { if ($CGI::content_type =~ m{^(?:multipart/form-data|application/x-www-form-urlencoded|application/xml|application/json)\b}i) { parse_post(\$CGI::query_string, 1) if $Global::TolerateGet; - if ($CGI::content_type =~ m{^application/json\s*(?:;|$)}i) { + if ($Has_JSON && $CGI::content_type =~ m{^application/json\s*(?:;|$)}i) { $CGI::post_ref = $h->{entity}; undef $CGI::json_ref; eval { $CGI::json_ref = JSON::from_json($$CGI::post_ref); #::logDebug('json: %s', ::uneval($CGI::json_ref)); - # populate CGI from json_ref; maybe make a directive? + if ($Global::UnpackJSON && ref $CGI::json_ref eq 'HASH') { @CGI::values{keys %$CGI::json_ref} = values %$CGI::json_ref; }