ShogunPanda/clavem

View on GitHub
docs/Clavem/Authorizer.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
  Class: Clavem::Authorizer
  
    &mdash; Documentation by YARD 0.8.7.6
  
</title>

  <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />

  <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />

<script type="text/javascript" charset="utf-8">
  hasFrames = window.top.frames.main ? true : false;
  relpath = '../';
  framesUrl = "../frames.html#!Clavem/Authorizer.html";
</script>


  <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>

  <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>


  </head>
  <body>
    <div id="header">
      <div id="menu">
  
    <a href="../_index.html">Index (A)</a> &raquo;
    <span class='title'><span class='object_link'><a href="../Clavem.html" title="Clavem (module)">Clavem</a></span></span>
     &raquo; 
    <span class="title">Authorizer</span>
  

  <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>

      <div id="search">
  
    <a class="full_list_link" id="class_list_link"
        href="../class_list.html">
      Class List
    </a>
  
    <a class="full_list_link" id="method_list_link"
        href="../method_list.html">
      Method List
    </a>
  
    <a class="full_list_link" id="file_list_link"
        href="../file_list.html">
      File List
    </a>
  
</div>
      <div class="clear"></div>
    </div>

    <iframe id="search_frame"></iframe>

    <div id="content"><h1>Class: Clavem::Authorizer
  
  
  
</h1>

<dl class="box">
  
    <dt class="r1">Inherits:</dt>
    <dd class="r1">
      <span class="inheritName">Object</span>
      
        <ul class="fullTree">
          <li>Object</li>
          
            <li class="next">Clavem::Authorizer</li>
          
        </ul>
        <a href="#" class="inheritanceTree">show all</a>
      
      </dd>
    
  
  
    
  
    
  
  
  
    <dt class="r2 last">Defined in:</dt>
    <dd class="r2 last">lib/clavem/authorizer.rb</dd>
  
</dl>
<div class="clear"></div>

<h2>Overview</h2><div class="docstring">
  <div class="discussion">
    <p>A class to handle oAuth authorizations.</p>


  </div>
</div>
<div class="tags">
  

</div>



  <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
  <ul class="summary">
    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#%3Ai18n-instance_method" title="#:i18n (instance method)">- (Bovem::I18n) <strong>:i18n</strong>(:i18n) </a>
    

    
  </span>
  
  
  
    
      <span class="note title readonly">readonly</span>
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>A localizer object.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#command-instance_method" title="#command (instance method)">- (String) <strong>command</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>The command to open the URL.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#host-instance_method" title="#host (instance method)">- (String) <strong>host</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>The host address on which listening for replies.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#i18n-instance_method" title="#i18n (instance method)">- (Object) <strong>i18n</strong> </a>
    

    
  </span>
  
  
  
    
      <span class="note title readonly">readonly</span>
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Returns the value of attribute i18n.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#port-instance_method" title="#port (instance method)">- (Fixnum) <strong>port</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>The port on which listening for replies.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#response_handler-instance_method" title="#response_handler (instance method)">- (Object) <strong>response_handler</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Returns the response handler for the authorizer.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#status-instance_method" title="#status (instance method)">- (Symbol) <strong>status</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>The status of the request.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#timeout-instance_method" title="#timeout (instance method)">- (Fixnum) <strong>timeout</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>The amount of seconds to wait for response from the remote endpoint before returning a failure.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#token-instance_method" title="#token (instance method)">- (String) <strong>token</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>The token obtained by the remote endpoint.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#url-instance_method" title="#url (instance method)">- (String) <strong>url</strong> </a>
    

    
  </span>
  
  
  
    
    
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>The URL where to send the user to start authorization..</p>
</div></span>
  
</li>

    
  </ul>




  
    <h2>
      Class Method Summary
      <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
    </h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#instance-class_method" title="instance (class method)">+ (Authorizer) <strong>instance</strong>(host: &quot;localhost&quot;, port: 7772, command: nil, timeout: 0, force: false, &amp;response_handler) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Returns a unique (singleton) instance of the authorizer.</p>
</div></span>
  
</li>

      
    </ul>
  
    <h2>
      Instance Method Summary
      <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
    </h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#authorize-instance_method" title="#authorize (instance method)">- (Boolean) <strong>authorize</strong>(url, append_callback = true) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Starts the authorization flow.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#callback_url-instance_method" title="#callback_url (instance method)">- (String) <strong>callback_url</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Returns the callback_url for this authorizer.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#denied%3F-instance_method" title="#denied? (instance method)">- (Boolean) <strong>denied?</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Checks if authentication was denied.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#failed%3F-instance_method" title="#failed? (instance method)">- (Boolean) <strong>failed?</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Checks if authentication failed (which means that some error occurred).</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#initialize-instance_method" title="#initialize (instance method)">- (Authorizer) <strong>initialize</strong>(host: &quot;localhost&quot;, port: 7772, command: nil, timeout: 0, &amp;response_handler) </a>
    

    
  </span>
  
  
    <span class="note title constructor">constructor</span>
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Creates a new authorizer.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#succeeded%3F-instance_method" title="#succeeded? (instance method)">- (Boolean) <strong>succeeded?</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Checks if authentication succeeded.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#waiting%3F-instance_method" title="#waiting? (instance method)">- (Boolean) <strong>waiting?</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Checks if authentication is still pending.</p>
</div></span>
  
</li>

      
    </ul>
  

<div id="constructor_details" class="method_details_list">
  <h2>Constructor Details</h2>
  
    <div class="method_details first">
  <h3 class="signature first" id="initialize-instance_method">
  
    - (<tt><span class='object_link'><a href="" title="Clavem::Authorizer (class)">Authorizer</a></span></tt>) <strong>initialize</strong>(host: &quot;localhost&quot;, port: 7772, command: nil, timeout: 0, &amp;response_handler) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Creates a new authorizer.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>host</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The host address on which listening for replies. Default is <code>localhost</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>port</span>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The port on which listening for replies. Default is <code>7772</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>command</span>
      
      
        <span class='type'>(<tt>String|nil</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The command to open the URL. <code>{{URL}}</code> is replaced with the specified URL. Default is <code>open "{{URL}}"</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>timeout</span>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The amount of seconds to wait for response from the remote endpoint before returning a failure.
Default is <code>0</code>, which means <em>disabled</em>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>response_handler</span>
      
      
        <span class='type'>(<tt>Proc</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>A Ruby block to handle response and check for success. See <span class='object_link'><a href="#response_handler-instance_method" title="Clavem::Authorizer#response_handler (method)">#response_handler</a></span>.</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


75
76
77
78
79
80
81
82
83
84
85
86
87</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 75</span>

<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
  <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
  <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
  <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
  <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
  <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
  <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
  <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

  <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
  <span class='kw'>self</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
  
</div>

  <div id="instance_attr_details" class="attr_details">
    <h2>Instance Attribute Details</h2>
    
      
      <span id=""></span>
      <div class="method_details first">
  <h3 class="signature first" id=":i18n-instance_method">
  
    - (<tt>Bovem::I18n</tt>) <strong>:i18n</strong>(:i18n)  <span class="extras">(readonly)</span>
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns A localizer object.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Bovem::I18n</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>A localizer object.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="command=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="command-instance_method">
  
    - (<tt>String</tt>) <strong>command</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The command to open the URL. <code>{{URL}}</code> is replaced with the specified URL. Default is <code>open "{{URL}}"</code>.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The command to open the URL. <code>{{URL}}</code> is replaced with the specified URL. Default is <code>open "{{URL}}"</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="host=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="host-instance_method">
  
    - (<tt>String</tt>) <strong>host</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The host address on which listening for replies. Default is <code>localhost</code>.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The host address on which listening for replies. Default is <code>localhost</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id=""></span>
      <div class="method_details ">
  <h3 class="signature " id="i18n-instance_method">
  
    - (<tt>Object</tt>) <strong>i18n</strong>  <span class="extras">(readonly)</span>
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns the value of attribute i18n</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


48
49
50</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 48</span>

<span class='kw'>def</span> <span class='id identifier rubyid_i18n'>i18n</span>
  <span class='ivar'>@i18n</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="port=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="port-instance_method">
  
    - (<tt>Fixnum</tt>) <strong>port</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The port on which listening for replies. Default is <code>7772</code>.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The port on which listening for replies. Default is <code>7772</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="response_handler=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="response_handler-instance_method">
  
    - (<tt>Object</tt>) <strong>response_handler</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns the response handler for the authorizer.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="status=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="status-instance_method">
  
    - (<tt>Symbol</tt>) <strong>status</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The status of the request. Can be <code>:succeeded</code>, <code>:denied</code>, <code>:failed</code> and <code>:waiting</code>.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Symbol</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The status of the request. Can be <code>:succeeded</code>, <code>:denied</code>, <code>:failed</code> and <code>:waiting</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="timeout=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="timeout-instance_method">
  
    - (<tt>Fixnum</tt>) <strong>timeout</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The amount of seconds to wait for response from the remote endpoint before returning a failure. Default is <code>0</code>, which means <em>disabled</em>.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The amount of seconds to wait for response from the remote endpoint before returning a failure. Default is <code>0</code>, which means <em>disabled</em>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="token=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="token-instance_method">
  
    - (<tt>String</tt>) <strong>token</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The token obtained by the remote endpoint.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The token obtained by the remote endpoint.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id="url=-instance_method"></span>
      <div class="method_details ">
  <h3 class="signature " id="url-instance_method">
  
    - (<tt>String</tt>) <strong>url</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The URL where to send the user to start authorization..</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The URL where to send the user to start authorization..</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 39</span>

<span class='kw'>class</span> <span class='const'>Authorizer</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:host</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:port</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:command</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:timeout</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:response_handler</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:token</span>
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:status</span>
  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:i18n</span>

  <span class='comment'># Returns a unique (singleton) instance of the authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @param force [Boolean] If to force recreation of the instance.
</span>  <span class='comment'># @return [Authorizer] The unique (singleton) instance of the authorizer.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
    <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param host [String] The host address on which listening for replies. Default is `localhost`.
</span>  <span class='comment'># @param port [Fixnum] The port on which listening for replies. Default is `7772`.
</span>  <span class='comment'># @param command [String|nil] The command to open the URL. `{{URL}}` is replaced with the specified URL. Default is `open &quot;{{URL}}&quot;`.
</span>  <span class='comment'># @param timeout [Fixnum] The amount of seconds to wait for response from the remote endpoint before returning a failure.
</span>  <span class='comment'>#   Default is `0`, which means *disabled*.
</span>  <span class='comment'># @param response_handler [Proc] A Ruby block to handle response and check for success. See {#response_handler}.
</span>  <span class='comment'># @return [Authorizer] The new authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
    <span class='ivar'>@i18n</span> <span class='op'>=</span> <span class='const'>Bovem</span><span class='op'>::</span><span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>root:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>clavem.errors</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>path:</span> <span class='op'>::</span><span class='const'>Pathname</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../locales/</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_host'>host</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_port'>port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='id identifier rubyid_command'>command</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span>
    <span class='ivar'>@response_handler</span> <span class='op'>=</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>

    <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='kw'>self</span>
  <span class='kw'>end</span>

  <span class='comment'># Starts the authorization flow.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param url [String] The URL where to send the user to start authorization.
</span>  <span class='comment'># @param append_callback [Boolean] If to append the callback to the url using `oauth_callback` parameter.
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false` otherwise.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

    <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
    <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>begin</span>
      <span class='id identifier rubyid_perform_request'>perform_request</span>
      <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
      <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
      <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the callback_url for this authorizer.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The callback_url for this authorizer.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
    <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='kw'>end</span>

  <span class='comment'># Returns the response handler for the authorizer.
</span>  <span class='comment'>#
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_response_handler'>response_handler</span>
    <span class='ivar'>@response_handler</span> <span class='op'>||</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='lparen'>(</span><span class='id identifier rubyid_querystring'>querystring</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>oauth_token</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication succeeded.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization succeeded, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication was denied.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization was denied, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication failed (which means that some error occurred).
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization failed, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
  <span class='kw'>end</span>

  <span class='comment'># Checks if authentication is still pending.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [Boolean] `true` if authorization is still pending, `false otherwise`.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
    <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_private'>private</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_sanitize_arguments'>sanitize_arguments</span>
    <span class='ivar'>@host</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@port</span> <span class='op'>=</span> <span class='int'>7772</span> <span class='kw'>if</span> <span class='ivar'>@port</span><span class='period'>.</span><span class='id identifier rubyid_to_integer'>to_integer</span> <span class='op'>&lt;</span> <span class='int'>1</span>
    <span class='ivar'>@command</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>open \&quot;{{URL}}\&quot;</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
    <span class='ivar'>@timeout</span> <span class='op'>=</span> <span class='int'>0</span> <span class='kw'>if</span> <span class='ivar'>@timeout</span> <span class='op'>&lt;</span> <span class='int'>0</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='comment'># Open the oAuth endpoint into the browser
</span>    <span class='const'>Kernel</span><span class='period'>.</span><span class='id identifier rubyid_system'>system</span><span class='lparen'>(</span><span class='ivar'>@command</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>{{URL}}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_open_failure'>open_failure</span><span class='lparen'>(</span><span class='ivar'>@url</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span><span class='comma'>,</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># :nodoc:
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_response'>process_response</span>
    <span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
      <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='ivar'>@timeout</span> <span class='op'>&gt;</span> <span class='int'>0</span> <span class='op'>?</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='ivar'>@timeout</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span>
  <span class='kw'>rescue</span> <span class='const'>Interrupt</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_interrupted'>interrupted</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>


  <div id="class_method_details" class="method_details_list">
    <h2>Class Method Details</h2>

    
      <div class="method_details first">
  <h3 class="signature first" id="instance-class_method">
  
    + (<tt><span class='object_link'><a href="" title="Clavem::Authorizer (class)">Authorizer</a></span></tt>) <strong>instance</strong>(host: &quot;localhost&quot;, port: 7772, command: nil, timeout: 0, force: false, &amp;response_handler) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns a unique (singleton) instance of the authorizer.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>host</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The host address on which listening for replies. Default is <code>localhost</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>port</span>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The port on which listening for replies. Default is <code>7772</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>command</span>
      
      
        <span class='type'>(<tt>String|nil</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The command to open the URL. <code>{{URL}}</code> is replaced with the specified URL. Default is <code>open "{{URL}}"</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>timeout</span>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The amount of seconds to wait for response from the remote endpoint before returning a failure.
Default is <code>0</code>, which means <em>disabled</em>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>response_handler</span>
      
      
        <span class='type'>(<tt>Proc</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>A Ruby block to handle response and check for success. See <span class='object_link'><a href="#response_handler-instance_method" title="Clavem::Authorizer#response_handler (method)">#response_handler</a></span>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>force</span>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>If to force recreation of the instance.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt><span class='object_link'><a href="" title="Clavem::Authorizer (class)">Authorizer</a></span></tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The unique (singleton) instance of the authorizer.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


60
61
62
63
64</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 60</span>

<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>localhost</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>port:</span> <span class='int'>7772</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='int'>0</span><span class='comma'>,</span> <span class='label'>force:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
  <span class='ivar'>@instance</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_force'>force</span>
  <span class='ivar'>@instance</span> <span class='op'>||=</span> <span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Authorizer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='comma'>,</span> <span class='label'>command:</span> <span class='id identifier rubyid_command'>command</span><span class='comma'>,</span> <span class='label'>timeout:</span> <span class='id identifier rubyid_timeout'>timeout</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_response_handler'>response_handler</span><span class='rparen'>)</span>
  <span class='ivar'>@instance</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

  <div id="instance_method_details" class="method_details_list">
    <h2>Instance Method Details</h2>

    
      <div class="method_details first">
  <h3 class="signature first" id="authorize-instance_method">
  
    - (<tt>Boolean</tt>) <strong>authorize</strong>(url, append_callback = true) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Starts the authorization flow.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>url</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The URL where to send the user to start authorization.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>append_callback</span>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>true</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>If to append the callback to the url using <code>oauth_callback</code> parameter.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p><code>true</code> if authorization succeeded, <code>false</code> otherwise.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 94</span>

<span class='kw'>def</span> <span class='id identifier rubyid_authorize'>authorize</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_append_callback'>append_callback</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_url'>url</span> <span class='op'>=</span> <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_query_values'>query_values</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='label'>oauth_callback:</span> <span class='id identifier rubyid_callback_url'>callback_url</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_append_callback'>append_callback</span>

  <span class='ivar'>@url</span> <span class='op'>=</span> <span class='id identifier rubyid_url'>url</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
  <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:waiting</span>
  <span class='ivar'>@token</span> <span class='op'>=</span> <span class='kw'>nil</span>

  <span class='kw'>begin</span>
    <span class='id identifier rubyid_perform_request'>perform_request</span>
    <span class='id identifier rubyid_process_response'>process_response</span>
  <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
    <span class='ivar'>@status</span> <span class='op'>=</span> <span class='symbol'>:failed</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>Clavem</span><span class='op'>::</span><span class='const'>Exceptions</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='ivar'>@i18n</span><span class='period'>.</span><span class='id identifier rubyid_response_failure'>response_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_succeeded?'>succeeded?</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="callback_url-instance_method">
  
    - (<tt>String</tt>) <strong>callback_url</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns the callback_url for this authorizer.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The callback_url for this authorizer.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


116
117
118</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 116</span>

<span class='kw'>def</span> <span class='id identifier rubyid_callback_url'>callback_url</span>
  <span class='const'>Addressable</span><span class='op'>::</span><span class='const'>URI</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>scheme:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>http</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>host:</span> <span class='id identifier rubyid_host'>host</span><span class='comma'>,</span> <span class='label'>port:</span> <span class='id identifier rubyid_port'>port</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="denied?-instance_method">
  
    - (<tt>Boolean</tt>) <strong>denied?</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Checks if authentication was denied.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p><code>true</code> if authorization was denied, <code>false otherwise</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


136
137
138</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 136</span>

<span class='kw'>def</span> <span class='id identifier rubyid_denied?'>denied?</span>
  <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:denied</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="failed?-instance_method">
  
    - (<tt>Boolean</tt>) <strong>failed?</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Checks if authentication failed (which means that some error occurred).</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p><code>true</code> if authorization failed, <code>false otherwise</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


143
144
145</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 143</span>

<span class='kw'>def</span> <span class='id identifier rubyid_failed?'>failed?</span>
  <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:failed</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="succeeded?-instance_method">
  
    - (<tt>Boolean</tt>) <strong>succeeded?</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Checks if authentication succeeded.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p><code>true</code> if authorization succeeded, <code>false otherwise</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


129
130
131</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 129</span>

<span class='kw'>def</span> <span class='id identifier rubyid_succeeded?'>succeeded?</span>
  <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:succeeded</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="waiting?-instance_method">
  
    - (<tt>Boolean</tt>) <strong>waiting?</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Checks if authentication is still pending.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p><code>true</code> if authorization is still pending, <code>false otherwise</code>.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


150
151
152</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/clavem/authorizer.rb', line 150</span>

<span class='kw'>def</span> <span class='id identifier rubyid_waiting?'>waiting?</span>
  <span class='ivar'>@status</span> <span class='op'>==</span> <span class='symbol'>:waiting</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

</div>

    <div id="footer">
  Generated on Thu Aug 18 15:49:56 2016 by
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
  0.8.7.6 (ruby-2.3.0).
</div>

  </body>
</html>