<!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">&#182;</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">&#182;</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">&#182;</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">&#182;</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">&#182;</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> =&gt; 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">&#182;</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">&#182;</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">&#182;</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">&#182;</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> =&gt; 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">&#182;</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> =&gt; {<span class="symbol">:guid</span> =&gt; settings.guid, <span class="symbol">:width</span> =&gt; settings.width, <span class="symbol">:height</span> =&gt; settings.height, <span class="symbol">:v_url</span> =&gt; v_url, <span class="symbol">:err</span> =&gt; err}
<span class="keyword">end</span></pre></div></div>
            
        </li>
        
    </ul>
  </div>
</body>
</html>