Создание ноды по XMLRPC из перла

Главные вкладки

Аватар пользователя naked_child naked_child 13 сентября 2009 в 11:00

Для работы с друпалом из перла по XMLRPC (в частности, создания нод) сначала надо сделать следующее:

  • -- поставить Services 6.x-2.x-dev. Именно -dev, так как в стабильной не работает node.get (или я не знаю, как заставить её работать)
  • -- активизировать в админке следующие модули:
    • Services.
    • Node Service,
    • Key Authentication,
    • System Service,
    • Taxonomy Service,
    • User Service,
    • XMLRPC Server
  • -- в настройках модуля Services выбрать Authorization module (key authentication). В появившихся настройках модуля авторизации снять галку use keys, оставив только use sessid.

Минимальный код на перле для добавления ноды под именем admin, с присвоением пятого термина из первого словаря таксономии:

use strict;
use warnings;

 use XMLRPC::Lite;
 use Data::Dumper;
 my $node = {
          'created' => '1198198800',
          'taxonomy' => {
                        '1' => [
                               5
                             ]
                      },
          'status' => '1',
          'nid' => 0,
          'body' => "This is the test",
          'teaser' => "",
          'uid' => '3',
          'name' => 'admin',
          'type' => 'story',
          'title' => "test story"
        };
 my $server=XMLRPC::Lite->proxy('http://cms.serann.local/services/xmlrpc');
 my $result= $server->call('system.connect');
 $result= $server->call('user.login',$result->result->{'sessid'},'admin','qqq');
 my $sessid=$result->result->{'sessid'};
 $result= $server->call('node.save',$sessid,$node);
 $result= $server->call('node.get',$sessid,$result->result);

 die $result->faultstring if $result->fault;
 print Dumper $result -> result;

Комментарии