E
Elijah Odumosu
Hi All,
I am really new to Ruby and here is my dilemma. I need to write a
ruby-cgi (.rb) script that just spits back pre-formatted XML. Basically,
my script would accomplish the following:
a.) Read in your form variables (name-value pair).
b.) Construct the right xml block.
c.) Submit the XML to BaseCamp API.
I have an interface to implement step c. However, as a start, I
implemented "step a" (as shown below). It simply reads in my HTML-input
fields (via submit from HTML-form to the script) and POST it to the
server as "raw" text.
#!c:\ruby\bin\ruby
require "cgi"
require 'rexml/document'
include REXML
cgi = CGI.new
response = String.new
#loop thru each name-value paired-element and save them in response
cgi.params.each_pair{|key, value|
response += "name = #{key}, value = #{value}<br/>"
}
cgi.out("charset" => "utf-8",
"type" => "text/html") {
response
}
produces:
name = location5, value = Code for Location 5
name = ScoutArea, value = Add New Resource
name = FriendlyResponse, value = 9
name = ForceNewBug, value = 9
name = ScoutDefaultMessage, value = Thank you for submitting your issue.
The request has been logged in the Issue Tracking System and will be
handled in priority order.
name = resourceURL, value = http://stuff.com
name = Extra, value = This is a test
name = location1, value = Code for Location 1
name = location2, value = Code for Location 2
name = resourceAnnotation, value = This is a test
name = location3, value = Code for Location 3
name = resourceType, value = Type
name = location4, value = Code for Location 4
name = ScoutProject, value = Project Name
name = ScoutUserName, value = John Doe
name = resourceTitle, value = New drugs for Type II Diabetes Patients
name = Description, value = Add New Resource: New drugs for Type II
Diabetes Patients
"Step b" is to convert the "posted" text to a pre-formated XML block
that will be submitted to BaseCamp API (step c).
When I changed cgi-out to xml type shown below (with the rest of the
script the same)
cgi.out("charset" => "utf-8",
"type" => "text/xml") {
response
it produces the following error message:
XML Parsing Error: syntax error
Location: http://mystuff/cgi-bin/Submitter.rb
Line Number 1, Column 1:
name = location5, value = Code for Location 5<br/>name = ScoutArea,
value = Add New Resource<br/>name = FriendlyResponse, value = 1<br/>name
= ForceNewBug, value = 1<br/>name = ScoutDefaultMessage, value = Thank
you for submitting your issue. The request has been logged in the Issue
Tracking System and will be handled in priority order.<br/>name =
resourceURL, value = http://stuff.com<br/>name = Extra, value =
^
QUESTION: I went through Ruby Standard Library and found some REXML
class-method, but I am not familiar with which one to use and how to use
them, yet.
I am really new to Ruby and here is my dilemma. I need to write a
ruby-cgi (.rb) script that just spits back pre-formatted XML. Basically,
my script would accomplish the following:
a.) Read in your form variables (name-value pair).
b.) Construct the right xml block.
c.) Submit the XML to BaseCamp API.
I have an interface to implement step c. However, as a start, I
implemented "step a" (as shown below). It simply reads in my HTML-input
fields (via submit from HTML-form to the script) and POST it to the
server as "raw" text.
#!c:\ruby\bin\ruby
require "cgi"
require 'rexml/document'
include REXML
cgi = CGI.new
response = String.new
#loop thru each name-value paired-element and save them in response
cgi.params.each_pair{|key, value|
response += "name = #{key}, value = #{value}<br/>"
}
cgi.out("charset" => "utf-8",
"type" => "text/html") {
response
}
produces:
name = location5, value = Code for Location 5
name = ScoutArea, value = Add New Resource
name = FriendlyResponse, value = 9
name = ForceNewBug, value = 9
name = ScoutDefaultMessage, value = Thank you for submitting your issue.
The request has been logged in the Issue Tracking System and will be
handled in priority order.
name = resourceURL, value = http://stuff.com
name = Extra, value = This is a test
name = location1, value = Code for Location 1
name = location2, value = Code for Location 2
name = resourceAnnotation, value = This is a test
name = location3, value = Code for Location 3
name = resourceType, value = Type
name = location4, value = Code for Location 4
name = ScoutProject, value = Project Name
name = ScoutUserName, value = John Doe
name = resourceTitle, value = New drugs for Type II Diabetes Patients
name = Description, value = Add New Resource: New drugs for Type II
Diabetes Patients
"Step b" is to convert the "posted" text to a pre-formated XML block
that will be submitted to BaseCamp API (step c).
When I changed cgi-out to xml type shown below (with the rest of the
script the same)
cgi.out("charset" => "utf-8",
"type" => "text/xml") {
response
it produces the following error message:
XML Parsing Error: syntax error
Location: http://mystuff/cgi-bin/Submitter.rb
Line Number 1, Column 1:
name = location5, value = Code for Location 5<br/>name = ScoutArea,
value = Add New Resource<br/>name = FriendlyResponse, value = 1<br/>name
= ForceNewBug, value = 1<br/>name = ScoutDefaultMessage, value = Thank
you for submitting your issue. The request has been logged in the Issue
Tracking System and will be handled in priority order.<br/>name =
resourceURL, value = http://stuff.com<br/>name = Extra, value =
^
QUESTION: I went through Ruby Standard Library and found some REXML
class-method, but I am not familiar with which one to use and how to use
them, yet.