The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package WWW::Giraffi::API::User;

use strict;
use warnings;

use parent qw(WWW::Giraffi::API::Request);

our $VERSION = '0.2_04';

sub create {

    my ( $self, $vendor_apikey ) = @_;
	### use low api ###
	# make request and replace apikey
	my $req = $self->make_request("POST", "users.json", undef, undef, { apikey => $vendor_apikey });
	#my %query_form = $req->uri->query_form;
	#$query_form{apikey} = $vendor_apikey;
	#$req->uri->query_form(%query_form);

	# return HTTP::Response
	my $res = $self->_request($req);
    return $self->_response2ref( $res );
}

sub update {

    my ( $self, $update_apikey ) = @_;
	my $req = $self->make_request("PUT", "users/apikey", undef, undef, { apikey => $update_apikey });
	my $res = $self->_request($req);
    return $self->_response2ref( $res );
}

sub destroy {

    my ( $self, $delete_apikey ) = @_;

	### use low api ###
	# make request and replace apikey
	my $req = $self->make_request("DELETE", "users.json", undef, undef, { apikey => $delete_apikey });
	#my %query_form = $req->uri->query_form;
	#$query_form{apikey} = $delete_apikey;
	#$req->uri->query_form(%query_form);

	# return HTTP::Response
	my $res = $self->_request($req);
    return $self->_response2ref( $res );
}

1;

__END__

=head1 NAME

WWW::Giraffi::API::User - Giraffi API User Method Access Module

=head1 VERSION

0.2_04

=head1 SYNOPSIS

  use strict;
  use warnings;
  use WWW::Giraffi::API;
  
  my $apikey = "ilovenirvana_ilovekurtcobain";
  my $g = WWW::Giraffi::API->new(apikey => $apikey);

  # create user
  my $my_vendor_apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  my $ref = $g->user->create($my_vendor_apikey);

=head1 DESCRIPTION

WWW::Giraffi::API::User is Giraffi API User Method Access Module

=head1 METHOD

=head2 create

Create User and Publish user apikey

Example:

  my $my_vendor_apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  $ create user object
  my $user = $g->user;
  my $ref = $user->create($my_vendor_apikey);

Return Reference:

  {
      'user' => {
                  'status' => 'enabled',
                  'permission' => 'wr',
                  'id' => 22,
                  'apikey' => 'new_user_apikey'
                }
    };

=head2 update

Update user apikey

Example:

  my $update_apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  $ create user object
  my $user = $g->user;
  $user->update($delete_apikey);

=head2 destroy

Delete user and apikey

Example:

  my $delete_apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  $ create user object
  my $user = $g->user;
  $user->destroy($delete_apikey);

=head1 AUTHOR

Akira Horimoto E<lt>emperor@gmail.comE<gt>

=head1 LICENSE

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut