use Data::Dumper;
use File::Basename;
use Cwd qw(realpath);
+use JSON -support_by_pp;
+use File::Temp qw(tempfile);
use strict;
@ISA = qw(Exporter);
my @getters;
my $getter;
my %builtin_config = ();
+my $builtin_config_path;
+my $builtin_config_default;
our $error;
#
# ==============================================
#
sub _builtin_config_init {
+
+ if (defined($builtin_config_path)) {
+ my $filename = File::Spec->catfile($builtin_config_path, 'videosite.json');
+
+ _debug("Trying to load configuration from %s", $filename);
+
+ if (-r $filename) {
+ eval {
+ local $/;
+ open(CONF, '<', $filename);
+ %builtin_config = %{JSON->new->utf8->decode(<CONF>)};
+ close(CONF);
+ } or do {
+ _io("Error loading configuration: %s", $@);
+ }
+ };
+ } elsif (defined($builtin_config_default)) {
+ _debug("Initializing builtin config from external default");
+ foreach (keys(%{$builtin_config_default})) {
+ _debug("Setting %s=%s", $_, $builtin_config_default->{$_});
+ $builtin_config{$_} = $builtin_config_default->{$_};
+ }
+ }
}
sub _builtin_config_get {
}
sub _builtin_config_save {
+
+ if (defined($builtin_config_path)) {
+ my $filename = File::Spec->catfile($builtin_config_path, 'videosite.json');
+
+ _debug("Attempting to save config to %s", $filename);
+
+ eval {
+ my ($tempfile, $tempfn) = tempfile("videosite.json.XXXXXX", dir => $builtin_config_path);
+ print $tempfile JSON->new->pretty->utf8->encode(\%builtin_config);
+ close($tempfile);
+ rename($tempfn, $filename);
+ } or do {
+ return 0;
+ }
+ }
+
+ return 1;
}
sub _builtin_config_del {
$debug = $a->{_debug}->();
}
+ if (exists($a->{_config_path})) {
+ $builtin_config_path = $a->{_config_path}->();
+ }
+
+ if (exists($a->{_config_default})) {
+ $builtin_config_default = $a->{_config_default}->();
+ }
+
@outputstack = ({ewpf => $remote_api->{'io'}, window => ""});
return 1;