InfluxDB
view release on metacpan or search on metacpan
lib/InfluxDB.pm view on Meta::CPAN
state $rule = Data::Validator->new(
q => { isa => 'Str' },
name => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
return $self->query(q => "$args->{q} into $args->{name}");
}
sub list_continuous_queries {
my $self = shift;
return $self->query(q => "list continuous queries");
}
sub drop_continuous_query {
state $rule = Data::Validator->new(
id => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
return $self->query(q => "drop continuous query $args->{id}");
}
### user #################################################################
sub create_database_user {
state $rule = Data::Validator->new(
name => { isa => 'Str' },
password => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = $self->_build_url(
path => '/db/' . $self->database . '/users',
);
my $res = $self->{ua}->post($url, [], $self->json->encode({
name => $args->{name},
password => $args->{password},
}));
$self->status($res);
return $res->is_success ? 1 : ();
}
sub delete_database_user {
state $rule = Data::Validator->new(
name => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = $self->_build_url(
path => '/db/' . $self->database . '/users/' . $args->{name},
);
my $res = $self->{ua}->delete($url);
$self->status($res);
return $res->is_success ? 1 : ();
}
sub update_database_user {
state $rule = Data::Validator->new(
name => { isa => 'Str' },
password => { isa => 'Str', optional => 1 },
admin => { isa => 'JSONBool', optional => 1 },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = $self->_build_url(
path => '/db/' . $self->database . '/users/' . $args->{name},
);
my $res = $self->{ua}->post($url, [], $self->json->encode({
exists $args->{password} ? (password => $args->{password}) : (),
exists $args->{admin} ? (admin => $args->{admin}) : (),
}));
$self->status($res);
return $res->is_success ? 1 : ();
}
sub list_database_users {
my $self = shift;
my $url = $self->_build_url(
path => '/db/' . $self->database . '/users',
);
my $res = $self->{ua}->get($url);
$self->status($res);
return $res->is_success ? $self->json->decode($res->content) : ();
}
sub show_database_user {
state $rule = Data::Validator->new(
name => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = $self->_build_url(
path => '/db/' . $self->database . '/users/' . $args->{name},
);
my $res = $self->{ua}->get($url);
$self->status($res);
return $res->is_success ? $self->json->decode($res->content) : ();
}
sub create_cluster_admin {
state $rule = Data::Validator->new(
name => { isa => 'Str' },
password => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = $self->_build_url(
path => '/cluster_admins',
);
my $res = $self->{ua}->post($url, [], $self->json->encode({
name => $args->{name},
password => $args->{password},
}));
$self->status($res);
return $res->is_success ? 1 : ();
}
sub delete_cluster_admin {
state $rule = Data::Validator->new(
name => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = $self->_build_url(
path => '/cluster_admins/' . $args->{name},
);
my $res = $self->{ua}->delete($url);
$self->status($res);
return $res->is_success ? 1 : ();
}
sub update_cluster_admin {
state $rule = Data::Validator->new(
name => { isa => 'Str' },
password => { isa => 'Str' },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = $self->_build_url(
path => '/cluster_admins/' . $args->{name},
);
my $res = $self->{ua}->post($url, [], $self->json->encode({
exists $args->{password} ? (password => $args->{password}) : (),
}));
$self->status($res);
return $res->is_success ? 1 : ();
}
sub list_cluster_admins {
my $self = shift;
my $url = $self->_build_url(
path => '/cluster_admins',
);
my $res = $self->{ua}->get($url);
$self->status($res);
return $res->is_success ? $self->json->decode($res->content) : ();
}
# sub show_cluster_admin {
# state $rule = Data::Validator->new(
# name => { isa => 'Str' },
# )->with('Method');
# my($self, $args) = $rule->validate(@_);
# my $url = $self->_build_url(
# path => '/cluster_admins/' . $args->{name},
# );
# my $res = $self->{ua}->get($url);
# $self->status($res);
# return $res->is_success ? $self->json->decode($res->content) : ();
# }
### utils ################################################################
sub _build_url {
state $rule = Data::Validator->new(
path => { isa => 'Str' },
qs => { isa => 'HashRef', optional => 1 },
)->with('Method');
my($self, $args) = $rule->validate(@_);
my $url = sprintf("%s://%s%s:%d%s",
($self->ssl ? 'https' : 'http'),
($self->username and $self->{password})
? sprintf('%s:%s@', $self->username, $self->{password})
: '',
( run in 0.376 second using v1.01-cache-2.11-cpan-2398b32b56e )