matteolc/t2_airtime

View on GitHub
rdoc/T2Airtime/Request.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">

<title>class T2Airtime::Request - T2Airtime</title>

<script type="text/javascript">
  var rdoc_rel_prefix = "../";
</script>

<script src="../js/jquery.js"></script>
<script src="../js/darkfish.js"></script>

<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">



<body id="top" role="document" class="class">
<nav role="navigation">
  <div id="project-navigation">
    <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2>
    <a href="../index.html" rel="home">Home</a>
  </h2>

  <div id="table-of-contents-navigation">
    <a href="../table_of_contents.html#pages">Pages</a>
    <a href="../table_of_contents.html#classes">Classes</a>
    <a href="../table_of_contents.html#methods">Methods</a>
  </div>
</div>

    <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

  </div>

  

  <div id="class-metadata">
    
    <div id="parent-class-section" class="nav-section">
  <h3>Parent</h3>

  
  <p class="link">Object
  
</div>

    
    
    <!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    
    <li ><a href="#method-c-new">::new</a>
    
    <li ><a href="#method-i-add_param">#add_param</a>
    
    <li ><a href="#method-i-authenticate">#authenticate</a>
    
    <li ><a href="#method-i-get-3F">#get?</a>
    
    <li ><a href="#method-i-key">#key</a>
    
    <li ><a href="#method-i-post-3F">#post?</a>
    
    <li ><a href="#method-i-reset">#reset</a>
    
    <li ><a href="#method-i-run">#run</a>
    
  </ul>
</div>

  </div>
</nav>

<main role="main" aria-labelledby="class-T2Airtime::Request">
  <h1 id="class-T2Airtime::Request" class="class">
    class T2Airtime::Request
  </h1>

  <section class="description">
    
  </section>

  
  
  
  <section id="5Buntitled-5D" class="documentation-section">
    

    

    

    

    
     <section id="public-class-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Class Methods</h3>
       </header>

    
      <div id="method-c-new" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">new</span><span
            class="method-args">(user, password, url, name, params)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="new-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 4</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">user</span>, <span class="ruby-identifier">password</span>, <span class="ruby-identifier">url</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">params</span>)
  <span class="ruby-ivar">@user</span>   = <span class="ruby-identifier">user</span> <span class="ruby-operator">||</span> <span class="ruby-string">&quot;&quot;</span>
  <span class="ruby-ivar">@pass</span>   = <span class="ruby-identifier">password</span> <span class="ruby-operator">||</span> <span class="ruby-string">&quot;&quot;</span>
  <span class="ruby-ivar">@conn</span> = <span class="ruby-constant">Faraday</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">url</span><span class="ruby-operator">:</span> <span class="ruby-identifier">url</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">faraday</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">faraday</span>.<span class="ruby-identifier">request</span>  <span class="ruby-value">:url_encoded</span>
    <span class="ruby-identifier">faraday</span>.<span class="ruby-identifier">adapter</span>  <span class="ruby-value">:net_http</span>        
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">reset</span>
  <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
  <span class="ruby-identifier">add_param</span> <span class="ruby-value">:action</span>, <span class="ruby-identifier">name</span>
  <span class="ruby-ivar">@params</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">params</span>)     
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Instance Methods</h3>
       </header>

    
      <div id="method-i-add_param" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">add_param</span><span
            class="method-args">(key, value)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="add_param-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 29</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">add_param</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>) <span class="ruby-ivar">@params</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">to_sym</span>] = <span class="ruby-identifier">value</span> <span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-authenticate" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">authenticate</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="authenticate-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 22</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">authenticate</span>
  <span class="ruby-identifier">time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_i</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-identifier">add_param</span> <span class="ruby-value">:key</span>,   <span class="ruby-identifier">time</span>
  <span class="ruby-identifier">add_param</span> <span class="ruby-value">:md5</span>,   <span class="ruby-identifier">md5_hash</span>(<span class="ruby-ivar">@user</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@pass</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">time</span>)
  <span class="ruby-identifier">add_param</span> <span class="ruby-value">:login</span>, <span class="ruby-ivar">@user</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-get-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">get?</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="get-3F-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 33</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">get?</span>() <span class="ruby-ivar">@params</span>[<span class="ruby-value">:method</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:get</span> <span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-key" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">key</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="key-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 31</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">key</span>() <span class="ruby-ivar">@params</span>[<span class="ruby-value">:key</span>] <span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-post-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">post?</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="post-3F-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 35</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">post?</span>() <span class="ruby-ivar">@params</span>[<span class="ruby-value">:method</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:post</span> <span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-reset" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">reset</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="reset-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 17</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">reset</span>
  <span class="ruby-ivar">@params</span> = {}
  <span class="ruby-identifier">authenticate</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-run" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">run</span><span
            class="method-args">(method = :get)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>More than 99.5% of the transactions are currently processed within a few
seconds.  However, it may happen in some rare cases that a transaction
takes longer to be processed by the receiving operator due to congested
system on their end for instance. TransferTo guarantees that transactions
not processed within 600 seconds will not be charged, whatever  the final
status of the transaction (successful or not). In addition, TransferTo is
operating a real time system; therefore, the status returned in the Top-up
response is final and will not change. To  ensure  that  your  system 
captures  successfully  the  status  of  all  transactions  especially  the
longest  ones, it is advised to either set up a high timeout value of
600seconds to be on the safe side (TCP connection could potentially be
opened for a long time in this case) or to set up a mechanism to check on 
the status (to do so, you can call the trans_info method to retrieve the
final status of a transaction). In case of timeout, both methods reserve_id
and get_id_from_key of the <a href="API.html">API</a> could be useful to
identify  the ID of the transaction (we recommend to either send a
reserve_id request and to use the ID returned  in the response in the
subsequent top-up request so that you know in advance the ID of the
transaction).</p>
          
          

          
          <div class="method-source-code" id="run-source">
            <pre><span class="ruby-comment"># File lib/t2_airtime/request.rb, line 50</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">method</span> = <span class="ruby-value">:get</span>)
  <span class="ruby-identifier">add_param</span> <span class="ruby-value">:method</span>, <span class="ruby-identifier">method</span>
  <span class="ruby-ivar">@conn</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">method</span>, <span class="ruby-node">&quot;/#{T2Airtime::ENDPOINT}&quot;</span>, <span class="ruby-ivar">@params</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">req</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">req</span>.<span class="ruby-identifier">options</span> = { <span class="ruby-identifier">timeout</span><span class="ruby-operator">:</span> <span class="ruby-value">600</span>, <span class="ruby-identifier">open_timeout</span><span class="ruby-operator">:</span> <span class="ruby-value">600</span> }
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
  </section>
</main>


<footer id="validator-badges" role="contentinfo">
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
  <p>Generated by <a href="http://docs.seattlerb.org/rdoc/">RDoc</a> 4.2.1.
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>