Hi, All
Please help me how to integrate constantcontact in ruby-on-rails
I have implemented but it is showing me 400 error in development log
Here is my code
<div id="full_width">
        <div class="cream_bkg">
          <h1>Suggest A Business</h1>
          <div class="full_width_content center_fix">
            <h2>Do you have a favourite business that you would like to
see on Home Shabang? Tell us and we will invite them!!</h2>
            <h3><%= flash[:error] %></h3>
            <!--form method="post" action=""-->
            <%= form_for :coupon,:url=>
{:controller=>''coupons'',:action=>''comments''},:html=>{:id=>
''cc_coupon_form''} do |f| %>
              <table class="form_table suggest_business"
cellpadding="0"
cellspacing="0">
                <tr>
                  <th></th>
                  <th></th>
                </tr>
                <tr>
                  <td><label for ="email">
Email:</lable></td>
                  <td>
                    <span class="blue_field">
                    <!--input id="email"
class="text_field" type="text"
name="" /-->
                    <%= f.text_field :email, :id
=>''email'',:class=>''text_field''
%></span>
                    <span id= "email_address"
class="error_msg"
style="display:none;">Please enter the Email Address.</span>
                  </td>
                </tr>
                <tr>
                  <td><label for="company_name">Company
Name:</label></td>
                  <td>
                    <span class="blue_field">
                    <!--input id="company_name"
class="text_field"
type="text" name="" /-->
                    <%= f.text_field :company_name,:id
=>''company'',:class=>''text_field''
%></span>
                    <span id="name" class="error_msg"
style
="display:none;"> Please enter the company name.</span>
                  </td>
                </tr>
                <tr>
                  <td><label
for="state">State:</label></td>
                  <td>
                    <span class="blue_field">
                    <!--input id="state"
class="text_field" type="text"
name="" /-->
                    <%= f.text_field :state, :id
=>''state'',:class=>''text_field''
%></span>
                    <span id= "business_state"
class="error_msg"
style="display:none;">Please enter the state.</span>
                  </td>
                </tr>
                <tr>
                  <td><label
for="city">City:</label></td>
                  <td><span class="blue_field">
                  <%= f.text_field :city, :class=>
''text_field'' %>
                  <!--input id="city" class="text_field"
type="text"
name=""/></span--></td>
                </tr>
                <tr>
                  <td><label
for="comment">Comment:</label></td>
                  <td><span class="blue_field">
                  <!--textarea id="comment"
class="text_area" rows=""
cols="" name=""></textarea-->
                      <%= f.text_area :comment,:class=>
''text_area'' %>
                      </span>
                  </td>
                </tr>
                <tr>
                  <td></td>
                  <td><!--input class="submit_btn"
type="button"
value="Send" /-->
                      <%= f.submit "Send", :class=>
"submit_btn",
:id=>''send'',
                      :type=> ''button'' %>
                  </td>
                </tr>
              </table>
            <% end %>
          </div>
        </div>
      </div>
Here is my method in my controller
 def comments
    unless params[:coupon].blank?
      unless params[:coupon][:email].blank?
        unless params[:coupon][:company_name].blank?
          create_contact_on_constant_contact(params[:coupon])
        else
          flash[:error] = "Comapny Name is a mandatory field"
          redirect_to static_suggest_business_path
        end
      else
        flash[:error] = "Email is a mandatory field"
        redirect_to static_suggest_business_path
      end
    else
      flash[:error] = "Email is a mandatory field"
      redirect_to static_suggest_business_path
    end
  end
  def create_contact_on_constant_contact(coupon)
    logger.debug "\n\n Coupon: #{coupon.inspect}\n\n"
    unless coupon.blank?
      #require ''httparty''
      require ''net/http''
      require ''uri''
      xml_string_response = xml_string(coupon)
      logger.debug "\n\n XML string:
#{xml_string_response.inspect}\n\n"
      options = {
        :headers => {
          "Content-Type" => "application/atom+xml",
          "HTTP_AUTHORIZATION" =>
           Base64.encode64("#{''chandrareddy'' +
''%'' +
''f6040a9e45484dbaabeab8f0e1da6726'' + '':'' +
''605a8e068b654ca098a32a81f8cb2ef2'' }")
        },
        :body => xml_string_response,
      }
      #url
URI.parse("https://api.constantcontact.com/ws/customers/#{''chandrareddy''}/contacts")
      response
Net::HTTP.post_form(URI.parse("https://api.constantcontact.com/ws/customers/#{''chandrareddy''}/contacts"),
options)
      logger.debug "\n\n Response1: #{response.inspect}\n\n"
      logger.debug "\n\n Response2: #{response.body.inspect}\n\n"
    end
  end
  def xml_string( coupon )
      opt_in=''ACTION_BY_CUSTOMER''
      data = {:email_address => "#{coupon[:email]}", :company_name
=>
"#{coupon[:company_name]}", :contact_lists => ''''}
      xml = <<EOF
<entry xmlns="http://www.w3.org/2005/Atom"><title
type="text"></title><updated>#{Time.now.strftime("%Y-%m-%dT%H:%M:%S.000Z")}</updated><author></author><id>data:,none</id><summary
type="text">Contact</summary><content
type="application/vnd.ctct+xml"><Contact
xmlns="http://ws.constantcontact.com/ns/1.0/">
EOF
      data.each do |key, val|
        node = camelize(key.to_s)
        if key == :contact_lists
          xml << %Q(<ContactLists>)
          #val.each do |list_id|
          #  xml<< %Q(       <ContactList
id="#{ContactList.url_for(
list_id )}" />\n)
          xml << %Q(<ContactList
id="http://api.constantcontact.com/ws/customers/#{''chandrareddy''}/lists/1"
/>)
          #end
          xml << %Q(</ContactLists>)
        else
          xml << %Q(<#{node}>#{val}</#{node}>)
        end
      end
      xml += <<EOF
<OptInSource>#{opt_in}</OptInSource></Contact></content></entry>
EOF
      xml
    end
    def camelize( string )
      string.split( /[^a-z0-9]/i ).map{ |w| w.capitalize }.join
    end
I think the xml is totally wrong code, Please can any one help me how to
code right xml formate
-- 
Posted via http://www.ruby-forum.com/.
-- 
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Philip Hallstrom
2011-Dec-14  17:22 UTC
Re: How to integrate constantcontact in ruby-on-rails
On Dec 14, 2011, at 3:57 AM, chandra yaparla wrote:> Hi, All > > Please help me how to integrate constantcontact in ruby-on-rails > > I have implemented but it is showing me 400 error in development log > > Here is my code > > [snipped code] > > I think the xml is totally wrong code, Please can any one help me how to > code right xml formateTry this... http://rubygems.org/gems/constant_contact -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.