NAME Regru::API - perl client for reg.ru API 2. VERSION Version 0.01 SYNOPSYS my $client = Regru::API->new(username => 'test', password => 'test'); my $response = $client->nop; # makes call for L if ($response->is_success) { say $response->get('user_id'); } else { die "Error code: " . $response->error_code . ", Error text: " . $response->error_text; } DESCRIPTION API calls are divided into categories - user, domain, zone, user, folder, bill, service. Each category is stored in it's own namespace, and can be accessed through "$client-"$namespace method>. For example, $client->user->nop makes call to user/nop API method Complete Reg.ru API 2 Documentation can be found here: . All API methods return Regru::API::Response object. my $response = $client->domain->get_premium; if ($response->is_success) { # answer params can be get with C<$response->get($param_name)> method my $domains = $response->get('domain'); for my $domain_info (@$domains) { say "Name: " . $domain_info->{ name } . ", price: " . $domain_info->{ price }; } } else { ... } All params for API call is passed to API method call as a hash; my $refill_balance_response = $client->user->refill_balance( pay_type => 'WM', wmid => '123456789012', currency => 'RUR', amount => 100 ); my $jsondata = { contacts => { descr => 'Vschizh site', person => 'Svyatoslav V Ryurik', person_r => 'Рюрик Святослав Владимирович', passport => '22 44 668800 выдан по месту правления 01.09.1164', birth_date => '01.01.1970', p_addr => '12345, г. Вщиж, ул. Княжеска, д.1, Рюрику Святославу Владимировичу, князю Вщижскому', phone => '+7 495 5555555', e_mail => 'test@reg.ru', country => 'RU', }, nss => { ns0 => 'ns1.reg.ru', ns1 => 'ns2.reg.ru', }, domain_name => 'vschizh.su', }; my $domain_create_answer = $client->domain->create(%$jsondata); if ($domain_create_answer->is_success) { say "Domain create request succeeded"; } else { die $domain_create_answer->error_text; } NB: All input params for call are passed in JSON format. To get service answer, use "$response-"get($param_name)> method. $param_name is the answer field. SUBROUTINES/METHODS new my $client = Regru::API->new(username => 'test', password => 'test'); my $response = $client->nop; # another cool code here... # and without authentication: my $client = Regru::API->new; my $response = $client->user->nop; # user/nop doesn't require authentication say 'ok' if $response->is_success; Another options for new(): lang Sets language for error messages. my $client = Regru::API->new(username => 'test1', password => 'test', lang => 'ru'); print $client->nop->error_text; # will print "Ошибка аутентификации по паролю" io_encoding Sets encoding for input and output data. my $client = Regru::API->new( username => 'test', password => 'test', io_encoding => 'cp1251' ); my $response = $client->user->create( user_login => 'othertest', user_password => '111', user_email => 'test@test.ru', user_first_name => $cp1251_encoded_name ); debug Debug messages will be printed to STDERR. my $client = Regru::API->new(debug => 1); Error processing If API returned exception or some bad error, such as 500 internal server error has happened, `$response` will store error information and raw HTTP::Response object with service answer. is_success Returns 1 if API call is succeeded, 0 otherwise. error_text Returns error text if an error occured, default language for error messages is english. Language can be set in Regru::API constructor with "lang" option. error_code Returns error code if an error occured. Full list error codes list is available at . Error code API_FAIL means incorrect answer from API, such as 500 inernal server error. error_params Params for error text. response Returns raw HTTP::Response object for further processing. Sample: my $response = $client->api->nop; if ($response->is_success) { # do some stuff } else { print "Error: " . $response->error_code . ", " . $response->error_text; } AUTHOR Polina Shubina, "" BUGS Please report any bugs or feature requests to "bug-regru-api at rt.cpan.org". I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. LICENSE AND COPYRIGHT Copyright 2013 Polina Shubina. This is free software; you can redistribute it and/or modify it under the same terms as Perl itself.