<!DOCTYPE html> <html> <head> <title>sample9.rb</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <ul class="sections"> <li id="title"> <div class="annotation"> <h1>sample9.rb</h1> </div> </li> <li id="section-1"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-1">¶</a> </div> <p>GET request</p> </div> <div class="content"><div class='highlight'><pre>get <span class="string">'/sample9'</span> <span class="keyword">do</span> haml <span class="symbol">:sample9</span> <span class="keyword">end</span></pre></div></div> </li> <li id="section-2"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-2">¶</a> </div> <p>POST request</p> </div> <div class="content"><div class='highlight'><pre>post <span class="string">'/sample9'</span> <span class="keyword">do</span></pre></div></div> </li> <li id="section-3"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-3">¶</a> </div> <p>set variables</p> </div> <div class="content"><div class='highlight'><pre> set <span class="symbol">:file_id</span>, params[<span class="symbol">:fileId</span>] set <span class="symbol">:width</span>, params[<span class="symbol">:width</span>] set <span class="symbol">:height</span>, params[<span class="symbol">:height</span>] <span class="keyword">begin</span></pre></div></div> </li> <li id="section-4"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-4">¶</a> </div> <p>check required variables</p> </div> <div class="content"><div class='highlight'><pre> raise <span class="string">'Please enter all required parameters'</span> <span class="keyword">if</span> settings.guid.empty? <span class="keyword">or</span> settings.width.empty? <span class="keyword">or</span> settings.height.empty?</pre></div></div> </li> <li id="section-5"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-5">¶</a> </div> <p>get document by file GUID</p> </div> <div class="content"><div class='highlight'><pre> file = <span class="keyword">nil</span> <span class="keyword">case</span> settings.source <span class="keyword">when</span> <span class="string">'guid'</span> file = <span class="constant">GroupDocs::Storage::File</span>.new({<span class="symbol">:guid</span> => settings.file_id}) <span class="keyword">when</span> <span class="string">'local'</span></pre></div></div> </li> <li id="section-6"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-6">¶</a> </div> <p>construct path</p> </div> <div class="content"><div class='highlight'><pre> filepath = <span class="string">"<span class="subst">#{<span class="constant">Dir</span>.tmpdir}</span>/<span class="subst">#{params[<span class="symbol">:file</span>][<span class="symbol">:filename</span>]}</span>"</span></pre></div></div> </li> <li id="section-7"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-7">¶</a> </div> <p>open file</p> </div> <div class="content"><div class='highlight'><pre> <span class="constant">File</span>.open(filepath, <span class="string">'wb'</span>) { |f| f.write(params[<span class="symbol">:file</span>][<span class="symbol">:tempfile</span>].read) }</pre></div></div> </li> <li id="section-8"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-8">¶</a> </div> <p>make a request to API using client_id and private_key</p> </div> <div class="content"><div class='highlight'><pre> file = <span class="constant">GroupDocs::Storage::File</span>.upload!(filepath, {}, <span class="symbol">client_id:</span> settings.client_id, <span class="symbol">private_key:</span> settings.private_key) <span class="keyword">when</span> <span class="string">'url'</span> file = <span class="constant">GroupDocs::Storage::File</span>.upload_web!(settings.url, <span class="symbol">client_id:</span> settings.client_id, <span class="symbol">private_key:</span> settings.private_key) <span class="keyword">else</span> raise <span class="string">'Wrong GUID source.'</span> <span class="keyword">end</span></pre></div></div> </li> <li id="section-9"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-9">¶</a> </div> <p>construct result string</p> </div> <div class="content"><div class='highlight'><pre> v_url = <span class="string">"https://apps.groupdocs.com/document-viewer/embed/<span class="subst">#{file.guid}</span>?frameborder='0' width='<span class="subst">#{settings.width}</span>' height='<span class="subst">#{settings.height}</span>'"</span> <span class="keyword">if</span> v_url v_url = v_url <span class="keyword">end</span> <span class="keyword">rescue</span> <span class="constant">Exception</span> => e err = e.message <span class="keyword">end</span></pre></div></div> </li> <li id="section-10"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-10">¶</a> </div> <p>set variables for template</p> </div> <div class="content"><div class='highlight'><pre> haml <span class="symbol">:sample9</span>, <span class="symbol">:locals</span> => {<span class="symbol">:guid</span> => settings.guid, <span class="symbol">:width</span> => settings.width, <span class="symbol">:height</span> => settings.height, <span class="symbol">:v_url</span> => v_url, <span class="symbol">:err</span> => err} <span class="keyword">end</span></pre></div></div> </li> </ul> </div> </body> </html>