ActiveResource

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

    - 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';

README  view on Meta::CPAN

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 {

t/base.t  view on Meta::CPAN

#!/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;

t/simple.t  view on Meta::CPAN

#!/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 )