Simplify a ProjectX request using projectx-helper.cgi
1 2 #!/usr/bin/ruby 3 # projectx-helper.cgi 4 5 require 'cgi' 6 7 cgi = CGI.new 8 9 h = cgi.params 10 11 puts "Content-Type: text/xml" 12 puts 13 14 def pparam(h,var) 15 val = '' 16 if not h[var].empty? then 17 val = h[var] 18 h.delete(var) 19 end 20 val 21 end 22 23 def format_param(var, val) 24 "#{' '*8}<param var='#{var}'>#{val}</param>\r" 25 end 26 27 def pparam_remainder(h) 28 buffer = '' 29 h.each do |param| 30 buffer << format_param(param[0],param[1]) 31 end 32 buffer 33 end 34 35 xml_project =<<XML_PROJECT 36 <project name='#{pparam(h,'project')}'> 37 <methods> 38 <method name='#{pparam(h,'method')}'> 39 <params> 40 #{pparam_remainder(h)} 41 </params> 42 </method> 43 </methods> 44 </project> 45 XML_PROJECT 46 47 puts xml_project
example input url: http://yourwebsite.com/p/projectx-helper.cgi?project=abc&method=create&path=mdynarex&xyz=123
example output:
1 2 <project name='abc'> 3 <methods> 4 <method name='create'> 5 <params> 6 <param var='xyz'>123</param> 7 <param var='path'>mdynarex</param> 8 </params> 9 </method> 10 </methods> 11 </project>
CGI Reference: Programming Ruby: The Pragmatic Programmer's Guide [rubycentral.com]