Guest User

Untitled

a guest
May 4th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. require 'rubygems'
  2. require 'xmlrpc/client'
  3.  
  4. # an example of client for drupal made with xmlrpc
  5.  
  6. class Drupal
  7. def initialize(opt={},&blk)
  8.  
  9. @client = XMLRPC::Client.new( opt[:host] , "/?q=services/xmlrpc")
  10. @sess=@client.call("system.connect", 1)
  11. @sess=@client.call("user.login",@sess["sessid"],opt[:user],opt[:password])
  12.  
  13. exec_block(blk) if blk!=nil
  14.  
  15. end
  16.  
  17. def session
  18. @sess
  19. end
  20.  
  21. def node(nid)
  22. @client.call("node.get",@sess["sessid"],nid)
  23. end
  24.  
  25. def view(name,params_list)
  26. @client.call("views.get",@sess["sessid"],name.to_s,"",params_list.split(","))
  27. end
  28.  
  29. def node_view(name,params_list)
  30. res=view(name,params_list)
  31. res.map {|el| node(el['nid']) }
  32. end
  33.  
  34. def user(uid)
  35. @client.call("user.get",@sess["sessid"],uid)
  36. end
  37.  
  38. def exec_block(blk)
  39. blk.call(self) if blk.arity>0
  40. instance_eval(&blk) if blk.arity==-1
  41. end
  42.  
  43. class << self
  44. def test_login(&blk)
  45. self.new(:host => "localhost", :user => 'admin', :password=> 'admin',&blk)
  46. end
  47.  
  48. end
  49.  
  50. end
  51.  
  52. Drupal.new :host => "localhost", :user => 'admin', :password=> 'admin' do
  53. p node(1)
  54. end
  55.  
  56. Drupal.new :host => "localhost", :user => 'admin', :password=> 'admin' do |site|
  57. p site.node(1)
  58. end
  59.  
  60.  
  61.  
  62. Drupal.test_login do
  63. p node(1)
  64. p user(1)
  65. end
  66.  
  67. Drupal.test_login do |site|
  68. p site.node(1)
  69. p site.user(1)
  70. end
  71.  
  72. site=Drupal.test_login
  73.  
  74. site.node(1).instance_eval {
  75. self["user_content"]=site.user self["uid"]
  76. p self
  77. }
  78.  
  79. nodes=site.view("contents",'page').map {|nd| site.node(nd['nid']) }
Add Comment
Please, Sign In to add comment