From a33b52251e38b9ca02884f31210ec6b97ef561da Mon Sep 17 00:00:00 2001 From: Sergey Kiselev Date: Fri, 15 Jun 2018 12:34:50 +0500 Subject: [PATCH] =?UTF-8?q?yamd.pl=20-=20=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=BE=D1=81=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BD=D0=B0=D1=8F=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C:?= =?UTF-8?q?=201.=20=D0=9A=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8F=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B0=20(do?= =?UTF-8?q?main,=20token,=20etc.);=202.=20=D0=A1=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20URI=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B0=20(se?= =?UTF-8?q?rvice,=20sub=5Fservice,=20command,=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D1=8B=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=81=D0=B0,=20etc.);=203.=20=D0=A1=D0=BE=D0=B1=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D0=B5=D0=BD=D0=BD=D0=BE=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=81=D0=B0=20=D0=BA=20API=20=D0=B8=20=D0=B2=D1=8B=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yamd.pl | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 yamd.pl diff --git a/yamd.pl b/yamd.pl new file mode 100755 index 0000000..55ccd6f --- /dev/null +++ b/yamd.pl @@ -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 \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"; +} +