ActiveResource
view release on metacpan or search on metacpan
- t
- xt
requires:
Class::Accessor::Lvalue: 0
Class::Data::Inheritable: 0
Hash::AsObject: 0
LWP::UserAgent: 0
Lingua::EN::Inflect: 0
URI: 0
XML::Hash: 0
parent: 0
resources:
license: http://opensource.org/licenses/mit-license.php
version: 0.01
Makefile.PL view on Meta::CPAN
use inc::Module::Install;
all_from 'lib/ActiveResource.pm';
requires
parent => 0,
Class::Accessor::Lvalue => 0,
Class::Data::Inheritable => 0,
XML::Hash => 0,
Hash::AsObject => 0,
LWP::UserAgent => 0,
Lingua::EN::Inflect => 0,
URI => 0;
tests 't/*.t';
author_tests 'xt/*.t';
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
============
parent, Class::Accessor::Lvalue, Class::Data::Inheritable, XML::Hash,
Hash::AsObject, LWP::UserAgent, Lingua::EN::Inflect, URI
COPYRIGHT AND LICENCE
=====================
Copyright (C) 2010, Kang-min Liu <gugod@gugod.org>
This is free software, licensed under:
The MIT (X11) License
inc/Module/Install.pm view on Meta::CPAN
use FindBin;
sub autoload {
my $self = shift;
my $who = $self->_caller;
my $cwd = Cwd::cwd();
my $sym = "${who}::AUTOLOAD";
$sym->{$cwd} = sub {
my $pwd = Cwd::cwd();
if ( my $code = $sym->{$pwd} ) {
# Delegate back to parent dirs
goto &$code unless $cwd eq $pwd;
}
$$sym =~ /([^:]+)$/ or die "Cannot autoload $who - $sym";
my $method = $1;
if ( uc($method) eq $method ) {
# Do nothing
return;
} elsif ( $method =~ /^_/ and $self->can($method) ) {
# Dispatch to the root M:I class
return $self->$method(@_);
lib/ActiveResource.pm view on Meta::CPAN
ActiveResource - Implemented in Perl.
=head1 VERSION
This document describes ActiveResource version 0.01
=head1 SYNOPSIS
# A class for redmine issue
package Issue;
use parent 'ActiveResource::Base';
__PACKAGE__->site("http://localhost:3000");
__PACKAGE__->user("admin");
__PACKAGE__->password("admin");
package main;
# Find existing ticket
my $issue = Issue->find(42);
# Create
lib/ActiveResource.pm view on Meta::CPAN
ActiveResource is a set REST API that was defined in Ruby on Rails
project, and this the implementation in Perl that can talk to any
Rails server that supports it.
To use this api, you MUST name you you classes the same as model
names. For example, redmine system provide REST api for therir
projects and issues, and they named them "projects" and "issues". To
talk to them with ActiveResource, we must defind two classes:
package Project;
use parent 'ActiveResource::Base';
package Issue;
use parent 'ActiveResource::Base';
It is planed to be make the model name configurable in the future
releases.
=head1 AUTHOR
Kang-min Liu C<< <gugod@gugod.org> >>
=head1 LICENCE AND COPYRIGHT
lib/ActiveResource/Base.pm view on Meta::CPAN
package ActiveResource::Base;
use common::sense;
use parent qw(Class::Accessor::Lvalue::Fast Class::Data::Inheritable);
use Hash::AsObject;
use Lingua::EN::Inflect qw(PL);
use URI;
use ActiveResource::Connection;
use ActiveResource::Formats::XmlFormat;
__PACKAGE__->mk_classdata($_) for qw(site user password);
__PACKAGE__->mk_accessors(qw(attributes));
__PACKAGE__->mk_classdata(
lib/ActiveResource/Connection.pm view on Meta::CPAN
package ActiveResource::Connection;
use common::sense;
use parent qw(Class::Accessor::Lvalue::Fast);
use LWP::UserAgent;
use HTTP::Request;
__PACKAGE__->mk_accessors(qw(site user password));
sub ua {
LWP::UserAgent->new
}
sub url {
#!/usr/bin/env perl
use strict;
package Stuff;
use parent 'ActiveResource::Base';
package main;
use Test::More;
subtest "Stuff should respond to certain class methods" => sub {
for my $method (qw(new site user password find create connection)) {
ok(Stuff->can($method), "There is a Stuff->$method");
}
done_testing;
#!/usr/bin/env perl
use common::sense;
package Issue;
use parent 'ActiveResource::Base';
package main;
use Test::More;
for my $method (qw(site user password)) {
ok(Issue->can($method));
}
done_testing;
xt/redmine-localhost-issue-create.t view on Meta::CPAN
#!/usr/bin/env perl
use common::sense;
package Issue;
use parent 'ActiveResource::Base';
__PACKAGE__->site("http://localhost:3000");
__PACKAGE__->user("admin");
__PACKAGE__->password("admin");
package main;
use Test::More;
my $issue = Issue->create(
project_id => 1,
xt/redmine-localhost-issue-save.t view on Meta::CPAN
#!/usr/bin/env perl
use common::sense;
package Issue;
use parent 'ActiveResource::Base';
__PACKAGE__->site("http://localhost:3000");
__PACKAGE__->user("admin");
__PACKAGE__->password("admin");
package main;
use Test::More;
subtest "Save a new record" => sub {
my $issue = Issue->new;
xt/redmine-localhost.t view on Meta::CPAN
#!/usr/bin/env perl
package Project;
use parent 'ActiveResource::Base';
package Issue;
use parent 'ActiveResource::Base';
package main;
use common::sense;
use Test::More;
ActiveResource::Base->site("http://localhost:3000");
ActiveResource::Base->user("admin");
ActiveResource::Base->password("admin");
subtest "Some simple matter of finding" => sub {
xt/redmine-redmine-org.t view on Meta::CPAN
#!/usr/bin/env perl
package Project;
use parent 'ActiveResource::Base';
package Issue;
use parent 'ActiveResource::Base';
package main;
use common::sense;
use Test::More;
Project->site("http://www.redmine.org");
Issue->site("http://www.redmine.org");
# http://www.redmine.org/projects/1
( run in 0.504 second using v1.01-cache-2.11-cpan-4d50c553e7e )