Robby on Rails: HTTParty goes foreign
thoughts.sort_by{|t| t[:topic]}.collect
tag:www.robbyonrails.com,2005:Typo
Typo
2009-03-16T02:07:52-04:00
Robby Russell
urn:uuid:bdfa14b0-de4c-4292-b274-c86d80af7e60
2009-03-16T02:05:00-04:00
2009-03-16T02:07:52-04:00
HTTParty goes foreign
<p>Just a quick post to get share something I was tinkering with this evening.</p>
<p>I came across <a href="http://rubybook.ca/2009/03/03/google-translation-api-with-ruby/">this post by Gerald Bauer</a>, which shows you how to use the <a href="http://code.google.com/apis/ajaxlanguage/documentation/reference.html">Google Translation <span class="caps">API</span></a> with Ruby via Net::HTTP. I thought I’d play with the service with <a href="http://httparty.rubyforge.org/">HTTParty</a>.</p>
<div class="typocode"><pre><code class="typocode_ruby "><span class="keyword">class </span><span class="class">GoogleApi</span>
<span class="ident">include</span> <span class="constant">HTTParty</span>
<span class="ident">base_uri</span> <span class="punct">'</span><span class="string">ajax.googleapis.com</span><span class="punct">'</span>
<span class="keyword">def </span><span class="method">self.translate</span><span class="punct">(</span><span class="ident">string</span><span class="punct">="</span><span class="string"></span><span class="punct">",</span> <span class="ident">to</span><span class="punct">="</span><span class="string"></span><span class="punct">",</span> <span class="ident">from</span><span class="punct">="</span><span class="string">en</span><span class="punct">")</span>
<span class="ident">get</span><span class="punct">("</span><span class="string">/ajax/services/language/translate</span><span class="punct">",</span> <span class="symbol">:query</span> <span class="punct">=></span> <span class="punct">{</span><span class="symbol">:langpair</span> <span class="punct">=></span> <span class="punct">"</span><span class="string"><span class="expr">#{from}</span>|<span class="expr">#{to}</span></span><span class="punct">",</span> <span class="symbol">:q</span> <span class="punct">=></span> <span class="ident">string</span><span class="punct">,</span> <span class="symbol">:v</span> <span class="punct">=></span> <span class="number">1.0</span><span class="punct">})</span>
<span class="keyword">end</span>
<span class="keyword">end</span></code></pre></div>
<p>A few examples from playing with it.</p>
<div class="typocode"><pre><code class="typocode_ruby "><span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">bonjour</span><span class="punct">',</span> <span class="punct">'</span><span class="string">en</span><span class="punct">',</span> <span class="punct">'</span><span class="string">fr</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>hello<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">Red wine</span><span class="punct">',</span> <span class="punct">'</span><span class="string">fr</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>Vin rouge<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">Where is the bathroom?</span><span class="punct">',</span> <span class="punct">'</span><span class="string">es</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"\302\277</span>D<span class="escape">\303\263</span>nde est<span class="escape">\303\241</span> el ba<span class="escape">\303\261</span>o?<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">Good morning</span><span class="punct">',</span> <span class="punct">'</span><span class="string">it</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>Buon giorno<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
</code></pre></div>
<p>What a <em>party</em>!</p>
<div class="typocode"><pre><code class="typocode_ruby "><span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">party</span><span class="punct">',</span> <span class="punct">'</span><span class="string">it</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>festa<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">party</span><span class="punct">',</span> <span class="punct">'</span><span class="string">es</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>fiesta<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span></code></pre></div>
<p>Look how easy that was. :-)</p>
<p>For a previous post on using this gem, read <a href="http://www.robbyonrails.com/articles/2008/11/26/the-httparty-has-just-begun">The HTTParty has just begun</a>.</p>
<p>Just a quick post to get share something I was tinkering with this evening.</p>
<p>I came across <a href="http://rubybook.ca/2009/03/03/google-translation-api-with-ruby/">this post by Gerald Bauer</a>, which shows you how to use the <a href="http://code.google.com/apis/ajaxlanguage/documentation/reference.html">Google Translation <span class="caps">API</span></a> with Ruby via Net::HTTP. I thought I’d play with the service with <a href="http://httparty.rubyforge.org/">HTTParty</a>.</p>
<div class="typocode"><pre><code class="typocode_ruby "><span class="keyword">class </span><span class="class">GoogleApi</span>
<span class="ident">include</span> <span class="constant">HTTParty</span>
<span class="ident">base_uri</span> <span class="punct">'</span><span class="string">ajax.googleapis.com</span><span class="punct">'</span>
<span class="keyword">def </span><span class="method">self.translate</span><span class="punct">(</span><span class="ident">string</span><span class="punct">="</span><span class="string"></span><span class="punct">",</span> <span class="ident">to</span><span class="punct">="</span><span class="string"></span><span class="punct">",</span> <span class="ident">from</span><span class="punct">="</span><span class="string">en</span><span class="punct">")</span>
<span class="ident">get</span><span class="punct">("</span><span class="string">/ajax/services/language/translate</span><span class="punct">",</span> <span class="symbol">:query</span> <span class="punct">=></span> <span class="punct">{</span><span class="symbol">:langpair</span> <span class="punct">=></span> <span class="punct">"</span><span class="string"><span class="expr">#{from}</span>|<span class="expr">#{to}</span></span><span class="punct">",</span> <span class="symbol">:q</span> <span class="punct">=></span> <span class="ident">string</span><span class="punct">,</span> <span class="symbol">:v</span> <span class="punct">=></span> <span class="number">1.0</span><span class="punct">})</span>
<span class="keyword">end</span>
<span class="keyword">end</span></code></pre></div>
<p>A few examples from playing with it.</p>
<div class="typocode"><pre><code class="typocode_ruby "><span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">bonjour</span><span class="punct">',</span> <span class="punct">'</span><span class="string">en</span><span class="punct">',</span> <span class="punct">'</span><span class="string">fr</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>hello<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">Red wine</span><span class="punct">',</span> <span class="punct">'</span><span class="string">fr</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>Vin rouge<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">Where is the bathroom?</span><span class="punct">',</span> <span class="punct">'</span><span class="string">es</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"\302\277</span>D<span class="escape">\303\263</span>nde est<span class="escape">\303\241</span> el ba<span class="escape">\303\261</span>o?<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">Good morning</span><span class="punct">',</span> <span class="punct">'</span><span class="string">it</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>Buon giorno<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
</code></pre></div>
<p>What a <em>party</em>!</p>
<div class="typocode"><pre><code class="typocode_ruby "><span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">party</span><span class="punct">',</span> <span class="punct">'</span><span class="string">it</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>festa<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span>
<span class="punct">>></span> <span class="constant">GoogleApi</span><span class="punct">.</span><span class="ident">translate</span><span class="punct">('</span><span class="string">party</span><span class="punct">',</span> <span class="punct">'</span><span class="string">es</span><span class="punct">')</span>
<span class="punct">=></span> <span class="punct">"</span><span class="string">{<span class="escape">\"</span>responseData<span class="escape">\"</span>: {<span class="escape">\"</span>translatedText<span class="escape">\"</span>:<span class="escape">\"</span>fiesta<span class="escape">\"</span>,<span class="escape">\"</span>detectedSourceLanguage<span class="escape">\"</span>:<span class="escape">\"</span>en<span class="escape">\"</span>}, <span class="escape">\"</span>responseDetails<span class="escape">\"</span>: null, <span class="escape">\"</span>responseStatus<span class="escape">\"</span>: 200}</span><span class="punct">"</span></code></pre></div>
<p>Look how easy that was. :-)</p>
<p>For a previous post on using this gem, read <a href="http://www.robbyonrails.com/articles/2008/11/26/the-httparty-has-just-begun">The HTTParty has just begun</a>.</p>