ArangoDB2
view release on metacpan or search on metacpan
234567891011121314151617181920210.11 2014-11-11
* Add WWW::Curl based HTTP backend
0.10 2014-11-04
* Add support
for
authentication
* Add support
for
admin API methods
* Change all `patch` method names to `update`
0.09 2014-11-04
* Add support
for
endpoint API methods
0.08 2014-11-04
* Add support
for
user API methods
0.07 2014-11-04
* Add support
for
replication API methods
0.06 2014-11-04
* Add support
for
traversal API methods
3940414243444546474849505152535455t/09-
index
.t
t/10-transaction.t
t/11-graph.t
t/12-graph-vertex-collection.t
t/13-graph-edge-definition.t
t/14-graph-vertex.t
t/15-graph-vertex.t
t/16-traversal.t
t/17-replication.t
t/18-user.t
t/19-endpoint.t
t/20-benchmark.t
t/manifest.t
t/pod-coverage.t
t/pod.t
META.yml Module YAML meta-data (added by MakeMaker)
META.json Module JSON meta-data (added by MakeMaker)
lib/ArangoDB2.pm view on Meta::CPAN
141516171819202122232425262728293031323334use
ArangoDB2::Admin;
use
ArangoDB2::Database;
use
ArangoDB2::Endpoint;
use
ArangoDB2::HTTP;
# new
#
# create new ArangoDB2 instance from string argument specifying
# API endpoint or hashref of args
sub
new
{
my
(
$class
,
$uri
,
$username
,
$password
) =
@_
;
# create instance
my
$self
= {};
bless
(
$self
,
$class
);
# set values
$self
->uri(
$uri
);
$self
->username(
$username
);
$self
->password(
$password
);
lib/ArangoDB2.pm view on Meta::CPAN
596061626364656667686970717273747576777879808182
# only create one instance per ArangoDB2 per database, each ArangoDB2
# keeps its own instances since they may have different credentials
return
$self
->databases->{
$name
} ||= ArangoDB2::Database->new(
$self
,
$name
);
}
# databases
#
# Index of active ArangoDB2::Database objects by name
sub
databases {
$_
[0]->{databases} ||= {} }
# endpoint
#
# ArangoDB2::Endpoint object
sub
endpoint
{
my
(
$self
,
$name
) =
@_
;
return
ArangoDB2::Endpoint->new(
$self
,
$name
);
}
# http
#
# ArangoDB2::HTTP object. This provides normalized interface to
# various HTTP clients.
lib/ArangoDB2.pm view on Meta::CPAN
250251252253254255256257258259260261262263264265266267268269=over 4
=item new
=item admin
=item database
=item databases
=item endpoint
=item http
=item http_client
Get/set string indicating which HTTP backend to use. Currently supported values are 'lwp' and
'curl'. Using curl requires L<WWW::Curl>, which will be used by default if it is installed.
=back
lib/ArangoDB2.pm view on Meta::CPAN
279280281282283284285286287288289290291292293294295296297298299Returns the server name and version number.
=back
=head1 PROPERTY METHODS
=over 4
=item uri
L<URI> of ArangoDB endpoint.
=item password
Password to use when accessing ArangoDB.
=item username
Username to use when accessing ArangoDB.
=back
lib/ArangoDB2/Endpoint.pm view on Meta::CPAN
1415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135my
$JSON
= JSON::XS->new->utf8;
###############
# API METHODS #
###############
# create
#
# POST /_api/endpoint
sub
create
{
my
(
$self
,
$args
) =
@_
;
# process request args
$args
=
$self
->_build_args(
$args
, [
'name'
,
'databases'
]);
# use name for endpoint param
$args
->{endpoint} =
$args
->{name};
# make request
my
$res
=
$self
->arango->http->post(
'/_api/endpoint'
,
undef
,
$JSON
->encode(
$args
),
) or
return
;
# if request was success copy args to self
$self
->_build_self(
$args
, [
'name'
,
'databases'
]);
return
$self
;
}
# delete
#
# DELETE /_api/endpoint/{name}
sub
delete
{
my
(
$self
,
$args
) =
@_
;
# process request args
$args
=
$self
->_build_args(
$args
, [
'name'
]);
# make request
return
$self
->arango->http->
delete
(
'/_api/endpoint/'
.uri_escape(
$args
->{name} )
);
}
# list
#
# GET /_api/endpoint
sub
list
{
my
(
$self
) =
@_
;
return
$self
->arango->http->get(
'/_api/endpoint'
);
}
####################
# PROPERTY METHODS #
####################
sub
databases {
shift
->_get_set(
'databases'
,
@_
) }
1;
__END__
=head1 NAME
ArangoDB2::Endpoint - ArangoDB endpoint API methods
=head1 DESCRIPTION
=head1 API METHODS
=over 4
=item create
POST /_api/endpoint
Connects a new endpoint or reconfigures an existing endpoint.
Parameters:
name
databases
=item delete
DELETE /_api/endpoint/{endpoint}
Parameters:
name
=item list
GET /_api/endpoint
Returns a list of all configured endpoints the server is listening on.
=back
=head1 PROPERTY METHODS
=over 4
=item name
the endpoint specification, e.g. tcp://127.0.0.1:8530
=item databases
a list of database names the endpoint is responsible for.
=back
=head1 AUTHOR
Ersun Warncke, C<< <ersun.warncke at outlook.com> >>
=head1 COPYRIGHT
lib/ArangoDB2/Replication.pm view on Meta::CPAN
329330331332333334335336337338339340341342343344345346347348349=item serverId
GET /_api/replication/server-id
Returns the servers id. The id is also returned by other replication API methods, and this method is an easy means of determining a server's id.
=item sync
PUT /_api/replication/sync
Starts a full data synchronization from a remote endpoint into the local ArangoDB database.
Parameters:
configuration
=back
=head1 PROPERTY METHODS
=over 4
t/01-arango.t view on Meta::CPAN
202122232425262728293031323334353637383940
version
);
for
my
$method
(
@methods
) {
can_ok(
$arango
,
$method
);
}
# test for sub objects accessors
isa_ok(
$arango
->admin,
'ArangoDB2::Admin'
);
isa_ok(
$arango
->database,
'ArangoDB2::Database'
);
isa_ok(
$arango
->endpoint,
'ArangoDB2::Endpoint'
);
isa_ok(
$arango
->http,
'ArangoDB2::HTTP'
);
isa_ok(
$arango
->uri,
'URI'
);
# skip tests against the actual ArangoDB2 server unless
# LIVE_TEST env param is set
if
(!
$ENV
{LIVE_TEST}) {
diag(
"Skipping live API tests - set LIVE_TEST=1 to enable"
);
done_testing();
exit
;
}
t/19-endpoint.t view on Meta::CPAN
23456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566use
warnings;
use
Data::Dumper;
use
Test::More;
use
ArangoDB2;
my
$res
;
my
$endpoint
=
$arango
->endpoint;
# test required methods
my
@api_methods
=
qw(
create
delete
list
)
;
my
@methods
=
qw(
name
databases
)
;
for
my
$method
(
@methods
,
@api_methods
) {
can_ok(
$endpoint
,
$method
);
}
# skip tests against the actual ArangoDB server unless
# LIVE_TEST env param is set
if
(!
$ENV
{LIVE_TEST}) {
diag(
"Skipping live API tests - set LIVE_TEST=1 to enable"
);
done_testing();
exit
;
}
# create database
$arango
->database(
"foo"
)->create;
# create endpoint
databases
=> [
"foo"
],
});
ok(
$res
,
"create endpoint"
);
# get list
$res
=
$endpoint
->list;
ok(
$res
,
"list"
);
ok(
$end
,
"endpoint exists"
);
is_deeply(
$end
->{databases}, [
'foo'
],
"endpoint: databases"
);
# delete endpoint
$res
=
$endpoint
->
delete
;
ok(
$res
,
"endpoint delete"
);
# get list
$res
=
$endpoint
->list;
ok(!
$end
,
"endpoint does not exist"
);
# delete database
$arango
->database(
"foo"
)->
delete
;
done_testing();
( run in 0.349 second using v1.01-cache-2.11-cpan-e5176c747c2 )