Skip to content

Commit

Permalink
Refactor the API data structure into a Role
Browse files Browse the repository at this point in the history
  • Loading branch information
leto committed Sep 14, 2009
1 parent 7eb1b45 commit ac00068
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 93 deletions.
94 changes: 1 addition & 93 deletions lib/Net/Topsy.pm
@@ -1,7 +1,7 @@
use MooseX::Declare;


class Net::Topsy {
class Net::Topsy with Net::Topsy::Role::API {
use Carp qw/croak confess/;
use Moose;
use URI::Escape;
Expand All @@ -22,98 +22,6 @@ class Net::Topsy {
has base_url => ( isa => 'Str', is => 'ro', default => 'http://otter.topsy.com' );
has useragent => ( isa => 'Str', is => 'ro', default => "Net::Topsy/$VERSION (Perl)" );

has API => ( isa => 'HashRef', is => 'ro', default => sub {
{
'http://otter.topsy.com' => {
'/search' => {
args => {
q => 1,
window => 0,
page => 0,
perpage => 0,
},
},
'/searchcount' => {
args => {
q => 1,
window => 0,
},
},
'/profilesearch' => {
args => {
q => 1,
page => 0,
perpage => 0,
},
},
'/authorsearch' => {
args => {
q => 1,
window => 0,
page => 0,
perpage => 0,
},
},
'/stats' => {
args => {
url => 1,
},
},
'/tags' => {
args => {
url => 1,
page => 0,
perpage => 0,
},
},
'/authorinfo' => {
args => {
url => 1,
},
},
'/urlinfo' => {
args => {
url => 1,
},
},
'/linkposts' => {
args => {
url => 1,
contains => 0,
page => 0,
perpage => 0,
},
},
'/trending' => {
args => {
page => 0,
perpage => 0,
},
},
'/credit' => {
args => {
},
},
'/trackbacks' => {
args => {
url => 1,
contains => 0,
infonly => 0,
page => 0,
perpage => 0,
},
},
'/related' => {
args => {
url => 1,
page => 0,
perpage => 0,
},
},
},
},
});

method BUILD {
$self->ua($self->useragent_class->new(%{$self->useragent_args}));
$self->ua->agent($self->useragent);
Expand Down
97 changes: 97 additions & 0 deletions lib/Net/Topsy/Role/API.pm
@@ -0,0 +1,97 @@
package Net::Topsy::Role::API;

use Moose::Role;

has API => ( isa => 'HashRef', is => 'ro', default => sub {
{
'http://otter.topsy.com' => {
'/search' => {
args => {
q => 1,
window => 0,
page => 0,
perpage => 0,
},
},
'/searchcount' => {
args => {
q => 1,
window => 0,
},
},
'/profilesearch' => {
args => {
q => 1,
page => 0,
perpage => 0,
},
},
'/authorsearch' => {
args => {
q => 1,
window => 0,
page => 0,
perpage => 0,
},
},
'/stats' => {
args => {
url => 1,
},
},
'/tags' => {
args => {
url => 1,
page => 0,
perpage => 0,
},
},
'/authorinfo' => {
args => {
url => 1,
},
},
'/urlinfo' => {
args => {
url => 1,
},
},
'/linkposts' => {
args => {
url => 1,
contains => 0,
page => 0,
perpage => 0,
},
},
'/trending' => {
args => {
page => 0,
perpage => 0,
},
},
'/credit' => {
args => {
},
},
'/trackbacks' => {
args => {
url => 1,
contains => 0,
infonly => 0,
page => 0,
perpage => 0,
},
},
'/related' => {
args => {
url => 1,
page => 0,
perpage => 0,
},
},
},
},
});

1;

0 comments on commit ac00068

Please sign in to comment.