OAuth::Lite::Server::Test::Echo - simple echo server example


OAuth-Lite documentation Contained in the OAuth-Lite distribution.

Index


Code Index:

NAME

Top

OAuth::Lite::Server::Test::Echo - simple echo server example

SYNOPSIS

Top

    PerlModule OAuth::Lite::Server::Test::Echo
    PerlSetVar Realm "http://localhost/"

    <Location /request_token>
        SetHandler perl-script
        PerlSetVar Mode REQUEST_TOKEN
        PerlResponseHandler OAuth::Lite::Server::Test::Echo
    </Location>

    <Location /access_token>
        SetHandler perl-script
        PerlSetVar Mode ACCESS_TOKEN
        PerlResponseHandler OAuth::Lite::Server::Test::Echo
    </Location>

    <Location /resource>
        SetHandler perl-script
        PerlSetVar Mode PROTECTED_RESOURCE
        PerlResponseHandler OAuth::Lite::Server::Test::Echo
    </Location>

DESCRIPTION

Top

This is very simple example for OAuth::Lite::Server::mod_perl2

METHODS

Top

init

get_request_token_secret

get_access_token_secret

get_consumer_secret

publish_request_token

publish_access_token

check_nonce_and_timestamp

service

AUTHOR

Top

Lyo Kato, lyo.kato _at_ gmail.com

COPYRIGHT AND LICENSE

Top


OAuth-Lite documentation Contained in the OAuth-Lite distribution.
package OAuth::Lite::Server::Test::Echo;

use strict;
use warnings;

use base 'OAuth::Lite::Server::mod_perl2';

use bytes ();
use OAuth::Lite::Token;

my $CONSUMER_KEY         = 'key';
my $CONSUMER_SECRET      = 'secret';
my $REQUEST_TOKEN        = 'requesttoken';
my $REQUEST_TOKEN_SECRET = 'requesttokensecret';
my $ACCESS_TOKEN         = 'accesstoken';
my $ACCESS_TOKEN_SECRET  = 'accesstoken_secret';
my $CONTENT              = 'foobarbuz';

sub init {
    my $self = shift;
    $self->oauth->allow_extra_params(qw/file size/);
    $self->oauth->support_signature_methods(qw/HMAC-SHA1 PLAINTEXT/);
}

sub get_request_token_secret {
    my ($self, $token) = @_;
    unless ($token eq $REQUEST_TOKEN) {
        return $self->error(q{Invalid token});
    }
    $REQUEST_TOKEN_SECRET;
}

sub get_access_token_secret {
    my ($self, $token) = @_;
    unless ($token eq $ACCESS_TOKEN) {
        return $self->error(q{Invalid token});
    }
    $ACCESS_TOKEN_SECRET;
}

sub get_consumer_secret {
    my ($self, $consumer_key) = @_;
    unless ($consumer_key eq $CONSUMER_KEY) {
        return $self->error(q{Invalid consumer key});
    }
    $CONSUMER_SECRET;
}

sub publish_request_token {
    my ($self, $consumer_key) = @_;
    unless ($consumer_key eq $CONSUMER_KEY) {
        return $self->error(q{Invalid consumer key});
    }
    my $token = OAuth::Lite::Token->new(
        token  => $REQUEST_TOKEN,
        secret => $REQUEST_TOKEN_SECRET,
    );
    $token;
}

sub publish_access_token {
    my ($self, $consumer_key, $request_token) = @_;
    unless ($consumer_key eq $CONSUMER_KEY) {
        return $self->error(q{Invalid consumer key});
    }
    unless ($request_token eq $REQUEST_TOKEN) {
        return $self->error(q{Invalid token});
    }
    my $token = OAuth::Lite::Token->new(
        token  => $ACCESS_TOKEN,
        secret => $ACCESS_TOKEN_SECRET,
    );
    $token;
}

sub check_nonce_and_timestamp {
    my ($self, $consumer_key, $nonce, $timestamp) = @_;
    1;
}

sub service {
    my ($self, $params) = @_;
    $self->set_authenticate_header();
    $self->request->status(200);
    $self->request->content_type(q{text/plain; charset=utf-8});
    $self->request->set_content_length(bytes::length($CONTENT));
    $self->request->print($CONTENT);
    return Apache2::Const::OK;
}

1;