martin74ua
@martin74ua
Linux administrator

Требуется консультация того, кто работал с модулем Regru::API на perl?

Нужна консультация того, кто работал с этим модулем.
Вообщем то вопрос достаточно прост, но что то я не могу понять, как добраться до данных.
Есть код.
#!/usr/bin/perl

use Regru::API;
use Data::Dumper;

my $client = Regru::API->new(
   username => "test",
   password => "test"
);

my $params = { show_renew_data => 1, show_update_data => 1};

$resp = $client->domain->get_prices( $params );

if ($resp->is_success) {

 %prices = $resp->get("prices");  ///  А вот как тут правильно дальше - не пойму.

};


Покажите, как мне добраться до полученных цен на домены? Вот как из полученного списка обратится и получить цену домена ru ?
  • Вопрос задан
  • 576 просмотров
Решения вопроса 1
martin74ua
@martin74ua Автор вопроса
Linux administrator
Расковырял сам. Вот рабочий вариант, может кому понадобится

#!/usr/bin/perl
use utf8;
binmode(STDOUT,':utf8');

use Regru::API;
use Data::Dumper;
use JSON;

my $client = Regru::API->new(
   username => "test",
   password => "test"
);

my $params = { show_renew_data => 1, show_update_data => 1};

$resp = $client->domain->get_prices( $params );

if ($resp->is_success) {

 foreach $dom ( keys $resp->answer->{'prices'}) {
 print $dom;
 print "\t";
 $reg_price = $resp->answer->{'prices'}{$dom}{'reg_price'};
 print $reg_price;
 print "\t";
 $retail_reg_price = $resp->answer->{'prices'}{$dom}{'retail_reg_price'};
 print $retail_reg_price;
 print "\n";
 };

};


Ну вывод элементов цены можно и нужно сделать покрасивее, да все равно оно не нужно - выводиться тут они не будут. Я доковырял именно как добраться до данных.
Ключ - Regru::API::Response->answer - содержит в себе результат decode_json полученного ответа от reg.ru
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@hobo-mts
Shortly
А если почитать POD по этому модулю?
Ответ написан
kloppspb
@kloppspb
Не понимаю что значит "bless"


bless говорит о том, что вернулся объект, а не просто хэш, массив или скаляр. Вместо Data::Dumper используйте Data::Printer, у него возможностей несравнимо больше, и сразу бы было видно какой именно объект вернулся и что у него внутри:

$resp = $client->domain->get_prices( $params );
p $resp;

Вывод:
Regru::API::Response  {
    Parents       Moo::Object
    public methods (11) : answer, debug, DOES, error_code, error_params, error_text, get, is_service_fail, is_success, new, response
    private methods (1) : _trigger_response
    internals: {
        answer            {
            currency      "RUR",
            price_group   "Retail",
            prices        {
                2symbol.ae.org    {
                    reg_max_period   10,
                    reg_min_period   1,
                    reg_price        20034.00
                },
            # тут много всего
        },
        debug             undef,
        is_service_fail   0,
        is_success        1,
        response          HTTP::Response,
        serializer        JSON
    }
}


P.S. А вот отсутствие use strict или use Modern::Perl - моветон.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 апр. 2020, в 12:08
10000 руб./за проект
01 апр. 2020, в 12:07
35000 руб./за проект
01 апр. 2020, в 11:56
2000 руб./за проект