Browse Source
1. Контроль обязательных параметров запроса (domain, token, etc.); 2. Сборка URI запроса (service, sub_service, command, параметры запроса, etc.); 3. Собственно выполнение запроса к API и вывод результатов.master
Sergey Kiselev
7 years ago
1 changed files with 71 additions and 0 deletions
@ -0,0 +1,71 @@ |
|||
#!/usr/local/bin/perl |
|||
|
|||
use strict; |
|||
use warnings; |
|||
|
|||
use LWP::UserAgent; |
|||
use HTTP::Request; |
|||
use YAML::XS qw/LoadFile/; |
|||
|
|||
our $api_url = "https://pddimp.yandex.ru/api2/admin"; |
|||
our $query_options = LoadFile("./yamd_query_options.yml") |
|||
or die "Query parameters file not found\n"; |
|||
our $task_file = shift or die "Usage: yamd.pl <file.yml>\n"; |
|||
our $task = LoadFile($task_file) |
|||
or die "Unable to open file '$task_file'\n"; |
|||
|
|||
foreach my $check ("domain", "token", "service", "query") { |
|||
if (!defined $task->{yamd}->{$check}) { |
|||
die "'$check' is undefined in '$task_file'\n"; |
|||
} |
|||
} |
|||
|
|||
my $request_url = ""; |
|||
my $request_type = ""; |
|||
my $request_content_type = ""; |
|||
|
|||
{ |
|||
my $service = $task->{yamd}->{service}; |
|||
my $sub_service = $task->{yamd}->{sub_service}; |
|||
my $query = $task->{yamd}->{query}; |
|||
|
|||
$request_url = $api_url . "/" .$service; |
|||
$request_url .= (defined $sub_service) ? "/" . $sub_service : ""; |
|||
$request_url .= "/" . $query; |
|||
|
|||
if (defined $sub_service) { |
|||
$request_type = $query_options->{$service}->{$sub_service}->{$query}->{query_type}; |
|||
$request_content_type = $query_options->{$service}->{$sub_service}->{$query}->{content_type}; |
|||
} else { |
|||
$request_type = $query_options->{$service}->{$query}->{query_type}; |
|||
$request_content_type = $query_options->{$service}->{$query}->{content_type}; |
|||
} |
|||
|
|||
if (!defined $request_content_type) { |
|||
$request_content_type = $query_options->{default_content_type}; |
|||
} |
|||
} |
|||
|
|||
my $ua = new LWP::UserAgent; |
|||
my $request = new HTTP::Request($request_type => $request_url); |
|||
|
|||
$request->header( |
|||
'PddToken' => $task->{yamd}->{token}, |
|||
'Content-type' => $request_content_type |
|||
); |
|||
|
|||
my $request_content = "domain=" . $task->{yamd}->{domain}; |
|||
foreach my $k (keys %{$task->{yamd}->{options}}) { |
|||
$request_content .= "&" . $k . "=" . $task->{yamd}->{options}->{$k}; |
|||
} |
|||
|
|||
$request->content($request_content); |
|||
|
|||
my $response = $ua->request($request); |
|||
|
|||
if ($response->is_success) { |
|||
print $response->content . "\n\n"; |
|||
} else { |
|||
print $response->status_line . "\n\n"; |
|||
} |
|||
|
Reference in new issue