AnyEvent-WebService-ImKayac

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

# NAME

AnyEvent::WebService::ImKayac - connection wrapper for im.kayac.com

# SYNOPSIS

    use AnyEvent::WebService::ImKayac;

    my $im = AnyEvent::WebService::ImKayac->new(
      type     => 'password',
      user     => '...',
      password => '...'
    );

    $im->send( message => 'Hello! test send!!', cb => sub {
        my ($hdr, $json, $reason) = @_;

        if ( $json ) {
            if ( $json->{result} eq "posted" ) {
            }
            else {
                warn $json->{error};

README.md  view on Meta::CPAN

        else {
            warn $reason;
        }
    });

## METHODS

### new

You must pass `type` and `user` parameter to new method. And type should be
secret, password or none.

- type is secret

    You should pass secret\_key parameter.

- type is password

    You should pass password parameter.

- type is none

    You dond need to pass other parameter.

### $imkayac->send( message => '...', cb => sub {} );

Send with message and cb parameters. cb is called when message have been sent.

# AUTHORS

lib/AnyEvent/WebService/ImKayac.pm  view on Meta::CPAN


=head1 NAME

AnyEvent::WebService::ImKayac - connection wrapper for im.kayac.com

=head1 SYNOPSIS

  use AnyEvent::WebService::ImKayac;

  my $im = AnyEvent::WebService::ImKayac->new(
    type     => 'password',
    user     => '...',
    password => '...'
  );

  $im->send( message => 'Hello! test send!!', cb => sub {
      my ($hdr, $json, $reason) = @_;

      if ( $json ) {
          if ( $json->{result} eq "posted" ) {
          }
          else {
              warn $json->{error};

lib/AnyEvent/WebService/ImKayac.pm  view on Meta::CPAN

      else {
          warn $reason;
      }
  });

=head2 METHODS

=head3 new

You must pass C<< type >> and C<< user >> parameter to new method. And type should be
secret, password or none.

=over 3

=item type is secret

You should pass secret_key parameter.

=item type is password

You should pass password parameter.

=item type is none

You dond need to pass other parameter.

=back

=cut

sub new {
    my $pkg = shift;
    my %args = ($_[1]) ? @_ : %{$_[1]};

    croak "missing require parameter 'user'" unless defined $args{user};
    croak "missing require parameter 'type'" unless defined $args{type};

    $args{type} = 'none' if $args{type} !~ /^(none|password|secret)$/;

    if ($args{type} eq 'password' && ! defined $args{password}) {
        croak "require password";
    }

    if ($args{type} eq 'secret' && ! defined $args{secret_key}) {
        croak "require secret_key";
    }

    bless \%args, $pkg;
}


lib/AnyEvent/WebService/ImKayac.pm  view on Meta::CPAN

        }
    };
}


sub _param_none {
    my ($self, %args) = @_;
    %args;
}

sub _param_password {
    my ($self, %args) = @_;

    (
        %args,
        password => $self->{password},
    );
}

sub _param_secret {
    my ($self, %args) = @_;

    my $skey = $self->{secret_key};

    (
        %args,

t/01_basic.t  view on Meta::CPAN

    eval { anyevent::webservice::imkayac->new( type => "none" ) };
    ok($@, "require user and type");
}

{
    my $im = eval { AnyEvent::WebService::ImKayac->new( user => "hoge", type => "none") };
    isa_ok($im, "AnyEvent::WebService::ImKayac", "if type is none, not required other parameter.");
}

{
    eval { AnyEvent::WebService::ImKayac->new( user => "hoge", type => "password") };
    ok($@, "if type is password, require password parameter ");

    my $im = eval { AnyEvent::WebService::ImKayac->new( user => "hoge", type => "password", password => "hoge") };
    isa_ok($im, "AnyEvent::WebService::ImKayac", "if type is password, require password parameter ");
}

{
    eval { AnyEvent::WebService::ImKayac->new( user => "hoge", type => "secret") };
    ok($@, "if type is secret, require secret_key parameter ");

    my $im = eval { AnyEvent::WebService::ImKayac->new( user => "hoge", type => "secret", secret_key => "hoge") };
    isa_ok($im, "AnyEvent::WebService::ImKayac", "if type is secret, require secret_key parameter ");
}

t/02_send.t  view on Meta::CPAN

                message => "m",
                cb => sub {
                    my ($hdr, $json, $reason) = @_;
                    is $json->{result}, "posted";
                    is $reason, "OK";
                    $cv->send;
                },
            );
        },
    },
    #password type
    {
        response => sub {
            my $req = shift;
            is $req->param('password'), 'dameleon';
            [200, [" Content-Type" => "application/json" ], [ encode_json({ result => "posted" }) ] ]
        },
        client   => sub {
            my $cv = shift;
            AnyEvent::WebService::ImKayac->new(
                user     => "hoge",
                type     => "password",
                password => "dameleon",
            )->send(
                message => "m",
                cb => sub {
                    my ($hdr, $json, $reason) = @_;
                    is $json->{result}, "posted";
                    is $reason, "OK";
                    $cv->send;
                },
            );
        },



( run in 0.945 second using v1.01-cache-2.11-cpan-49f99fa48dc )