Initial Commit

This commit is contained in:
G. Gibson 2021-11-16 08:41:53 -08:00
commit 4bb9f2f2ea
189 changed files with 135079 additions and 2 deletions

5768
doc/GxG/ByteArray.html Normal file

File diff suppressed because it is too large Load diff

253
doc/GxG/Communications.html Normal file
View file

@ -0,0 +1,253 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Communications - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-bridge">::bridge</a>
<li ><a href="#method-c-close_bridge">::close_bridge</a>
<li ><a href="#method-c-open_bridge">::open_bridge</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Communications">
<h1 id="module-GxG::Communications" class="module">
module GxG::Communications
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section class="constants-list">
<header>
<h3>Constants</h3>
</header>
<dl>
<dt id="BRIDGE_THREAD_SAFETY">BRIDGE_THREAD_SAFETY
<dd>
</dl>
</section>
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-bridge" class="method-detail ">
<div class="method-heading">
<span class="method-name">bridge</span><span
class="method-args">(the_uuid)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="bridge-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 7</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">bridge</span>(<span class="ruby-identifier">the_uuid</span>)
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_uuid</span>)
<span class="ruby-constant">BRIDGE_THREAD_SAFETY</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">BRIDGES</span>[(<span class="ruby-identifier">the_uuid</span>)] }
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-close_bridge" class="method-detail ">
<div class="method-heading">
<span class="method-name">close_bridge</span><span
class="method-args">(the_uuid=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="close_bridge-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 21</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">close_bridge</span>(<span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_uuid</span>)
<span class="ruby-identifier">the_bridge</span> = <span class="ruby-constant">BRIDGE_THREAD_SAFETY</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">BRIDGES</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">the_uuid</span>) }
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_bridge</span>
<span class="ruby-identifier">the_bridge</span>.<span class="ruby-identifier">close</span>
<span class="ruby-identifier">timeout</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Chronic</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;30 seconds from now&quot;</span>).<span class="ruby-identifier">to_f</span>
<span class="ruby-keyword">while</span> <span class="ruby-identifier">the_bridge</span>.<span class="ruby-identifier">open?</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">sleep</span> <span class="ruby-value">1.0</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">timeout</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-open_bridge" class="method-detail ">
<div class="method-heading">
<span class="method-name">open_bridge</span><span
class="method-args">(process=nil, the_url=nil, options=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="open_bridge-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 15</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">open_bridge</span>(<span class="ruby-identifier">process</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">new_bridge</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Communications</span><span class="ruby-operator">::</span><span class="ruby-constant">Bridge</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">process</span>, <span class="ruby-identifier">the_url</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-constant">BRIDGE_THREAD_SAFETY</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">BRIDGES</span>[(<span class="ruby-identifier">new_bridge</span>.<span class="ruby-identifier">uuid</span>)] = <span class="ruby-identifier">new_bridge</span> }
<span class="ruby-identifier">new_bridge</span>.<span class="ruby-identifier">uuid</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,509 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Communications::Bridge - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-call_event">#call_event</a>
<li ><a href="#method-i-interface">#interface</a>
<li ><a href="#method-i-on">#on</a>
<li ><a href="#method-i-reply">#reply</a>
<li ><a href="#method-i-request">#request</a>
<li ><a href="#method-i-respond_to_event-3F">#respond_to_event?</a>
<li ><a href="#method-i-uuid">#uuid</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Communications::Bridge">
<h1 id="class-GxG::Communications::Bridge" class="class">
class GxG::Communications::Bridge
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(process=nil, the_url=nil, options=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 823</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">process</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-comment"># Note: process (required) is a Service or Application instance only</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">process</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Services</span><span class="ruby-operator">::</span><span class="ruby-constant">Service</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a Service or Application instance to bind to.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Ensure protocol supported</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">the_url</span> = <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_url</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URL as a String or URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">the_type</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">BRIDGES_AVAILABLE</span>[(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_sym</span>)]
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_type</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Sorry, #{the_url.scheme.to_sym.inspect} is not a supported protocol.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Variables</span>
<span class="ruby-ivar">@process</span> = <span class="ruby-identifier">process</span>
<span class="ruby-ivar">@url</span> = <span class="ruby-identifier">the_url</span>
<span class="ruby-ivar">@adapter</span> = <span class="ruby-identifier">the_type</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">self</span>, <span class="ruby-ivar">@url</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-ivar">@uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-ivar">@interface</span> = {}
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value">:interface</span>, <span class="ruby-string">&quot;Available Commands&quot;</span>) <span class="ruby-keyword">do</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">interface</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-call_event" class="method-detail ">
<div class="method-heading">
<span class="method-name">call_event</span><span
class="method-args">(operation_envelope=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="call_event-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 869</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">call_event</span>(<span class="ruby-identifier">operation_envelope</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">operation_envelope</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">the_event</span> = <span class="ruby-identifier">operation_envelope</span>.<span class="ruby-identifier">keys</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_event</span>
<span class="ruby-identifier">data</span> = <span class="ruby-identifier">operation_envelope</span>[(<span class="ruby-identifier">the_event</span>)]
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@interface</span>[(<span class="ruby-identifier">the_event</span>)]
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:result</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@interface</span>[(<span class="ruby-identifier">the_event</span>)][<span class="ruby-value">:procedure</span>].<span class="ruby-identifier">call</span>(<span class="ruby-ivar">@process</span>, <span class="ruby-keyword">self</span>, <span class="ruby-identifier">data</span>)}
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:data</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">data</span>}})
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:result</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>.<span class="ruby-identifier">to_s</span>}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:result</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-node">&quot;Command #{the_event.inspect} Not Found&quot;</span>}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-interface" class="method-detail ">
<div class="method-heading">
<span class="method-name">interface</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="interface-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 890</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">interface</span>()
<span class="ruby-identifier">result</span> = {}
<span class="ruby-ivar">@interface</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_event</span>, <span class="ruby-identifier">the_record</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">result</span>[(<span class="ruby-identifier">the_event</span>)] = <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:description</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-on" class="method-detail ">
<div class="method-heading">
<span class="method-name">on</span><span
class="method-args">(the_event, description=nil, &amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Command Interface</p>
<div class="method-source-code" id="on-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 855</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">on</span>(<span class="ruby-identifier">the_event</span>, <span class="ruby-identifier">description</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_event</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You must specify an event listener with a unique Symbol.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You must provide an event code block to execute.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">description</span>
<span class="ruby-identifier">description</span> = <span class="ruby-node">&quot;{ &#39;#{the_event.to_s}&#39;: &#39;(your_data_payload)&#39; }&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@interface</span>[(<span class="ruby-identifier">the_event</span>)] = {<span class="ruby-value">:description</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">description</span>, <span class="ruby-value">:procedure</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">block</span>}
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-reply" class="method-detail ">
<div class="method-heading">
<span class="method-name">reply</span><span
class="method-args">(the_channel_uuid=nil, reply_body=nil, address=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="reply-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 947</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reply</span>(<span class="ruby-identifier">the_channel_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">reply_body</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">address</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:result</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">false</span>}
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_channel_uuid</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">reply_body</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Events</span><span class="ruby-operator">::</span><span class="ruby-constant">Message</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">address</span>
<span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">send_message</span>(<span class="ruby-identifier">the_channel_uuid</span>, <span class="ruby-identifier">reply_body</span>, <span class="ruby-identifier">address</span>)
<span class="ruby-identifier">result</span>[<span class="ruby-value">:result</span>] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-request" class="method-detail ">
<div class="method-heading">
<span class="method-name">request</span><span
class="method-args">(the_channel_uuid=nil, request_body=nil, address=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Request/Reply <a href="../Support.html"><code>Support</code></a></p>
<div class="method-source-code" id="request-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 908</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">request</span>(<span class="ruby-identifier">the_channel_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">request_body</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">address</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_channel_uuid</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">request_body</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Events</span><span class="ruby-operator">::</span><span class="ruby-constant">Message</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">address</span>
<span class="ruby-identifier">payload</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">context</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">address</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">valid_jid?</span>
<span class="ruby-comment"># Point-to-Point Request</span>
<span class="ruby-identifier">payload</span> = <span class="ruby-identifier">new_message</span>({<span class="ruby-value">:sender</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">jid</span>().<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:body</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">request_body</span>})
<span class="ruby-identifier">payload</span>[<span class="ruby-value">:context</span>] = <span class="ruby-identifier">context</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">payload</span>
<span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">send_message</span>(<span class="ruby-identifier">the_channel_uuid</span>, <span class="ruby-identifier">payload</span>, <span class="ruby-identifier">address</span>)
<span class="ruby-identifier">the_reply_list</span> = <span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">get_messages_by_context</span>(<span class="ruby-identifier">the_channel_uuid</span>, <span class="ruby-identifier">context</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:timeout</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">timeout</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:timeout</span>].<span class="ruby-identifier">to_f</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">timeout</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">+</span> <span class="ruby-value">30.0</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">timeout</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">+</span> <span class="ruby-value">30.0</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">until</span> <span class="ruby-identifier">the_reply_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">the_reply_list</span> = <span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">get_messages_by_context</span>(<span class="ruby-identifier">the_channel_uuid</span>, <span class="ruby-identifier">context</span>)
<span class="ruby-identifier">sleep</span> <span class="ruby-value">0.5</span>
<span class="ruby-keyword">if</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">timeout</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_reply_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_reply_list</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-respond_to_event-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">respond_to_event?</span><span
class="method-args">(the_event=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="respond_to_event-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 898</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">respond_to_event?</span>(<span class="ruby-identifier">the_event</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_event</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@interface</span>[(<span class="ruby-identifier">the_event</span>)]
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-uuid" class="method-detail ">
<div class="method-heading">
<span class="method-name">uuid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="uuid-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 851</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">uuid</span>()
<span class="ruby-ivar">@uuid</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,654 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Communications::BridgeAdapter - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-abilities">::abilities</a>
<li ><a href="#method-c-limits">::limits</a>
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-c-protocol">::protocol</a>
<li ><a href="#method-c-templates">::templates</a>
<li ><a href="#method-i-channels">#channels</a>
<li ><a href="#method-i-close">#close</a>
<li ><a href="#method-i-entitiies">#entitiies</a>
<li ><a href="#method-i-entity_status">#entity_status</a>
<li ><a href="#method-i-my_id">#my_id</a>
<li ><a href="#method-i-notify">#notify</a>
<li ><a href="#method-i-open">#open</a>
<li ><a href="#method-i-open-3F">#open?</a>
<li ><a href="#method-i-uuid">#uuid</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Communications::BridgeAdapter">
<h1 id="class-GxG::Communications::BridgeAdapter" class="class">
class GxG::Communications::BridgeAdapter
</h1>
<section class="description">
<p>Adapters</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-abilities" class="method-detail ">
<div class="method-heading">
<span class="method-name">abilities</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="abilities-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 46</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">abilities</span>()
[]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-limits" class="method-detail ">
<div class="method-heading">
<span class="method-name">limits</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="limits-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 50</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">limits</span>()
{}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(the_process=nil, the_url=nil, options=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 58</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">the_process</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">the_url</span> = <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_url</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URL as a String or URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_process</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a Service or Application object to interact with.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@process</span> = <span class="ruby-identifier">the_process</span>
<span class="ruby-ivar">@url</span> = <span class="ruby-identifier">the_url</span>
<span class="ruby-ivar">@options</span> = (<span class="ruby-identifier">options</span> <span class="ruby-operator">||</span> {})
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You must provide options as a Hash.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@active</span> = <span class="ruby-keyword">false</span>
<span class="ruby-ivar">@connector</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@thread_safety</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
<span class="ruby-comment">#</span>
<span class="ruby-ivar">@uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-protocol" class="method-detail ">
<div class="method-heading">
<span class="method-name">protocol</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>WARNING: Only instantiate subclasses</p>
<div class="method-source-code" id="protocol-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 42</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">protocol</span>()
<span class="ruby-value">:unspecified</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-templates" class="method-detail ">
<div class="method-heading">
<span class="method-name">templates</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="templates-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 54</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">templates</span>()
{}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-channels" class="method-detail ">
<div class="method-heading">
<span class="method-name">channels</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Basic Channel <a href="../Support.html"><code>Support</code></a></p>
<div class="method-source-code" id="channels-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 129</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">channels</span>()
{}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-close" class="method-detail ">
<div class="method-heading">
<span class="method-name">close</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="close-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 108</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">close</span>()
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">logout</span>()
<span class="ruby-ivar">@active</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-entitiies" class="method-detail ">
<div class="method-heading">
<span class="method-name">entitiies</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Basic <a href="../Entity.html"><code>Entity</code></a> <a href="../Support.html"><code>Support</code></a></p>
<div class="method-source-code" id="entitiies-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 121</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">entitiies</span>()
[]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-entity_status" class="method-detail ">
<div class="method-heading">
<span class="method-name">entity_status</span><span
class="method-args">(the_address=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="entity_status-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 125</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">entity_status</span>(<span class="ruby-identifier">the_address</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-value">:online</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-my_id" class="method-detail ">
<div class="method-heading">
<span class="method-name">my_id</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="my_id-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 86</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">my_id</span>()
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-notify" class="method-detail ">
<div class="method-heading">
<span class="method-name">notify</span><span
class="method-args">(details=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Information Refresh</p>
<div class="method-source-code" id="notify-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 116</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">notify</span>(<span class="ruby-identifier">details</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-open" class="method-detail ">
<div class="method-heading">
<span class="method-name">open</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="open-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 101</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">open</span>()
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
<span class="ruby-ivar">@active</span> = <span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">login</span>(<span class="ruby-ivar">@url</span>, <span class="ruby-ivar">@options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@active</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-open-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">open?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="open-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 90</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">open?</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">closed?</span>
<span class="ruby-ivar">@active</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@active</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@active</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-uuid" class="method-detail ">
<div class="method-heading">
<span class="method-name">uuid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="uuid-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_communications.rb, line 82</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">uuid</span>()
<span class="ruby-ivar">@uuid</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

194
doc/GxG/Database.html Normal file
View file

@ -0,0 +1,194 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Database - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-connect">::connect</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Database">
<h1 id="module-GxG::Database" class="module">
module GxG::Database
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-connect" class="method-detail ">
<div class="method-heading">
<span class="method-name">connect</span><span
class="method-args">(the_url, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="connect-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 10</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">connect</span>(<span class="ruby-identifier">the_url</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-comment"># TODO: require :credential (access privs)</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># check for URI ipv6 [format] compatibility</span>
<span class="ruby-identifier">db_url</span> = <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">to_s</span>)
<span class="ruby-identifier">the_path</span> = <span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_path</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-identifier">the_path</span> = <span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">hostname</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;jruby&quot;</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:sqlite</span>, <span class="ruby-value">:sqlite3</span>
<span class="ruby-keyword">if</span> [<span class="ruby-string">&quot;/memory&quot;</span>, <span class="ruby-string">&quot;memory&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_path</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-string">&quot;jdbc:sqlite::memory:&quot;</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-string">&quot;jdbc:sqlite:&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">the_path</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">connect</span>({<span class="ruby-value">:adapter</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-string">&quot;jdbc:&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:host</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">hostname</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:database</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&quot;/&quot;</span>).<span class="ruby-identifier">last</span>), <span class="ruby-value">:user</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">user</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:password</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">password</span>.<span class="ruby-identifier">to_s</span>)})
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:sqlite</span>, <span class="ruby-value">:sqlite3</span>
<span class="ruby-keyword">if</span> [<span class="ruby-string">&quot;/memory&quot;</span>, <span class="ruby-string">&quot;memory&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_path</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-string">&quot;sqlite::memory:&quot;</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-string">&quot;sqlite://&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">the_path</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># auto-forward to mysql2 gem if mysql:// scheme</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;mysql&quot;</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">result</span> = <span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">connect</span>({<span class="ruby-value">:adapter</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;mysql2&quot;</span>, <span class="ruby-value">:host</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">hostname</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:database</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&quot;/&quot;</span>).<span class="ruby-identifier">last</span>), <span class="ruby-value">:user</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">user</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:password</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">password</span>.<span class="ruby-identifier">to_s</span>)})
<span class="ruby-comment">#</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">result</span> = <span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">connect</span>({<span class="ruby-value">:adapter</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:host</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">hostname</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:database</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&quot;/&quot;</span>).<span class="ruby-identifier">last</span>), <span class="ruby-value">:user</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">user</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:password</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>.<span class="ruby-identifier">password</span>.<span class="ruby-identifier">to_s</span>)})
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">result</span>, <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">db_url</span>)}))
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">the_url</span>), <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">options</span>)}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,106 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Database::ExternalAuthority - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Database::ExternalAuthority">
<h1 id="class-GxG::Database::ExternalAuthority" class="class">
class GxG::Database::ExternalAuthority
</h1>
<section class="description">
<p>External Authority (Such as LDAP)</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Database::LDAPAuthority - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ExternalAuthority.html">GxG::Database::ExternalAuthority</a>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Database::LDAPAuthority">
<h1 id="class-GxG::Database::LDAPAuthority" class="class">
class GxG::Database::LDAPAuthority
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

3067
doc/GxG/Engine.html Normal file

File diff suppressed because it is too large Load diff

97
doc/GxG/Entity.html Normal file
View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Entity - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Entity">
<h1 id="module-GxG::Entity" class="module">
module GxG::Entity
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Entity::RemoteSystem - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Entity::RemoteSystem">
<h1 id="class-GxG::Entity::RemoteSystem" class="class">
class GxG::Entity::RemoteSystem
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

517
doc/GxG/Enumerator.html Normal file
View file

@ -0,0 +1,517 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Enumerator - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link">Enumerator
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-each">#each</a>
<li ><a href="#method-i-each_with_index">#each_with_index</a>
<li ><a href="#method-i-next">#next</a>
<li ><a href="#method-i-next_values">#next_values</a>
<li ><a href="#method-i-peek">#peek</a>
<li ><a href="#method-i-peek_values">#peek_values</a>
<li ><a href="#method-i-rewind">#rewind</a>
<li ><a href="#method-i-with_index">#with_index</a>
<li ><a href="#method-i-with_object">#with_object</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Enumerator">
<h1 id="class-GxG::Enumerator" class="class">
class GxG::Enumerator
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(object=nil,method=:each,*args, &amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>this is a bit inefficient, but it gets the job done. It is essentially an each wrapper to do a cooperative pauses for non-blocking goodness. :) TODO: inspiration: what about just leveraging &#39;super&#39; after a pause operation on all overrides. (thx)</p>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 282</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">object</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">method</span>=<span class="ruby-value">:each</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-comment"># Without the call to super() it works, but will be uninitialized</span>
<span class="ruby-comment"># super(object,method,*args)</span>
<span class="ruby-ivar">@collection</span> = <span class="ruby-identifier">object</span>.<span class="ruby-identifier">stock_to_enum</span>(<span class="ruby-identifier">method</span>,<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-comment"># @collection = ::Enumerator.new(object,method,*args,&amp;block)</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-each" class="method-detail ">
<div class="method-heading">
<span class="method-name">each</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="each-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 290</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">each</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-comment"># reference = {:object =&gt; self, :method =&gt; __callee__, :fiber =&gt; Fiber.current, :thread =&gt; Thread.current}</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">EventManager</span><span class="ruby-operator">::</span><span class="ruby-identifier">manager_running?</span>
<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-each_with_index" class="method-detail method-alias">
<div class="method-heading">
<span class="method-name">each_with_index</span><span
class="method-args">(offset=0,&amp;block)</span>
</div>
<div class="method-description">
</div>
<div class="aliases">
Alias for: <a href="Enumerator.html#method-i-with_index">with_index</a>
</div>
</div>
<div id="method-i-next" class="method-detail ">
<div class="method-heading">
<span class="method-name">next</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="next-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 308</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">next</span>()
<span class="ruby-identifier ruby-title">pause</span>
<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">next</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-next_values" class="method-detail ">
<div class="method-heading">
<span class="method-name">next_values</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="next_values-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 313</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">next_values</span>()
<span class="ruby-identifier">pause</span>
<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">next_values</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-peek" class="method-detail ">
<div class="method-heading">
<span class="method-name">peek</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="peek-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 318</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">peek</span>()
<span class="ruby-identifier">pause</span>
<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">peek</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-peek_values" class="method-detail ">
<div class="method-heading">
<span class="method-name">peek_values</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="peek_values-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 323</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">peek_values</span>()
<span class="ruby-identifier">pause</span>
<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">peek_values</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-rewind" class="method-detail ">
<div class="method-heading">
<span class="method-name">rewind</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="rewind-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 328</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">rewind</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:rewind</span>)
<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">rewind</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-with_index" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_index</span><span
class="method-args">(offset=0,&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="with_index-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 335</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">with_index</span>(<span class="ruby-identifier">offset</span>=<span class="ruby-value">0</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">enumerator</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Enumerator</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">with_index</span>(<span class="ruby-identifier">offset</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">enumerator</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span>,<span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">entry</span>,<span class="ruby-identifier">index</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">enumerator</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
<div class="aliases">
Also aliased as: <a href="Enumerator.html#method-i-each_with_index">each_with_index</a>
</div>
</div>
<div id="method-i-with_object" class="method-detail ">
<div class="method-heading">
<span class="method-name">with_object</span><span
class="method-args">(an_object=nil,&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="with_object-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 347</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">with_object</span>(<span class="ruby-identifier">an_object</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">enumerator</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Enumerator</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">with_object</span>(<span class="ruby-identifier">an_object</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">enumerator</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span>,<span class="ruby-identifier">the_object</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">entry</span>,<span class="ruby-identifier">the_object</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">an_object</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">enumerator</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

152
doc/GxG/EventManager.html Normal file
View file

@ -0,0 +1,152 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::EventManager - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-manager_running-3F">::manager_running?</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::EventManager">
<h1 id="module-GxG::EventManager" class="module">
module GxG::EventManager
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-manager_running-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">manager_running?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="manager_running-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 510</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">manager_running?</span>()
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">$Dispatcher</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">$Dispatcher</span>.<span class="ruby-identifier">running?</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

97
doc/GxG/Events.html Normal file
View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Events - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Events">
<h1 id="module-GxG::Events" class="module">
module GxG::Events
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Events::LoggerDB - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Events::LoggerDB">
<h1 id="class-GxG::Events::LoggerDB" class="class">
class GxG::Events::LoggerDB
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

824
doc/GxG/Events/Message.html Normal file
View file

@ -0,0 +1,824 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Events::Message - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-5B-5D">#[]</a>
<li ><a href="#method-i-5B-5D-3D">#[]=</a>
<li ><a href="#method-i-body">#body</a>
<li ><a href="#method-i-compose_reply">#compose_reply</a>
<li ><a href="#method-i-fail">#fail</a>
<li ><a href="#method-i-get_at_path">#get_at_path</a>
<li ><a href="#method-i-id">#id</a>
<li ><a href="#method-i-inspect">#inspect</a>
<li ><a href="#method-i-keys">#keys</a>
<li ><a href="#method-i-on">#on</a>
<li ><a href="#method-i-paths_to">#paths_to</a>
<li ><a href="#method-i-process">#process</a>
<li ><a href="#method-i-process-21">#process!</a>
<li ><a href="#method-i-search">#search</a>
<li ><a href="#method-i-sender">#sender</a>
<li ><a href="#method-i-set_at_path">#set_at_path</a>
<li ><a href="#method-i-subject">#subject</a>
<li ><a href="#method-i-succeed">#succeed</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Events::Message">
<h1 id="class-GxG::Events::Message" class="class">
class GxG::Events::Message
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 7</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-comment"># MUST provide a hash with at least :sender message field set</span>
<span class="ruby-comment"># {:sender =&gt; &lt;some-object&gt;, :body =&gt; &lt;some-object&gt;, :on_success =&gt; &lt;some-proc&gt;, :on_fail =&gt; &lt;some-proc&gt; }</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you must pass a Hash to create the message&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@data</span> = {<span class="ruby-value">:sender</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:id</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>().<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:subject</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>], <span class="ruby-value">:body</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:on_success</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:on_fail</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@data</span>[<span class="ruby-value">:sender</span>]
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you must set the :sender key in the argument Hash&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-5B-5D" class="method-detail ">
<div class="method-heading">
<span class="method-name">[]</span><span
class="method-args">(the_key)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="5B-5D-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 81</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]</span>(<span class="ruby-identifier">the_key</span>)
<span class="ruby-ivar">@data</span>[(<span class="ruby-identifier">the_key</span>)]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-5B-5D-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">[]=</span><span
class="method-args">(the_key, the_value)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="5B-5D-3D-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 84</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]=</span>(<span class="ruby-identifier">the_key</span>, <span class="ruby-identifier">the_value</span>)
<span class="ruby-ivar">@data</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-identifier">the_value</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-body" class="method-detail ">
<div class="method-heading">
<span class="method-name">body</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="body-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 36</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">body</span>()
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:body</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-compose_reply" class="method-detail ">
<div class="method-heading">
<span class="method-name">compose_reply</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="compose_reply-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 40</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">compose_reply</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">reply_message</span> = <span class="ruby-identifier">new_message</span>({<span class="ruby-value">:sender</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">self</span>[<span class="ruby-value">:to</span>], <span class="ruby-value">:to</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">self</span>[<span class="ruby-value">:sender</span>], <span class="ruby-value">:context</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">self</span>[<span class="ruby-value">:context</span>], <span class="ruby-value">:subject</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">self</span>[<span class="ruby-value">:subject</span>], <span class="ruby-value">:body</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">self</span>[<span class="ruby-value">:body</span>]})
<span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">reply_message</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-fail" class="method-detail ">
<div class="method-heading">
<span class="method-name">fail</span><span
class="method-args">(input=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="fail-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 55</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">fail</span>(<span class="ruby-identifier">input</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@data</span>[<span class="ruby-value">:on_fail</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:on_fail</span>].<span class="ruby-identifier">call</span>(<span class="ruby-identifier">input</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-get_at_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">get_at_path</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="get_at_path-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 99</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_at_path</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">get_at_path</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-id" class="method-detail ">
<div class="method-heading">
<span class="method-name">id</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="id-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 24</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">id</span>()
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:id</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-inspect" class="method-detail ">
<div class="method-heading">
<span class="method-name">inspect</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="inspect-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 20</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>()
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">inspect</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-keys" class="method-detail ">
<div class="method-heading">
<span class="method-name">keys</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Hash-like support methods:</p>
<div class="method-source-code" id="keys-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 78</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">keys</span>()
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">keys</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-on" class="method-detail ">
<div class="method-heading">
<span class="method-name">on</span><span
class="method-args">(event_type=nil,&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="on-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 61</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">on</span>(<span class="ruby-identifier">event_type</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> [<span class="ruby-value">:success</span>, <span class="ruby-value">:fail</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">event_type</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-keyword">case</span> <span class="ruby-identifier">event_type</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:success</span>
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:on_success</span>] = <span class="ruby-identifier">block</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:fail</span>
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:on_fail</span>] = <span class="ruby-identifier">block</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a callable block.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Unknown event type: #{event_type}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-paths_to" class="method-detail ">
<div class="method-heading">
<span class="method-name">paths_to</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="paths_to-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 96</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">paths_to</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">paths_to</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process" class="method-detail ">
<div class="method-heading">
<span class="method-name">process</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 87</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">process</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process-21" class="method-detail ">
<div class="method-heading">
<span class="method-name">process!</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process-21-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 90</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process!</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">process!</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-search" class="method-detail ">
<div class="method-heading">
<span class="method-name">search</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="search-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 93</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">search</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">search</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-sender" class="method-detail ">
<div class="method-heading">
<span class="method-name">sender</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="sender-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 28</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sender</span>()
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:sender</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-set_at_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">set_at_path</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="set_at_path-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 102</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">set_at_path</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-ivar">@data</span>.<span class="ruby-identifier">set_at_path</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-subject" class="method-detail ">
<div class="method-heading">
<span class="method-name">subject</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="subject-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 32</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">subject</span>()
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:subject</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-succeed" class="method-detail ">
<div class="method-heading">
<span class="method-name">succeed</span><span
class="method-args">(input=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="succeed-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_events.rb, line 49</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">succeed</span>(<span class="ruby-identifier">input</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@data</span>[<span class="ruby-value">:on_success</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@data</span>[<span class="ruby-value">:on_success</span>].<span class="ruby-identifier">call</span>(<span class="ruby-identifier">input</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

97
doc/GxG/IO.html Normal file
View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::IO - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::IO">
<h1 id="module-GxG::IO" class="module">
module GxG::IO
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

171
doc/GxG/IO/Duplex.html Normal file
View file

@ -0,0 +1,171 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::IO::Duplex - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="IO.html">GxG::IO::IO</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li class="calls-super" ><a href="#method-c-new">::new</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::IO::Duplex">
<h1 id="class-GxG::IO::Duplex" class="class">
class GxG::IO::Duplex
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-calls-super">
Calls superclass method
<a href="IO.html#method-c-new"><code>GxG::IO::IO::new</code></a>
</div>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 2541</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_parameters</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:read</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-value">:read</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:write</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-value">:write</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:readwrite</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:readwrite</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">super</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

347
doc/GxG/IO/File.html Normal file
View file

@ -0,0 +1,347 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::IO::File - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="IO.html">GxG::IO::IO</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li class="calls-super" ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-to_path">#to_path</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::IO::File">
<h1 id="class-GxG::IO::File" class="class">
class GxG::IO::File
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>As of Ruby 1.9.2: if a file is not set to :binary mode, it defaults to :text mode. See: <a href="http://www.tutorialspoint.com/ruby/ruby_input_output.htm">www.tutorialspoint.com/ruby/ruby_input_output.htm</a> &lt;file&gt;.stat table: (mode example : 0100664)</p>
<pre>0700 rwx mask for owner
0400 r for owner
0200 w for owner
0100 x for owner
0070 rwx mask for group
0040 r for group
0020 w for group
0010 x for group
0007 rwx mask for other
0004 r for other
0002 w for other
0001 x for other
4000 Set user ID on execution
2000 Set group ID on execution
1000 Save swapped text, even after use</pre>
<div class="method-calls-super">
Calls superclass method
<a href="IO.html#method-c-new"><code>GxG::IO::IO::new</code></a>
</div>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 2577</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
<span class="ruby-identifier">the_path</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
<span class="ruby-identifier">the_mode</span> = (<span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">||</span> <span class="ruby-string">&quot;r&quot;</span>)
<span class="ruby-identifier">the_permissions</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>]
<span class="ruby-identifier">the_options</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">3</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;filename or path must be passed as a String&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_options</span>
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_parameters</span>(<span class="ruby-value">0</span>,<span class="ruby-identifier">the_mode</span>,<span class="ruby-identifier">the_options</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_parameters</span>(<span class="ruby-value">0</span>,<span class="ruby-identifier">the_mode</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">mode_flags</span> = {<span class="ruby-value">:binary</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">BINARY</span>, <span class="ruby-value">:text</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">TEXT</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">RDONLY</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">WRONLY</span>, <span class="ruby-value">:readwrite</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">RDWR</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">CREAT</span>, <span class="ruby-value">:overwrite</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">TRUNC</span>, <span class="ruby-value">:append</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">APPEND</span>}
<span class="ruby-identifier">modes</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_mode_set</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">:file</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:text</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:binary</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-identifier">the_mode_used</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">mode_string</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = <span class="ruby-value">0</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:binary</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:read</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:write</span>)
<span class="ruby-identifier">mode_string</span> = <span class="ruby-string">&quot;binary_readwrite&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:binary</span>] <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:readwrite</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">mode_string</span> = <span class="ruby-string">&quot;binary_read&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:binary</span>] <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:read</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:write</span>)
<span class="ruby-identifier">mode_string</span> = <span class="ruby-string">&quot;binary_write&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:binary</span>] <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:write</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:read</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:write</span>)
<span class="ruby-identifier">mode_string</span> = <span class="ruby-string">&quot;text_readwrite&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:text</span>] <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:readwrite</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">mode_string</span> = <span class="ruby-string">&quot;text_read&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:text</span>] <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:read</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:write</span>)
<span class="ruby-identifier">mode_string</span> = <span class="ruby-string">&quot;text_write&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:text</span>] <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:write</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:overwrite</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:truncate</span>) )
<span class="ruby-identifier">mode_string</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;_overwrite&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:overwrite</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:append</span>)
<span class="ruby-identifier">mode_string</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;_append&quot;</span>
<span class="ruby-identifier">mode_numeric</span> = (<span class="ruby-identifier">mode_numeric</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">mode_flags</span>[<span class="ruby-value">:append</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># [:read, :write, :readwrite, :overwrite, :truncate:, :append, :text, :binary]</span>
<span class="ruby-identifier">modes</span>.<span class="ruby-identifier">to_enum</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">mode_entry</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">mode_entry</span>[<span class="ruby-value">:synonyms</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">mode_string</span>.<span class="ruby-identifier">to_sym</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">mode_entry</span>[<span class="ruby-value">:synonyms</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">mode_numeric</span>))
<span class="ruby-identifier">the_mode_used</span> = <span class="ruby-identifier">mode_entry</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_mode_used</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-identifier">the_mode</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:external_encoding</span>]
<span class="ruby-identifier">options</span>[<span class="ruby-value">:external_encoding</span>] = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:external_encoding</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:internal_encoding</span>]
<span class="ruby-comment">#If the value is nil no conversion occurs.</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:internal_encoding</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:external_encoding</span>]
<span class="ruby-identifier">options</span>[<span class="ruby-value">:internal_encoding</span>] = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:internal_encoding</span>] = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:internal_encoding</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:autoclose</span>]
<span class="ruby-identifier">options</span>[<span class="ruby-value">:autoclose</span>] = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:autoclose</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">the_path</span>)
<span class="ruby-identifier">the_mode</span> = <span class="ruby-identifier">the_mode_used</span>[<span class="ruby-value">:if_exist</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_mode_used</span>[<span class="ruby-value">:if_create</span>]
<span class="ruby-identifier">the_mode</span> = <span class="ruby-identifier">the_mode_used</span>[<span class="ruby-value">:if_create</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you cannot operate upon a non-existent file in read-only mode&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_mode</span>
<span class="ruby-identifier">file_descriptor</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">sysopen</span>(<span class="ruby-identifier">the_path</span>,<span class="ruby-identifier">the_mode</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">file_descriptor</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">file_descriptor</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">the_path</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you cannot operate upon a directory as if it were a file&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_permissions</span>
<span class="ruby-keyword">super</span>(<span class="ruby-identifier">file_descriptor</span>, <span class="ruby-identifier">the_mode</span>, <span class="ruby-identifier">the_permissions</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">super</span>(<span class="ruby-identifier">file_descriptor</span>, <span class="ruby-identifier">the_mode</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">&quot;unable to create a valid file descriptor with: #{args.inspect}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">modes_list</span> = []
<span class="ruby-identifier">modes</span>.<span class="ruby-identifier">to_enum</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">modes_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:synonyms</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;#{params[:mode].inspect} is an invalid :mode, use one of the following: #{modes_list.inspect}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-ivar">@path</span> = <span class="ruby-identifier">the_path</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-to_path" class="method-detail ">
<div class="method-heading">
<span class="method-name">to_path</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="to_path-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 2709</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_path</span>()
<span class="ruby-ivar">@path</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

1228
doc/GxG/IO/IO.html Normal file

File diff suppressed because it is too large Load diff

168
doc/GxG/IO/Input.html Normal file
View file

@ -0,0 +1,168 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::IO::Input - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="IO.html">GxG::IO::IO</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li class="calls-super" ><a href="#method-c-new">::new</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::IO::Input">
<h1 id="class-GxG::IO::Input" class="class">
class GxG::IO::Input
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>ensure mode is read-only, else raise Exception</p>
<div class="method-calls-super">
Calls superclass method
<a href="IO.html#method-c-new"><code>GxG::IO::IO::new</code></a>
</div>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 2509</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_parameters</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:write</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-value">:write</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:readwrite</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-value">:readwrite</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">super</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

171
doc/GxG/IO/Output.html Normal file
View file

@ -0,0 +1,171 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::IO::Output - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="IO.html">GxG::IO::IO</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li class="calls-super" ><a href="#method-c-new">::new</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::IO::Output">
<h1 id="class-GxG::IO::Output" class="class">
class GxG::IO::Output
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>ensure mode is write-only, else raise Exception</p>
<div class="method-calls-super">
Calls superclass method
<a href="IO.html#method-c-new"><code>GxG::IO::IO::new</code></a>
</div>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 2524</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_parameters</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:read</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-value">:read</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:readwrite</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-value">:readwrite</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:write</span>)
<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">super</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

1284
doc/GxG/IO/StringIO.html Normal file

File diff suppressed because it is too large Load diff

386
doc/GxG/Networking.html Normal file
View file

@ -0,0 +1,386 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Networking - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-get_handler_class">::get_handler_class</a>
<li ><a href="#method-c-register_handler_class">::register_handler_class</a>
<li ><a href="#method-c-registered_protocols">::registered_protocols</a>
<li ><a href="#method-c-unregister_handler_class">::unregister_handler_class</a>
<li ><a href="#method-c-wget">::wget</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Networking">
<h1 id="module-GxG::Networking" class="module">
module GxG::Networking
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section class="constants-list">
<header>
<h3>Constants</h3>
</header>
<dl>
<dt id="REGISTERED">REGISTERED
<dd>
</dl>
</section>
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-get_handler_class" class="method-detail ">
<div class="method-heading">
<span class="method-name">get_handler_class</span><span
class="method-args">(the_url=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="get_handler_class-source">
<pre><span class="ruby-comment"># File lib/gxg/net_tools.rb, line 11</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">get_handler_class</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">@@protocol_thread_safety</span>.<span class="ruby-identifier">synchronize</span> {
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">REGISTERED</span>[<span class="ruby-value">:protocols</span>].<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_scheme</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">the_scheme</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-identifier">result</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">REGISTERED</span>[<span class="ruby-value">:protocols</span>][(<span class="ruby-identifier">the_scheme</span>)]
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
}
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-register_handler_class" class="method-detail ">
<div class="method-heading">
<span class="method-name">register_handler_class</span><span
class="method-args">(the_scheme=nil, the_class=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="register_handler_class-source">
<pre><span class="ruby-comment"># File lib/gxg/net_tools.rb, line 32</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">register_handler_class</span>(<span class="ruby-identifier">the_scheme</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_class</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_class</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Class</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid class.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_scheme</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI scheme (as a String or Symbol).&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">@@protocol_thread_safety</span>.<span class="ruby-identifier">synchronize</span> {
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">REGISTERED</span>[<span class="ruby-value">:protocols</span>][(<span class="ruby-identifier">the_scheme</span>.<span class="ruby-identifier">to_sym</span>)] = <span class="ruby-identifier">the_class</span>
}
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:scheme</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_scheme</span>, <span class="ruby-value">:class</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_class</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-registered_protocols" class="method-detail ">
<div class="method-heading">
<span class="method-name">registered_protocols</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="registered_protocols-source">
<pre><span class="ruby-comment"># File lib/gxg/net_tools.rb, line 67</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">registered_protocols</span>()
<span class="ruby-identifier">@@protocol_thread_safety</span>.<span class="ruby-identifier">synchronize</span> {
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">REGISTERED</span>[<span class="ruby-value">:protocols</span>].<span class="ruby-identifier">clone</span>
}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-unregister_handler_class" class="method-detail ">
<div class="method-heading">
<span class="method-name">unregister_handler_class</span><span
class="method-args">(the_scheme=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="unregister_handler_class-source">
<pre><span class="ruby-comment"># File lib/gxg/net_tools.rb, line 51</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">unregister_handler_class</span>(<span class="ruby-identifier">the_scheme</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_scheme</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI scheme (as a String or Symbol).&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">@@protocol_thread_safety</span>.<span class="ruby-identifier">synchronize</span> {
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">REGISTERED</span>[<span class="ruby-value">:protocols</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">the_scheme</span>.<span class="ruby-identifier">to_sym</span>)
}
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:scheme</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_scheme</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-wget" class="method-detail ">
<div class="method-heading">
<span class="method-name">wget</span><span
class="method-args">(the_url=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="wget-source">
<pre><span class="ruby-comment"># File lib/gxg/net_tools.rb, line 73</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">wget</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">the_url</span> = <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_url</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>]
<span class="ruby-identifier">client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpsClientWithPem</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;https&quot;</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>]
<span class="ruby-identifier">client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpsClient</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpClient</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">client</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">the_url</span>, <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:raw_response</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>}))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">File</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:raw_response</span>]
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Failed to get a response.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST specify a valid URI&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,848 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::HttpClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-clear_cache">#clear_cache</a>
<li ><a href="#method-i-cookies">#cookies</a>
<li ><a href="#method-i-delete">#delete</a>
<li ><a href="#method-i-get">#get</a>
<li ><a href="#method-i-post">#post</a>
<li ><a href="#method-i-put">#put</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::HttpClient">
<h1 id="class-GxG::Networking::HttpClient" class="class">
class GxG::Networking::HttpClient
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5228</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>()
<span class="ruby-ivar">@cookie</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-clear_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_cache</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="clear_cache-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5233</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_cache</span>()
<span class="ruby-ivar">@cookie</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-cookies" class="method-detail ">
<div class="method-heading">
<span class="method-name">cookies</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="cookies-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5238</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cookies</span>()
<span class="ruby-ivar">@cookie</span>.<span class="ruby-identifier">clone</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-delete" class="method-detail ">
<div class="method-heading">
<span class="method-name">delete</span><span
class="method-args">(the_url=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="delete-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5635</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">delete</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;https&quot;</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>, <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPS</span>)
<span class="ruby-identifier">client_parameters</span> = [(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">port</span>)]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">host</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">port</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">server</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">start</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">client_parameters</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">pem_file</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">use_ssl</span> = <span class="ruby-keyword">true</span>
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">cert</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>)
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">key</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>])
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Delete</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Delete</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-comment"># basic auth</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">basic_auth</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>, <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">request</span>)
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:follow_redirects</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">300</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">400</span>
<span class="ruby-comment"># Process Redirect</span>
<span class="ruby-identifier">redirect_count</span> = <span class="ruby-value">1</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">while</span> <span class="ruby-identifier">location</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Delete</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Delete</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">redirect_response</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">redirect_request</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">redirect_response</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-value">200</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">9</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Circular redirect chain suspected (10 or more redirects)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">&quot;Error occured: Code #{response.code}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide a valid HTTP URI&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-get" class="method-detail ">
<div class="method-heading">
<span class="method-name">get</span><span
class="method-args">(the_url=nil, options={:follow_redirects =&gt; true})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="get-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5242</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={<span class="ruby-value">:follow_redirects</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>, <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPS</span>)
<span class="ruby-identifier">the_url</span> = <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:query</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">query</span> = <span class="ruby-operator">::</span><span class="ruby-constant">URI</span>.<span class="ruby-identifier">encode_www_form</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:query</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:follow_redirects</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">false</span>
<span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:follow_redirects</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;https&quot;</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># sets following values by its accessor.</span>
<span class="ruby-comment"># The keys are ca_file, ca_path, cert, cert_store, ciphers,</span>
<span class="ruby-comment"># close_on_empty_response, key, open_timeout, read_timeout, ssl_timeout,</span>
<span class="ruby-comment"># ssl_version, use_ssl, verify_callback, verify_depth and verify_mode.</span>
<span class="ruby-comment"># If you set :use_ssl as true, you can use https and default value of</span>
<span class="ruby-comment"># verify_mode is set as OpenSSL::SSL::VERIFY_PEER.</span>
<span class="ruby-identifier">client_parameters</span> = [(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">port</span>)]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">host</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">port</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">client</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">start</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">client_parameters</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">pem_file</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">client</span>.<span class="ruby-identifier">use_ssl</span> = <span class="ruby-keyword">true</span>
<span class="ruby-identifier">client</span>.<span class="ruby-identifier">cert</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>)
<span class="ruby-identifier">client</span>.<span class="ruby-identifier">key</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>])
<span class="ruby-identifier">client</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:header</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:header</span>]))
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:header</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:header</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-comment"># basic auth</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">basic_auth</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>, <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">client</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">request</span>)
<span class="ruby-ivar">@cookie</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">response</span>[<span class="ruby-string">&#39;set-cookie&#39;</span>]
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:follow_redirects</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">300</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">400</span>
<span class="ruby-comment"># Process Redirect</span>
<span class="ruby-identifier">redirect_count</span> = <span class="ruby-value">1</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">while</span> <span class="ruby-identifier">location</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">redirect_response</span> = <span class="ruby-identifier">client</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">redirect_request</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">redirect_response</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-value">200</span>
<span class="ruby-ivar">@cookie</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">response</span>[<span class="ruby-string">&#39;set-cookie&#39;</span>]
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-ivar">@cookie</span> = <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">response</span>[<span class="ruby-string">&#39;set-cookie&#39;</span>]
<span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">9</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Circular redirect chain suspected (10 or more redirects)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_as</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:save_as</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-string">&#39;w&#39;</span>, <span class="ruby-value">0644</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_io</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">response</span>.<span class="ruby-identifier">read_body</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data_chunk</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">the_io</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">data_chunk</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Return open file handle r/w to saved file.</span>
<span class="ruby-identifier">result</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">the_io</span>.<span class="ruby-identifier">path</span>, <span class="ruby-string">&quot;w+&quot;</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:stream_to</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>)
<span class="ruby-identifier">the_accumulator</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:stream_to</span>]
<span class="ruby-identifier">buffer</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">response</span>.<span class="ruby-identifier">read_body</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data_chunk</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">chunk_ranges</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span>.<span class="ruby-identifier">apportioned_ranges</span>(<span class="ruby-identifier">data_chunk</span>.<span class="ruby-identifier">bytesize</span>,<span class="ruby-value">65536</span>)
<span class="ruby-identifier">chunk_ranges</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_range</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">data_chunk</span>[(<span class="ruby-identifier">the_range</span>)].<span class="ruby-identifier">bytesize</span>) <span class="ruby-operator">&lt;=</span> <span class="ruby-value">65536</span>
<span class="ruby-identifier">buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">data_chunk</span>[(<span class="ruby-identifier">the_range</span>)]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">65536</span>
<span class="ruby-identifier">the_accumulator</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">clone</span>
<span class="ruby-identifier">the_accumulator</span>[(<span class="ruby-identifier">the_accumulator</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)].<span class="ruby-identifier">unload</span>
<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">the_size</span> = <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span>
<span class="ruby-identifier">buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">data_chunk</span>[(<span class="ruby-identifier">the_range</span>)][(<span class="ruby-value">0</span><span class="ruby-operator">..</span>((<span class="ruby-value">65536</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">the_size</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>))]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">65536</span>
<span class="ruby-identifier">the_accumulator</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">clone</span>
<span class="ruby-identifier">the_accumulator</span>[(<span class="ruby-identifier">the_accumulator</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)].<span class="ruby-identifier">unload</span>
<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">clear</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">buffer</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">data_chunk</span>[(<span class="ruby-identifier">the_range</span>)][((<span class="ruby-value">65536</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">the_size</span>)<span class="ruby-operator">..</span><span class="ruby-value">-1</span>)]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">the_accumulator</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">clone</span>
<span class="ruby-identifier">the_accumulator</span>[(<span class="ruby-identifier">the_accumulator</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)].<span class="ruby-identifier">unload</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_as</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">nil</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:stream_to</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">nil</span>
<span class="ruby-comment"># Process response</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:raw_response</span>]
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:to_ruby</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">response_hash</span> = {}
<span class="ruby-identifier">response_hash</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">to_hash</span>.<span class="ruby-identifier">process</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span>, <span class="ruby-identifier">the_key</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_key</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
<span class="ruby-identifier">entry</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">returns</span>({<span class="ruby-value">:new_selector</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">the_key</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:result</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">entry</span>)})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response_hash</span>[<span class="ruby-value">:header</span>] = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">body_text</span> = (<span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">body_text</span>.<span class="ruby-identifier">xml?</span>()
<span class="ruby-identifier">response_hash</span>[<span class="ruby-value">:body</span>] = <span class="ruby-identifier">body_text</span>.<span class="ruby-identifier">from_xml</span>()
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">body_text</span>.<span class="ruby-identifier">html?</span>()
<span class="ruby-identifier">response_hash</span>[<span class="ruby-value">:body</span>] = <span class="ruby-identifier">body_text</span>.<span class="ruby-identifier">from_html</span>()
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Failed to retrieve either XML or HTML as data.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response_hash</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># Default output:</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_as</span>]
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">&quot;Error occured: Code #{response.code}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide a valid HTTP URI&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-post" class="method-detail ">
<div class="method-heading">
<span class="method-name">post</span><span
class="method-args">(the_url=nil, form_data=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="post-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5534</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">post</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">form_data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;https&quot;</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>, <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPS</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">form_data</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide valid form data (in the form of a Hash)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">client_parameters</span> = [(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">port</span>)]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">host</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">port</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">server</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">start</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">client_parameters</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">pem_file</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">use_ssl</span> = <span class="ruby-keyword">true</span>
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">cert</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>)
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">key</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>])
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Post</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Post</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-comment"># basic auth</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">basic_auth</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>, <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">set_form_data</span>(<span class="ruby-identifier">form_data</span>)
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">request</span>)
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:follow_redirects</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">300</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">400</span>
<span class="ruby-comment"># Process Redirect</span>
<span class="ruby-identifier">redirect_count</span> = <span class="ruby-value">1</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">while</span> <span class="ruby-identifier">location</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Post</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Post</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">redirect_request</span>.<span class="ruby-identifier">set_form_data</span>(<span class="ruby-identifier">form_data</span>)
<span class="ruby-identifier">redirect_response</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">redirect_request</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">redirect_response</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-value">200</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">9</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Circular redirect chain suspected (10 or more redirects)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">&quot;Error occured: Code #{response.code}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide a valid HTTP URI&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:form_data</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">form_data</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-put" class="method-detail ">
<div class="method-heading">
<span class="method-name">put</span><span
class="method-args">(the_url=nil, data=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="put-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5433</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">put</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-comment">#</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;https&quot;</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>, <span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPS</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide valid PUT data (in the form of a String: &#39;parameter = value&#39;)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">client_parameters</span> = [(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">port</span>)]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">host</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">port</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">user</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">password</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">server</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">start</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">client_parameters</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">pem_file</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">use_ssl</span> = <span class="ruby-keyword">true</span>
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">cert</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>)
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">key</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_file</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>])
<span class="ruby-identifier">server</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Put</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>,<span class="ruby-identifier">data</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Put</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">request_uri</span>,<span class="ruby-identifier">data</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-comment"># basic auth</span>
<span class="ruby-identifier">request</span>.<span class="ruby-identifier">basic_auth</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>, <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">request</span>)
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:follow_redirects</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">300</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">response_code</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">400</span>
<span class="ruby-comment"># Process Redirect</span>
<span class="ruby-identifier">redirect_count</span> = <span class="ruby-value">1</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">while</span> <span class="ruby-identifier">location</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookie</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Put</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>, {<span class="ruby-string">&#39;Cookie&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@cookie</span>})
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">redirect_request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Put</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">location</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">redirect_response</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">redirect_request</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">redirect_response</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-value">200</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">redirect_count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">9</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Circular redirect chain suspected (10 or more redirects)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response_code</span> = <span class="ruby-identifier">redirect_response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span>
<span class="ruby-identifier">location</span> = <span class="ruby-identifier">redirect_response</span>[<span class="ruby-string">&#39;location&#39;</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">&quot;Error occured: Code #{response.code}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide a valid HTTP URI&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:form_data</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">data</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,374 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::HttpsClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-clear_cache">#clear_cache</a>
<li ><a href="#method-i-cookies">#cookies</a>
<li ><a href="#method-i-delete">#delete</a>
<li ><a href="#method-i-get">#get</a>
<li ><a href="#method-i-post">#post</a>
<li ><a href="#method-i-put">#put</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::HttpsClient">
<h1 id="class-GxG::Networking::HttpsClient" class="class">
class GxG::Networking::HttpsClient
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5733</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>()
<span class="ruby-ivar">@client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpClient</span>.<span class="ruby-identifier">new</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-clear_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_cache</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="clear_cache-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5742</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_cache</span>()
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">clear_cache</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-cookies" class="method-detail ">
<div class="method-heading">
<span class="method-name">cookies</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="cookies-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5738</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cookies</span>()
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">cookies</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-delete" class="method-detail ">
<div class="method-heading">
<span class="method-name">delete</span><span
class="method-args">(the_url=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="delete-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5755</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">delete</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">post</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-get" class="method-detail ">
<div class="method-heading">
<span class="method-name">get</span><span
class="method-args">(the_url=nil, options={:follow_redirects =&gt; true, :use_ssl =&gt; true})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="get-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5746</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={<span class="ruby-value">:follow_redirects</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:use_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-post" class="method-detail ">
<div class="method-heading">
<span class="method-name">post</span><span
class="method-args">(the_url=nil, form_data=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="post-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5752</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">post</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">form_data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">post</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">form_data</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-put" class="method-detail ">
<div class="method-heading">
<span class="method-name">put</span><span
class="method-args">(the_url=nil, data=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="put-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5749</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">put</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">put</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">data</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,378 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::HttpsClientWithPem - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-clear_cache">#clear_cache</a>
<li ><a href="#method-i-cookies">#cookies</a>
<li ><a href="#method-i-delete">#delete</a>
<li ><a href="#method-i-get">#get</a>
<li ><a href="#method-i-post">#post</a>
<li ><a href="#method-i-put">#put</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::HttpsClientWithPem">
<h1 id="class-GxG::Networking::HttpsClientWithPem" class="class">
class GxG::Networking::HttpsClientWithPem
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(pem_file_path=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5761</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">pem_file_path</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">pem_file_path</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a path to your PEM file (as a String).&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@pem_path</span> = <span class="ruby-identifier">pem_file_path</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpClient</span>.<span class="ruby-identifier">new</span>()
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-clear_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_cache</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="clear_cache-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5774</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_cache</span>()
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">clear_cache</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-cookies" class="method-detail ">
<div class="method-heading">
<span class="method-name">cookies</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="cookies-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5770</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">cookies</span>()
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">cookies</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-delete" class="method-detail ">
<div class="method-heading">
<span class="method-name">delete</span><span
class="method-args">(the_url=nil, options={:follow_symlinks =&gt; true})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="delete-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5787</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">delete</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={<span class="ruby-value">:follow_symlinks</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:use_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:pem_file</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@pem_path</span>}))
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-get" class="method-detail ">
<div class="method-heading">
<span class="method-name">get</span><span
class="method-args">(the_url=nil, options={:follow_symlinks =&gt; true})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="get-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5778</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={<span class="ruby-value">:follow_symlinks</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:use_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:pem_file</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@pem_path</span>}))
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-post" class="method-detail ">
<div class="method-heading">
<span class="method-name">post</span><span
class="method-args">(the_url=nil, form_data=nil, options={:follow_symlinks =&gt; true})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="post-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5784</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">post</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">form_data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={<span class="ruby-value">:follow_symlinks</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">post</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">form_data</span>,<span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:use_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:pem_file</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@pem_path</span>}))
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-put" class="method-detail ">
<div class="method-heading">
<span class="method-name">put</span><span
class="method-args">(the_url=nil, data=nil, options={:follow_symlinks =&gt; true})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="put-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 5781</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">put</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={<span class="ruby-value">:follow_symlinks</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">put</span>(<span class="ruby-identifier">the_url</span>,<span class="ruby-identifier">data</span>,<span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:use_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:pem_file</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@pem_path</span>}))
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,448 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::Pop3Client - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-login">#login</a>
<li ><a href="#method-i-logout">#logout</a>
<li ><a href="#method-i-message_count">#message_count</a>
<li ><a href="#method-i-retrieve_messages">#retrieve_messages</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::Pop3Client">
<h1 id="class-GxG::Networking::Pop3Client" class="class">
class GxG::Networking::Pop3Client
</h1>
<section class="description">
<p>POP3 Classes:</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(host=nil,port=nil,options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1626</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">host</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">port</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">options</span>={})
<span class="ruby-keyword">if</span> <span class="ruby-identifier">port</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = <span class="ruby-identifier">port</span>
<span class="ruby-identifier">port</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@user</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@password</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@host</span> = <span class="ruby-identifier">host</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@host</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a HOST, like this: &lt;host&gt;,(&lt;port&gt;),(&lt;options&gt;)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@port</span> = (<span class="ruby-identifier">port</span> <span class="ruby-operator">||</span> <span class="ruby-value">995</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@port</span> = (<span class="ruby-identifier">port</span> <span class="ruby-operator">||</span> <span class="ruby-value">110</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">POP3</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@host</span>, <span class="ruby-ivar">@port</span>, (<span class="ruby-identifier">options</span>[<span class="ruby-value">:use_apop</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">false</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:ignore_ssl_errors</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">enable_ssl</span>(<span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_NONE</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">enable_ssl</span>(<span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-login" class="method-detail ">
<div class="method-heading">
<span class="method-name">login</span><span
class="method-args">(user_id=nil,password=nil,options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="login-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1655</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">login</span>(<span class="ruby-identifier">user_id</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">password</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">options</span>={})
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-ivar">@user</span> = <span class="ruby-identifier">user_id</span>
<span class="ruby-ivar">@password</span> = <span class="ruby-identifier">password</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@password</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a PASSWORD, like this: &lt;user_id&gt;,&lt;password&gt;,(&lt;options&gt;)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">start</span>(<span class="ruby-ivar">@user</span>, <span class="ruby-ivar">@password</span>)
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-logout" class="method-detail ">
<div class="method-heading">
<span class="method-name">logout</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="logout-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1670</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">logout</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">finish</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-message_count" class="method-detail ">
<div class="method-heading">
<span class="method-name">message_count</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="message_count-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1678</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">message_count</span>()
<span class="ruby-comment"># Return the number of emails on the server.</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">n_mails</span>()
<span class="ruby-keyword">else</span>
<span class="ruby-value">0</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-retrieve_messages" class="method-detail ">
<div class="method-heading">
<span class="method-name">retrieve_messages</span><span
class="method-args">(options={:read_only=&gt;false},&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="retrieve_messages-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1687</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">retrieve_messages</span>(<span class="ruby-identifier">options</span>={<span class="ruby-value">:read_only</span><span class="ruby-operator">=&gt;</span><span class="ruby-keyword">false</span>},<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">result</span> = []
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">started?</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">active?</span>
<span class="ruby-identifier">parse_message</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_raw_message</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">header</span> = {}
<span class="ruby-identifier">body</span> = []
<span class="ruby-identifier">attachments</span> = []
<span class="ruby-identifier">parser</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Mail</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_raw_message</span>.<span class="ruby-identifier">pop</span>)
<span class="ruby-identifier">parser</span>.<span class="ruby-identifier">header_fields</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">field</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">the_key</span> = <span class="ruby-identifier">field</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-identifier">the_data</span> = <span class="ruby-identifier">field</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)
<span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-string">&quot; &quot;</span>,<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-string">&quot; &quot;</span>,<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-string">&quot; &quot;</span>,<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-string">&quot;\r\n&quot;</span>,<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">header</span>[(<span class="ruby-identifier">the_key</span>)]
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">header</span>[(<span class="ruby-identifier">the_key</span>)].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-identifier">header</span>[(<span class="ruby-identifier">the_key</span>)] = [(<span class="ruby-identifier">header</span>[(<span class="ruby-identifier">the_key</span>)])]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">header</span>[(<span class="ruby-identifier">the_key</span>)] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_data</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">header</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-identifier">the_data</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">multipart?</span>
<span class="ruby-identifier">link_db</span> = []
<span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:preamble</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">preamble</span>}
<span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parts</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">part</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">multipart?</span>
<span class="ruby-identifier">link_db</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">part</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">attachment?</span>
<span class="ruby-identifier">attachments</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">mime_type</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">content_type_parameters</span>}, <span class="ruby-value">:filename</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">filename</span>, <span class="ruby-value">:path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">part</span>.<span class="ruby-identifier">decoded</span>)}
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">mime_type</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">content_type_parameters</span>}, <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">while</span> <span class="ruby-identifier">link_db</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-keyword">do</span>
<span class="ruby-identifier">part</span> = <span class="ruby-identifier">link_db</span>.<span class="ruby-identifier">shift</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">multipart?</span>
<span class="ruby-identifier">part</span>.<span class="ruby-identifier">parts</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_sub_part</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">link_db</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_sub_part</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">attachment?</span>
<span class="ruby-identifier">attachments</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">mime_type</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">content_type_parameters</span>}, <span class="ruby-value">:filename</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">filename</span>, <span class="ruby-value">:path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">part</span>.<span class="ruby-identifier">decoded</span>)}
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">mime_type</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">content_type_parameters</span>}, <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:epilogue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">epilogue</span>}
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:preamble</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">preamble</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)}
<span class="ruby-identifier">mime_type</span> = <span class="ruby-string">&quot;text/plain&quot;</span>
<span class="ruby-identifier">parameters</span> = {<span class="ruby-string">&quot;charset&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;UTF-8&quot;</span>}
<span class="ruby-identifier">body_text</span> = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">body_text</span>.<span class="ruby-identifier">xml?</span>
<span class="ruby-identifier">mime_type</span> = <span class="ruby-string">&quot;text/xml&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">body_text</span>.<span class="ruby-identifier">html?</span>
<span class="ruby-identifier">mime_type</span> = <span class="ruby-string">&quot;text/html&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">mime_type</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">parameters</span>}, <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">body_text</span>}
<span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> {<span class="ruby-value">:epilogue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">epilogueto_s</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)}
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">gxg_message</span> = <span class="ruby-identifier">new_message</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:sender</span>] = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">from</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:id</span>] = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">message_id</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:to</span>] = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">to</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:cc</span>] = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">cc</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:bcc</span>] = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">bcc</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:subject</span>] = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">subject</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:date</span>] = <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">date</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:header</span>] = <span class="ruby-identifier">header</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:body</span>] = <span class="ruby-identifier">body</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:attachments</span>] = <span class="ruby-identifier">attachments</span>
<span class="ruby-identifier">gxg_message</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">each_mail</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">raw_message</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">parse_message</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">raw_message</span>))
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">parse_message</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">raw_message</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:read_only</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">raw_message</span>.<span class="ruby-identifier">delete</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,638 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::RestClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-clear_system_proxy">::clear_system_proxy</a>
<li ><a href="#method-c-set_system_proxy">::set_system_proxy</a>
<li ><a href="#method-i-clear_cache">#clear_cache</a>
<li ><a href="#method-i-delete">#delete</a>
<li ><a href="#method-i-get">#get</a>
<li ><a href="#method-i-intitialize">#intitialize</a>
<li ><a href="#method-i-post">#post</a>
<li ><a href="#method-i-put">#put</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::RestClient">
<h1 id="class-GxG::Networking::RestClient" class="class">
class GxG::Networking::RestClient
</h1>
<section class="description">
<p>REST Classes:</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-clear_system_proxy" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_system_proxy</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="clear_system_proxy-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1807</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">clear_system_proxy</span>()
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-operator">::</span><span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">proxy</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-set_system_proxy" class="method-detail ">
<div class="method-heading">
<span class="method-name">set_system_proxy</span><span
class="method-args">(the_url=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="set_system_proxy-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1793</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">set_system_proxy</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid proxy URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-operator">::</span><span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">proxy</span> = <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-clear_cache" class="method-detail ">
<div class="method-heading">
<span class="method-name">clear_cache</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="clear_cache-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1828</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_cache</span>()
<span class="ruby-ivar">@cookies</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-delete" class="method-detail ">
<div class="method-heading">
<span class="method-name">delete</span><span
class="method-args">(the_url=nil, options={}, &amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="delete-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2019</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">delete</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">header_options</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:header_options</span>] <span class="ruby-operator">||</span> {}).<span class="ruby-identifier">merge</span>({<span class="ruby-value">:accept</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">:json</span>})
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>]
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>] = <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>]
<span class="ruby-identifier">pem_data</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">header_options</span> = <span class="ruby-identifier">header_options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:ssl_client_cert</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>), <span class="ruby-value">:ssl_client_key</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>]), <span class="ruby-value">:verify_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:proxy</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response</span> = <span class="ruby-operator">::</span><span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">header_options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:raw_response</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-get" class="method-detail ">
<div class="method-heading">
<span class="method-name">get</span><span
class="method-args">(the_url=nil, options={}, &amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="get-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1833</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">header_options</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:header_options</span>] <span class="ruby-operator">||</span> {}).<span class="ruby-identifier">merge</span>({<span class="ruby-value">:accept</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">:json</span>})
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>]
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>] = <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>]
<span class="ruby-identifier">pem_data</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">header_options</span> = <span class="ruby-identifier">header_options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:ssl_client_cert</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>), <span class="ruby-value">:ssl_client_key</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>]), <span class="ruby-value">:verify_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:proxy</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_as</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpClient</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">client</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">the_url</span>, {<span class="ruby-value">:save_as</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_as</span>], <span class="ruby-value">:proxy</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>]})
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:parameters</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">response</span> = <span class="ruby-operator">::</span><span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">header_options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:params</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:parameters</span>]}), <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">response</span> = <span class="ruby-operator">::</span><span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">header_options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">cookies</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">cookies</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-ivar">@cookies</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">cookies</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:raw_response</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">the_data</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">base64?</span>
<span class="ruby-identifier">the_data</span> = <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">decode64</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">json?</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">from_json</span>()
<span class="ruby-comment"># post-process value strings for DateTime, etc patterns and parse to ruby instances.</span>
<span class="ruby-comment"># post-process - symbolize keys</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">xml?</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:xml_simple</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">from_xml_simple</span>()
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">from_xml</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">html?</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_data</span>.<span class="ruby-identifier">from_html</span>()
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_data</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-intitialize" class="method-detail ">
<div class="method-heading">
<span class="method-name">intitialize</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="intitialize-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1818</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">intitialize</span>()
<span class="ruby-comment"># REST Servers to test with:</span>
<span class="ruby-comment"># http://services.groupkt.com/country/get/all</span>
<span class="ruby-comment"># http://services.groupkt.com/state/get/{countryCode}/all</span>
<span class="ruby-comment"># https://httpbin.org/get</span>
<span class="ruby-comment">#</span>
<span class="ruby-ivar">@cookies</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-post" class="method-detail ">
<div class="method-heading">
<span class="method-name">post</span><span
class="method-args">(the_url=nil, form_data=nil, options={}, &amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="post-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1968</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">post</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">form_data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">form_data</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide valid form data (in the form of a Hash).&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">header_options</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:header_options</span>] <span class="ruby-operator">||</span> {}).<span class="ruby-identifier">merge</span>({<span class="ruby-value">:accept</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">:json</span>})
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>]
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>] = <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>]
<span class="ruby-identifier">pem_data</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">header_options</span> = <span class="ruby-identifier">header_options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:ssl_client_cert</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>), <span class="ruby-value">:ssl_client_key</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>]), <span class="ruby-value">:verify_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:proxy</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:upload_file</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">form_data</span>[<span class="ruby-value">:file</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:upload_file</span>], <span class="ruby-string">&quot;rb&quot;</span>)
<span class="ruby-identifier">form_data</span>[<span class="ruby-value">:multipart</span>] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">form_data</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span>, <span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_path?</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">the_value</span>)
<span class="ruby-identifier">form_data</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_value</span>, <span class="ruby-string">&quot;rb&quot;</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response</span> = <span class="ruby-operator">::</span><span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">post</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">form_data</span>, <span class="ruby-identifier">header_options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:raw_response</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-put" class="method-detail ">
<div class="method-heading">
<span class="method-name">put</span><span
class="method-args">(the_url=nil, data=nil, options={}, &amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="put-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1906</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">put</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">data</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;You MUST provide data to PUT to the server (in the form of a Hash).&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">header_options</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:header_options</span>] <span class="ruby-operator">||</span> {}).<span class="ruby-identifier">merge</span>({<span class="ruby-value">:accept</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">:json</span>})
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>]
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:cookies</span>] = <span class="ruby-ivar">@cookies</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>]
<span class="ruby-identifier">pem_data</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_file</span>])
<span class="ruby-identifier">header_options</span> = <span class="ruby-identifier">header_options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value">:ssl_client_cert</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">X509</span><span class="ruby-operator">::</span><span class="ruby-constant">Certificate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>), <span class="ruby-value">:ssl_client_key</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKey</span><span class="ruby-operator">::</span><span class="ruby-constant">RSA</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pem_data</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:pem_password</span>]), <span class="ruby-value">:verify_ssl</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:proxy</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:to_json</span>]
<span class="ruby-identifier">data</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">to_json</span>()
<span class="ruby-identifier">header_options</span>[<span class="ruby-value">:content_type</span>] = <span class="ruby-value">:json</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:upload_file</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:upload_file</span>].<span class="ruby-identifier">valid_path?</span>
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:upload_file</span>])
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;File does not exist: #{options[:upload_file].inspect}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">data</span>[(<span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)] = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:upload_file</span>], <span class="ruby-string">&quot;rb&quot;</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid path String if you use the :upload_file option.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">data</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span>, <span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_path?</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-identifier">the_value</span>)
<span class="ruby-identifier">data</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_value</span>, <span class="ruby-string">&quot;rb&quot;</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">response</span> = <span class="ruby-operator">::</span><span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">put</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">data</span>, <span class="ruby-identifier">header_options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:raw_response</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,625 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::SmtpClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-attachment_template">#attachment_template</a>
<li ><a href="#method-i-host">#host</a>
<li ><a href="#method-i-login">#login</a>
<li ><a href="#method-i-logout">#logout</a>
<li ><a href="#method-i-message_template">#message_template</a>
<li ><a href="#method-i-port">#port</a>
<li ><a href="#method-i-send_message">#send_message</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::SmtpClient">
<h1 id="class-GxG::Networking::SmtpClient" class="class">
class GxG::Networking::SmtpClient
</h1>
<section class="description">
<p>SMTP Classes:</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(host=nil,port=nil,options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1375</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">host</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">port</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">options</span>={})
<span class="ruby-keyword">if</span> <span class="ruby-identifier">port</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = <span class="ruby-identifier">port</span>
<span class="ruby-identifier">port</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@user</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@password</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@host</span> = <span class="ruby-identifier">host</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@host</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a HOST, like this: &lt;host&gt;,(&lt;port&gt;),(&lt;options&gt;)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@port</span> = (<span class="ruby-identifier">port</span> <span class="ruby-operator">||</span> <span class="ruby-value">465</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:ssl_method</span>]
<span class="ruby-comment"># Valid: [:TLSv1, :TLSv1_server, :TLSv1_client, :TLSv1_1, :TLSv1_1_server, :TLSv1_1_client, :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client, :SSLv23, :SSLv23_server, :SSLv23_client]</span>
<span class="ruby-keyword">unless</span> <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSLContext</span><span class="ruby-operator">::</span><span class="ruby-constant">METHODS</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:ssl_method</span>])
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Encryption method #{options[:ssl_method].inspect} is not valid. Choose one of these: #{OpenSSL::SSL::SSLContext::METHODS.inspect}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">openssl_context</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSLContext</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:ssl_method</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">openssl_context</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">SMTP</span>.<span class="ruby-identifier">default_ssl_context</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:ignore_ssl_errors</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">openssl_context</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_NONE</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">openssl_context</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_PEER</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@port</span> = (<span class="ruby-identifier">port</span> <span class="ruby-operator">||</span> <span class="ruby-value">25</span>)
<span class="ruby-identifier">openssl_context</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">SMTP</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@host</span>, <span class="ruby-ivar">@port</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">openssl_context</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">enable_ssl</span>(<span class="ruby-identifier">openssl_context</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-attachment_template" class="method-detail ">
<div class="method-heading">
<span class="method-name">attachment_template</span><span
class="method-args">(the_path=&quot;&quot;, content_parameters={&quot;name&quot; =&gt; &quot;&quot;})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="attachment_template-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1472</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">attachment_template</span>(<span class="ruby-identifier">the_path</span>=<span class="ruby-string">&quot;&quot;</span>, <span class="ruby-identifier">content_parameters</span>={<span class="ruby-string">&quot;name&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;&quot;</span>})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_path</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">valid_path?</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid file system path to the file.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">content_parameters</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide content_parameters as a Hash.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">content_parameters</span>[<span class="ruby-string">&quot;name&quot;</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">content_parameters</span>[<span class="ruby-string">&quot;name&quot;</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">the_path</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">discovered_mime</span> = <span class="ruby-operator">::</span><span class="ruby-constant">MimeMagic</span>.<span class="ruby-identifier">by_magic</span>(<span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">the_path</span>,<span class="ruby-string">&quot;rb&quot;</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">discovered_mime</span>
<span class="ruby-identifier">discovered_mime</span> = <span class="ruby-identifier">discovered_mime</span>.<span class="ruby-identifier">type</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">discovered_mime</span> = <span class="ruby-string">&quot;application/octet-stream&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">discovered_mime</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">content_parameters</span>}, <span class="ruby-value">:filename</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">the_path</span>)), <span class="ruby-value">:path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_path</span>, <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>}
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_path</span>, <span class="ruby-value">:content_parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">content_parameters</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-host" class="method-detail ">
<div class="method-heading">
<span class="method-name">host</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="host-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1415</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">host</span>()
<span class="ruby-ivar">@host</span>.<span class="ruby-identifier">clone</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-login" class="method-detail ">
<div class="method-heading">
<span class="method-name">login</span><span
class="method-args">(user_id=nil,password=nil,authentication_method=:plain)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="login-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1423</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">login</span>(<span class="ruby-identifier">user_id</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">password</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">authentication_method</span>=<span class="ruby-value">:plain</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-ivar">@user</span> = <span class="ruby-identifier">user_id</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@user</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a USER id, like this: &lt;user_id&gt;,&lt;password/oauth-token&gt;,(&lt;options&gt;)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@password</span> = <span class="ruby-identifier">password</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@password</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a PASSWORD/OAUTH-TOKEN, like this: &lt;user_id&gt;,&lt;password/oauth-token&gt;,(&lt;options&gt;)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">started?</span>
<span class="ruby-keyword">unless</span> [<span class="ruby-value">:plain</span>, <span class="ruby-value">:login</span>, <span class="ruby-value">:cram_md5</span>, <span class="ruby-value">:oauth2</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">authentication_method</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Authentication method #{authentication_method.inspect} is invalid. Choose one of these: [:plain, :login, :cram_md5, :oauth2]&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Internal cosmetics for interface consistency.</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">authentication_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:oauth2</span>
<span class="ruby-identifier">authentication_method</span> = <span class="ruby-value">:xoauth2</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">start</span>(<span class="ruby-ivar">@host</span>, <span class="ruby-ivar">@user</span>, <span class="ruby-ivar">@password</span>, <span class="ruby-identifier">authentication_method</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-comment"># Internal cosmetics for interface consistency.</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">authentication_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:xoauth2</span>
<span class="ruby-identifier">authentication_method</span> = <span class="ruby-value">:oauth2</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:user</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">user_id</span>, <span class="ruby-value">:authentication</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">authentication_method</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-logout" class="method-detail ">
<div class="method-heading">
<span class="method-name">logout</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="logout-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1457</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">logout</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">finish</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {}})
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-message_template" class="method-detail ">
<div class="method-heading">
<span class="method-name">message_template</span><span
class="method-args">(mime_type=&quot;text/plain&quot;, content_parameters={&quot;charset&quot;=&gt;&quot;UTF-8&quot;})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="message_template-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1497</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">message_template</span>(<span class="ruby-identifier">mime_type</span>=<span class="ruby-string">&quot;text/plain&quot;</span>, <span class="ruby-identifier">content_parameters</span>={<span class="ruby-string">&quot;charset&quot;</span><span class="ruby-operator">=&gt;</span><span class="ruby-string">&quot;UTF-8&quot;</span>})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> [<span class="ruby-string">&#39;text/plain&#39;</span>, <span class="ruby-string">&#39;text/html&#39;</span>, <span class="ruby-string">&#39;text/xhtml&#39;</span>, <span class="ruby-string">&#39;text/xml&#39;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">mime_type</span>.<span class="ruby-identifier">to_s</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Content Type specified was invalid. Choose one of these: [&#39;text/plain&#39;, &#39;text/html&#39;, &#39;text/xhtml&#39;, &#39;text/xml&#39;]&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">content_parameters</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide content_parameters as a Hash.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">gxg_message</span> = <span class="ruby-identifier">new_message</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:sender</span>] = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:id</span>] = <span class="ruby-node">&quot;&lt;#{gxg_message[:id].to_s}@#{::Socket.gethostname}.mail&gt;&quot;</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:to</span>] = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:cc</span>] = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:bcc</span>] = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:subject</span>] = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:date</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:header</span>] = {}
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:body</span>] = [{<span class="ruby-value">:prologue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;&quot;</span>},{<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">mime_type</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">content_parameters</span>}, <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;&quot;</span>},{<span class="ruby-value">:epilogue</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;&quot;</span>}]
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:attachments</span>] = []
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">gxg_message</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:content_type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">mime_type</span>, <span class="ruby-value">:content_parameters</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">content_parameters</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-port" class="method-detail ">
<div class="method-heading">
<span class="method-name">port</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="port-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1419</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">port</span>()
<span class="ruby-ivar">@port</span>.<span class="ruby-identifier">clone</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-send_message" class="method-detail ">
<div class="method-heading">
<span class="method-name">send_message</span><span
class="method-args">(gxg_message=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="send_message-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 1524</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">send_message</span>(<span class="ruby-identifier">gxg_message</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">started?</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;SMTP session not started yet.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">gxg_message</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Events</span><span class="ruby-operator">::</span><span class="ruby-constant">Message</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid message object of class ::GxG::Events::Message. Suggested: &lt;SmtpClient&gt;.message_template(&lt;Mime-Type-String&gt;)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Build suitable mail message</span>
<span class="ruby-identifier">message</span> = <span class="ruby-constant">Mail</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">the_fields</span> = []
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:header</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span>, <span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_field_value</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">the_fields</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{the_key.to_s}: #{the_field_value.to_s}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">the_fields</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{the_key.to_s}: #{the_value.to_s}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">header</span> = <span class="ruby-identifier">the_fields</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;\r\n&quot;</span>)
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">from</span> = <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:sender</span>]
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">reply_to</span> = <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:sender</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:id</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;@&quot;</span>)
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">message_id</span> = <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:id</span>].<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">message_id</span> = <span class="ruby-node">&quot;&lt;#{gxg_message[:id].to_s}@#{::Socket.gethostname}.mail&gt;&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">to</span> = <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:to</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:cc</span>]
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">cc</span> = <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:cc</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:bcc</span>]
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">bcc</span> = <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:bcc</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">subject</span> = <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:subject</span>]
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">date</span> = (<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:date</span>].<span class="ruby-identifier">to_s</span> <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:attachments</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">multipart</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">part_count</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:body</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">part</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">part</span>[<span class="ruby-value">:prologue</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">part</span>[<span class="ruby-value">:epilogue</span>]
<span class="ruby-identifier">part_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">part_count</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">multipart</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">multipart</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">multipart</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:body</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">part</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">part</span>[<span class="ruby-value">:prologue</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">part</span>[<span class="ruby-value">:epilogue</span>]
<span class="ruby-identifier">type_info</span> = <span class="ruby-node">&quot;Content-Type: #{part[:content_type][:type]}&quot;</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">part</span>[<span class="ruby-value">:content_type</span>][<span class="ruby-value">:parameters</span>].<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">part</span>[<span class="ruby-value">:content_type</span>][<span class="ruby-value">:parameters</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span>, <span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">type_info</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;; &#39;#{the_key.to_s}&#39;: &#39;#{the_value.to_s}&#39;&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">new_part</span> = <span class="ruby-constant">Mail</span><span class="ruby-operator">::</span><span class="ruby-constant">Part</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">type_info</span>)
<span class="ruby-identifier">new_part</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">part</span>[<span class="ruby-value">:content</span>]
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">add_part</span>(<span class="ruby-identifier">new_part</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Add file attachments:</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:attachments</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attachment</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">attachment</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">file_size</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">size</span>(<span class="ruby-identifier">attachment</span>[<span class="ruby-value">:path</span>])
<span class="ruby-identifier">file_handle</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">attachment</span>[<span class="ruby-value">:path</span>],<span class="ruby-string">&quot;rb&quot;</span>)
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">apportioned_ranges</span>(<span class="ruby-identifier">file_size</span>,<span class="ruby-value">65536</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_range</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">file_handle</span>.<span class="ruby-identifier">seek</span>(<span class="ruby-identifier">the_range</span>.<span class="ruby-identifier">first</span>)
<span class="ruby-identifier">attachment</span>[<span class="ruby-value">:content</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">file_handle</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">the_range</span>.<span class="ruby-identifier">size</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">file_handle</span>.<span class="ruby-identifier">close</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">add_file</span>({<span class="ruby-value">:filename</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">attachment</span>[<span class="ruby-value">:filename</span>], <span class="ruby-value">:content</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">attachment</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:body</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">part</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">part</span>[<span class="ruby-value">:prologue</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">part</span>[<span class="ruby-value">:epilogue</span>]
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">body</span> = <span class="ruby-identifier">part</span>[<span class="ruby-value">:content</span>]
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Send it</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">send_message</span>(<span class="ruby-identifier">message</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">gxg_message</span>[<span class="ruby-value">:sender</span>], <span class="ruby-identifier">message</span>.<span class="ruby-identifier">destinations</span>)
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:message</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">gxg_message</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,415 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::SoapClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-callmethod">#callmethod</a>
<li ><a href="#method-i-closed-3F">#closed?</a>
<li ><a href="#method-i-interface">#interface</a>
<li ><a href="#method-i-login">#login</a>
<li ><a href="#method-i-logout">#logout</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::SoapClient">
<h1 id="class-GxG::Networking::SoapClient" class="class">
class GxG::Networking::SoapClient
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Standard:</p>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2236</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>()
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-callmethod" class="method-detail ">
<div class="method-heading">
<span class="method-name">callmethod</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="callmethod-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2265</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">callmethod</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">the_method</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_s</span>
<span class="ruby-identifier">arguments</span> = {}
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">the_method</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a Hash or Array to specify parameters for this method.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">arguments</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid SOAP method.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-identifier">response_tag</span> = (<span class="ruby-identifier">the_method</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/^.+:/</span>, <span class="ruby-string">&quot;&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-string">&quot;Response&quot;</span>)
<span class="ruby-identifier">response</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">invoke</span>(<span class="ruby-identifier">the_method</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">message</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span>, <span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">the_key</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">the_value</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">message</span>.<span class="ruby-identifier">add</span>(<span class="ruby-string">&quot;literal&quot;</span>, <span class="ruby-identifier">the_value</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">data</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Oga</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse_xml</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">to_xml</span>).<span class="ruby-identifier">css</span>(<span class="ruby-identifier">response_tag</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">data</span>
<span class="ruby-identifier">found_numbers</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">text</span>.<span class="ruby-identifier">numeric_values</span>
<span class="ruby-identifier">found_value</span> = []
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found_numbers</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-identifier">found_numbers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_subarray</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_subarray</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_subarray</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">the_key</span> = <span class="ruby-identifier">the_subarray</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">keys</span>[<span class="ruby-value">0</span>]
<span class="ruby-identifier">found_value</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_subarray</span>[<span class="ruby-value">0</span>][(<span class="ruby-identifier">the_key</span>)]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = {}
<span class="ruby-identifier">result</span>[(<span class="ruby-identifier">response_tag</span>.<span class="ruby-identifier">to_sym</span>)] = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">text</span>
<span class="ruby-comment"># if found_value.size &gt; 0</span>
<span class="ruby-comment"># if found_value.size == 1</span>
<span class="ruby-comment"># result[(response_tag.to_sym)] = found_value[0]</span>
<span class="ruby-comment"># else</span>
<span class="ruby-comment"># result[(response_tag.to_sym)] = found_value</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># else</span>
<span class="ruby-comment"># result[(response_tag.to_sym)] = data.text</span>
<span class="ruby-comment"># end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">&quot;Failed to interpret response data. Data: #{data.inspect}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:method</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_method</span>, <span class="ruby-value">:arguments</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">arguments</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-closed-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">closed?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="closed-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2257</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">closed?</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-interface" class="method-detail ">
<div class="method-heading">
<span class="method-name">interface</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="interface-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2331</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">interface</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">interface</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-login" class="method-detail ">
<div class="method-heading">
<span class="method-name">login</span><span
class="method-args">(the_url=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="login-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2241</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">login</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">SoapDriver</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">the_url</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-logout" class="method-detail ">
<div class="method-heading">
<span class="method-name">logout</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="logout-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2252</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">logout</span>()
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,460 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::SoapDriver - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link">Handsoap::Service
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li class="calls-super" ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-interface">#interface</a>
<li ><a href="#method-i-on_before_dispatch">#on_before_dispatch</a>
<li ><a href="#method-i-on_create_document">#on_create_document</a>
<li ><a href="#method-i-on_response_document">#on_response_document</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::SoapDriver">
<h1 id="class-GxG::Networking::SoapDriver" class="class">
class GxG::Networking::SoapDriver
</h1>
<section class="description">
<p>SOAP Classes:</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(the_url=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Example sites to test with: <a href="http://www.restfulwebservices.net/rest/WeatherForecastService.svc?wsdl">www.restfulwebservices.net/rest/WeatherForecastService.svc?wsdl</a> <a href="http://www.restfulwebservices.net/wcf/WeatherForecastService.svc?wsdl">www.restfulwebservices.net/wcf/WeatherForecastService.svc?wsdl</a> <a href="https://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl">graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl</a> <a href="http://www.webservicex.com/CurrencyConvertor.asmx?wsdl">www.webservicex.com/CurrencyConvertor.asmx?wsdl</a></p>
<div class="method-calls-super">
Calls superclass method
</div>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2062</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">super</span>()
<span class="ruby-ivar">@user</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@password</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@interface</span> = []
<span class="ruby-ivar">@tns_url</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-operator">::</span><span class="ruby-constant">Handsoap</span><span class="ruby-operator">::</span><span class="ruby-identifier">http_driver</span> = <span class="ruby-value">:net_http</span>
<span class="ruby-operator">::</span><span class="ruby-constant">Handsoap</span><span class="ruby-operator">::</span><span class="ruby-identifier">xml_query_driver</span> = <span class="ruby-value">:rexml</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">query</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;wsdl&quot;</span>) <span class="ruby-operator">||</span> (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">path</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;wsdl&quot;</span>))
<span class="ruby-identifier">point</span> = (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">&quot;://&quot;</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>
<span class="ruby-identifier">point</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>
<span class="ruby-ivar">@user</span> = <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>
<span class="ruby-identifier">point</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-string">&quot;:&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>)
<span class="ruby-ivar">@password</span> = <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>
<span class="ruby-identifier">point</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-string">&quot;@&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">point</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">path</span>
<span class="ruby-identifier">point</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">path</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># Process WSDL, determine actual version number from that.</span>
<span class="ruby-identifier">http_tool</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpClient</span>.<span class="ruby-identifier">new</span>
<span class="ruby-identifier">response</span> = <span class="ruby-identifier">http_tool</span>.<span class="ruby-identifier">get</span>(<span class="ruby-identifier">the_url</span>, {<span class="ruby-value">:raw_response</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">true</span>})
<span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>
<span class="ruby-identifier">wsdl_data</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">transcode</span>({<span class="ruby-value">:replace</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;.&quot;</span>},<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">wsdl_data</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;</span>)
<span class="ruby-identifier">wsdl_version</span> = <span class="ruby-value">1</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">wsdl_version</span> = <span class="ruby-value">2</span>
<span class="ruby-keyword">end</span>
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">SoapDriver</span><span class="ruby-operator">::</span><span class="ruby-identifier">endpoint</span>({<span class="ruby-value">:uri</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">point</span>), <span class="ruby-value">:version</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">wsdl_version</span>)})
<span class="ruby-comment"># Build Interface Data:</span>
<span class="ruby-identifier">document</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Oga</span>.<span class="ruby-identifier">parse_xml</span>(<span class="ruby-identifier">wsdl_data</span>)
<span class="ruby-identifier">nodes</span> = <span class="ruby-identifier">document</span>.<span class="ruby-identifier">css</span>(<span class="ruby-string">&quot;definitions&quot;</span>)
<span class="ruby-identifier">nodes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">node</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Oga</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>)
<span class="ruby-identifier">node</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> [<span class="ruby-string">&quot;tns&quot;</span>, <span class="ruby-string">&quot;targetNamespace&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">attribute</span>.<span class="ruby-identifier">name</span>)
<span class="ruby-ivar">@tns_url</span> = <span class="ruby-identifier">attribute</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@tns_url</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@tns_url</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Failed to load namespace (required).&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">nodes</span> = <span class="ruby-identifier">document</span>.<span class="ruby-identifier">css</span>(<span class="ruby-string">&quot;portType&quot;</span>)
<span class="ruby-identifier">base_names</span> = []
<span class="ruby-identifier">nodes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">node</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Oga</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>)
<span class="ruby-identifier">node</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_operation</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_operation</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Oga</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>)
<span class="ruby-identifier">basename</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">the_operation</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">attribute</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;name&quot;</span>
<span class="ruby-identifier">basename</span> = <span class="ruby-identifier">attribute</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">basename</span>
<span class="ruby-identifier">record</span> = {<span class="ruby-value">:base</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">basename</span>), <span class="ruby-value">:message</span> <span class="ruby-operator">=&gt;</span> ((<span class="ruby-string">&quot;tns:&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">basename</span>).<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:input</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:output</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>}
<span class="ruby-identifier">the_operation</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_io</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_io</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Oga</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>)
<span class="ruby-keyword">if</span> [<span class="ruby-string">&quot;input&quot;</span>, <span class="ruby-string">&quot;output&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_io</span>.<span class="ruby-identifier">name</span>)
<span class="ruby-identifier">the_io</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_message</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_message</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;message&quot;</span>
<span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_io</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>)] = <span class="ruby-identifier">the_message</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:input</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:output</span>]
<span class="ruby-identifier">base_names</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">record</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">messages</span> = <span class="ruby-identifier">document</span>.<span class="ruby-identifier">css</span>(<span class="ruby-string">&quot;message&quot;</span>)
<span class="ruby-identifier">base_names</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_method</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">record</span> = {<span class="ruby-value">:method</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">the_method</span>[<span class="ruby-value">:message</span>]), <span class="ruby-value">:input</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:output</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>}
<span class="ruby-identifier">messages</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_message</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_message</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Oga</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>)
<span class="ruby-identifier">the_message</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_attribute</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">direction_key</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_method</span>[<span class="ruby-value">:input</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/^.+:/</span>, <span class="ruby-string">&quot;&quot;</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">the_attribute</span>.<span class="ruby-identifier">value</span>
<span class="ruby-identifier">direction_key</span> = <span class="ruby-value">:input</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_method</span>[<span class="ruby-value">:output</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/^.+:/</span>, <span class="ruby-string">&quot;&quot;</span>) <span class="ruby-operator">==</span> <span class="ruby-identifier">the_attribute</span>.<span class="ruby-identifier">value</span>
<span class="ruby-identifier">direction_key</span> = <span class="ruby-value">:output</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">direction_key</span>
<span class="ruby-identifier">parameters</span> = {}
<span class="ruby-identifier">the_message</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_part</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_part</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Oga</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_part</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;part&quot;</span>
<span class="ruby-identifier">the_name</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">the_type</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">the_part</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_parameter</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_parameter</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;name&quot;</span>
<span class="ruby-identifier">the_name</span> = <span class="ruby-identifier">the_parameter</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_parameter</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;type&quot;</span>
<span class="ruby-identifier">the_type</span> = <span class="ruby-identifier">the_parameter</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_parameter</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;element&quot;</span>
<span class="ruby-identifier">the_type</span> = <span class="ruby-identifier">the_parameter</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_name</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">the_type</span>)
<span class="ruby-identifier">parameters</span>[(<span class="ruby-identifier">the_name</span>.<span class="ruby-identifier">to_sym</span>)] = <span class="ruby-identifier">the_type</span>
<span class="ruby-identifier">the_name</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">the_type</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">parameters</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">record</span>[(<span class="ruby-identifier">direction_key</span>)] = <span class="ruby-identifier">parameters</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:input</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:output</span>]
<span class="ruby-ivar">@interface</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">record</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">&quot;Failed to retrieve WSDL data.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;No WSDL endpoint detected (required).&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-interface" class="method-detail ">
<div class="method-heading">
<span class="method-name">interface</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="interface-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2228</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">interface</span>()
<span class="ruby-ivar">@interface</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-on_before_dispatch" class="method-detail ">
<div class="method-heading">
<span class="method-name">on_before_dispatch</span><span
class="method-args">(the_document=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="on_before_dispatch-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2218</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">on_before_dispatch</span>(<span class="ruby-identifier">the_document</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-on_create_document" class="method-detail ">
<div class="method-heading">
<span class="method-name">on_create_document</span><span
class="method-args">(the_document=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Handsoap support hooks:</p>
<div class="method-source-code" id="on_create_document-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2212</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">on_create_document</span>(<span class="ruby-identifier">the_document</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@tns_url</span>
<span class="ruby-identifier">the_document</span>.<span class="ruby-identifier">alias</span>(<span class="ruby-string">&#39;tns&#39;</span>, <span class="ruby-ivar">@tns_url</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-on_response_document" class="method-detail ">
<div class="method-heading">
<span class="method-name">on_response_document</span><span
class="method-args">(the_document=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="on_response_document-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2222</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">on_response_document</span>(<span class="ruby-identifier">the_document</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@tns_url</span>
<span class="ruby-identifier">the_document</span>.<span class="ruby-identifier">add_namespace</span>(<span class="ruby-string">&#39;ns&#39;</span>, <span class="ruby-ivar">@tns_url</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,628 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::SshClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-async_download">#async_download</a>
<li ><a href="#method-i-async_upload">#async_upload</a>
<li ><a href="#method-i-channel_operations">#channel_operations</a>
<li ><a href="#method-i-closed-3F">#closed?</a>
<li ><a href="#method-i-download">#download</a>
<li ><a href="#method-i-login">#login</a>
<li ><a href="#method-i-logout">#logout</a>
<li ><a href="#method-i-send_command">#send_command</a>
<li ><a href="#method-i-upload">#upload</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::SshClient">
<h1 id="class-GxG::Networking::SshClient" class="class">
class GxG::Networking::SshClient
</h1>
<section class="description">
<p>SSH Client</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4138</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>()
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-async_download" class="method-detail ">
<div class="method-heading">
<span class="method-name">async_download</span><span
class="method-args">(the_remote_source=nil, the_destination=nil, options={}, &amp;progress_block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="async_download-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4271</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">async_download</span>(<span class="ruby-identifier">the_remote_source</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_destination</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_remote_source</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a local path as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_destination</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a remote path as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">progress_block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">channel</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">download</span>(<span class="ruby-identifier">the_remote_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">channel</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">download</span>(<span class="ruby-identifier">the_remote_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">channel</span>.<span class="ruby-identifier">wait</span>
<span class="ruby-comment"># True result means the request was sent, not that it completed.</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:remote_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_remote_source</span>, <span class="ruby-value">:local_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_destination</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-async_upload" class="method-detail ">
<div class="method-heading">
<span class="method-name">async_upload</span><span
class="method-args">(the_local_source=nil, the_destination=nil, options={}, &amp;progress_block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="async_upload-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4214</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">async_upload</span>(<span class="ruby-identifier">the_local_source</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_destination</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_local_source</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a local path as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_destination</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a remote path as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">progress_block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">channel</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">upload</span>(<span class="ruby-identifier">the_local_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">channel</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">upload</span>(<span class="ruby-identifier">the_local_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">channel</span>.<span class="ruby-identifier">wait</span>
<span class="ruby-comment"># True result means the request was sent, not that it completed.</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:local_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_local_source</span>, <span class="ruby-value">:remote_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_destination</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-channel_operations" class="method-detail ">
<div class="method-heading">
<span class="method-name">channel_operations</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="channel_operations-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4176</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">channel_operations</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid Block/Proc to execute.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">open_channel</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:block</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">block</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-closed-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">closed?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="closed-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4206</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">closed?</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-download" class="method-detail ">
<div class="method-heading">
<span class="method-name">download</span><span
class="method-args">(the_remote_source=nil, the_destination=nil, options={}, &amp;progress_block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="download-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4296</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">download</span>(<span class="ruby-identifier">the_remote_source</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_destination</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-comment"># options:</span>
<span class="ruby-comment">#:recursive - the local parameter refers to a local directory, which should be uploaded to a new directory named remote</span>
<span class="ruby-comment"># on the remote server.</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment">#:preserve - the atime and mtime of the file should be preserved.</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment">#:verbose - the process should result in verbose output on the server end (useful for debugging).</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_remote_source</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a remote path as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_destination</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a local path (or file name) as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">progress_block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">download!</span>(<span class="ruby-identifier">the_remote_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">download!</span>(<span class="ruby-identifier">the_remote_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:remote_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_remote_source</span>, <span class="ruby-value">:local_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_destination</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-login" class="method-detail ">
<div class="method-heading">
<span class="method-name">login</span><span
class="method-args">(the_url=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="login-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4143</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">login</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:password</span>] = <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">SSH</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>, <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-logout" class="method-detail ">
<div class="method-heading">
<span class="method-name">logout</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="logout-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4192</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">logout</span>()
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-ivar">@client</span>.<span class="ruby-identifier">exec!</span>(<span class="ruby-string">&quot;exit&quot;</span>)
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-send_command" class="method-detail ">
<div class="method-heading">
<span class="method-name">send_command</span><span
class="method-args">(the_command=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="send_command-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4160</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">send_command</span>(<span class="ruby-identifier">the_command</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_command</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a command as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">exec!</span>(<span class="ruby-identifier">the_command</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:command</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_command</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-upload" class="method-detail ">
<div class="method-heading">
<span class="method-name">upload</span><span
class="method-args">(the_local_source=nil, the_destination=nil, options={}, &amp;progress_block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="upload-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 4239</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">upload</span>(<span class="ruby-identifier">the_local_source</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_destination</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-comment"># options:</span>
<span class="ruby-comment">#:recursive - the local parameter refers to a local directory, which should be uploaded to a new directory named remote</span>
<span class="ruby-comment"># on the remote server.</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment">#:preserve - the atime and mtime of the file should be preserved.</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment">#:verbose - the process should result in verbose output on the server end (useful for debugging).</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment">#:chunk_size - the size of each &quot;chunk&quot; that should be sent. Defaults to 2048. Changing this value may</span>
<span class="ruby-comment"># improve throughput at the expense of decreasing interactivity.</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_local_source</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a local path as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_destination</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a remote path as a String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">progress_block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">upload!</span>(<span class="ruby-identifier">the_local_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">progress_block</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">scp</span>.<span class="ruby-identifier">upload!</span>(<span class="ruby-identifier">the_local_source</span>, <span class="ruby-identifier">the_destination</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:local_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_local_source</span>, <span class="ruby-value">:remote_path</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_destination</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,443 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::XmlrpcClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-callmethod">#callmethod</a>
<li ><a href="#method-i-closed-3F">#closed?</a>
<li ><a href="#method-i-interface">#interface</a>
<li ><a href="#method-i-login">#login</a>
<li ><a href="#method-i-logout">#logout</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::XmlrpcClient">
<h1 id="class-GxG::Networking::XmlrpcClient" class="class">
class GxG::Networking::XmlrpcClient
</h1>
<section class="description">
<p>XMLRPC Classes:</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2341</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>()
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-ivar">@interface</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-callmethod" class="method-detail ">
<div class="method-heading">
<span class="method-name">callmethod</span><span
class="method-args">(the_method = nil, arguments = nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="callmethod-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2404</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">callmethod</span>(<span class="ruby-identifier">the_method</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">arguments</span> = <span class="ruby-keyword">nil</span>)
<span class="ruby-comment"># The +method+ parameter is converted into a String and should</span>
<span class="ruby-comment"># be a valid XML-RPC method-name.</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment"># Each parameter of +args+ must be of one of the following types,</span>
<span class="ruby-comment"># where Hash, Struct and Array can contain any of these listed _types_:</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment"># * Fixnum, Bignum</span>
<span class="ruby-comment"># * TrueClass, FalseClass, +true+, +false+</span>
<span class="ruby-comment"># * String, Symbol</span>
<span class="ruby-comment"># * Float</span>
<span class="ruby-comment"># * Hash, Struct</span>
<span class="ruby-comment"># * Array</span>
<span class="ruby-comment"># * Date, Time, XMLRPC::DateTime</span>
<span class="ruby-comment"># * XMLRPC::Base64</span>
<span class="ruby-comment"># * A Ruby object which class includes XMLRPC::Marshallable</span>
<span class="ruby-comment"># (only if Config::ENABLE_MARSHALLABLE is +true+).</span>
<span class="ruby-comment"># That object is converted into a hash, with one additional key/value</span>
<span class="ruby-comment"># pair &lt;code&gt;___class___&lt;/code&gt; which contains the class name</span>
<span class="ruby-comment"># for restoring that object later.</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_method</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid method String.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-identifier">calldata</span> = []
<span class="ruby-identifier">calldata</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_method</span>
<span class="ruby-comment">#</span>
<span class="ruby-comment"># TODO: scour arguments structure for type conversions to be done.</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">calldata</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">entry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">arguments</span>
<span class="ruby-identifier">calldata</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arguments</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">call</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">calldata</span>)
<span class="ruby-comment"># TODO: scour result structure for type conversions to gxg standard.</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:method</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_method</span>, <span class="ruby-value">:arguments</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">arguments</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-closed-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">closed?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="closed-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2396</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">closed?</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-interface" class="method-detail ">
<div class="method-heading">
<span class="method-name">interface</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="interface-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2452</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">interface</span>()
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@client</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@interface</span>
<span class="ruby-ivar">@interface</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">call</span>(<span class="ruby-string">&quot;interface&quot;</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@interface</span>
<span class="ruby-ivar">@interface</span> = <span class="ruby-ivar">@client</span>.<span class="ruby-identifier">call</span>(<span class="ruby-string">&quot;Interface&quot;</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-comment"># log_error({:error =&gt; the_error, :parameters =&gt; {}})</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@interface</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-login" class="method-detail ">
<div class="method-heading">
<span class="method-name">login</span><span
class="method-args">(the_url=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="login-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2347</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">login</span>(<span class="ruby-identifier">the_url</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;https&#39;</span>
<span class="ruby-identifier">client_parameters</span> = [(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">path</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">port</span> <span class="ruby-operator">||</span> <span class="ruby-value">443</span>)]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> = [(<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">hostname</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">path</span>), (<span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">port</span> <span class="ruby-operator">||</span> <span class="ruby-value">80</span>)]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">host</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:proxy</span>].<span class="ruby-identifier">port</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">user</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">password</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:use_ssl</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;https&#39;</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:timeout</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:timeout</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">client_parameters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">30</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@client</span> = <span class="ruby-operator">::</span><span class="ruby-constant">XMLRPC</span><span class="ruby-operator">::</span><span class="ruby-constant">Client</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">client_parameters</span>)
<span class="ruby-identifier">this</span>().<span class="ruby-identifier">interface</span>()
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:url</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_url</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-logout" class="method-detail ">
<div class="method-heading">
<span class="method-name">logout</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="logout-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2391</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">logout</span>()
<span class="ruby-ivar">@client</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,927 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::XmppAgentConversation - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-5B-5D">#[]</a>
<li ><a href="#method-i-add_message">#add_message</a>
<li ><a href="#method-i-change_configuration">#change_configuration</a>
<li ><a href="#method-i-chat_buddies">#chat_buddies</a>
<li ><a href="#method-i-closed-3F">#closed?</a>
<li ><a href="#method-i-configuration">#configuration</a>
<li ><a href="#method-i-default_room_configuration">#default_room_configuration</a>
<li ><a href="#method-i-inspect">#inspect</a>
<li ><a href="#method-i-jid">#jid</a>
<li ><a href="#method-i-join">#join</a>
<li ><a href="#method-i-leave">#leave</a>
<li ><a href="#method-i-my_jid">#my_jid</a>
<li ><a href="#method-i-process_received">#process_received</a>
<li ><a href="#method-i-say_something">#say_something</a>
<li ><a href="#method-i-send_invitations">#send_invitations</a>
<li ><a href="#method-i-title">#title</a>
<li ><a href="#method-i-uuid">#uuid</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::XmppAgentConversation">
<h1 id="class-GxG::Networking::XmppAgentConversation" class="class">
class GxG::Networking::XmppAgentConversation
</h1>
<section class="description">
<p>Conversation Channel</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(parent=nil, details={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2935</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">parent</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">details</span>={})
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">details</span>[<span class="ruby-value">:context</span>])
<span class="ruby-ivar">@uuid</span> = <span class="ruby-identifier">details</span>[<span class="ruby-value">:context</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@parent</span> = <span class="ruby-identifier">parent</span>
<span class="ruby-comment"># @details should have a JID for the sender-jid/room-jid</span>
<span class="ruby-comment"># @details should indicate whether a private direct message or MUC ROOM message (:chat? or :groupchat?)</span>
<span class="ruby-ivar">@details</span> = <span class="ruby-identifier">details</span>
<span class="ruby-comment">#</span>
<span class="ruby-ivar">@received</span> = []
<span class="ruby-ivar">@received_thread_safety</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
<span class="ruby-comment"># Add call backs</span>
<span class="ruby-comment"># @parent.notify({:event =&gt; :new_message, :conversation =&gt; @uuid, :message =&gt; message.id})</span>
<span class="ruby-comment"># @parent.notify({:event =&gt; :new_private_message, :conversation =&gt; @uuid, :message =&gt; message.id})</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-5B-5D" class="method-detail ">
<div class="method-heading">
<span class="method-name">[]</span><span
class="method-args">(the_key=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="5B-5D-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2970</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]</span>(<span class="ruby-identifier">the_key</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_key</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@details</span>[(<span class="ruby-identifier">the_key</span>)]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-add_message" class="method-detail ">
<div class="method-heading">
<span class="method-name">add_message</span><span
class="method-args">(the_message=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="add_message-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3019</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">add_message</span>(<span class="ruby-identifier">the_message</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_message</span>
<span class="ruby-ivar">@received_thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@received</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_message</span> }
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-change_configuration" class="method-detail ">
<div class="method-heading">
<span class="method-name">change_configuration</span><span
class="method-args">(the_configuration=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="change_configuration-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3120</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">change_configuration</span>(<span class="ruby-identifier">the_configuration</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># Review : TODO - alter ROOM configuration if admin/owner</span>
<span class="ruby-comment"># if @handler</span>
<span class="ruby-comment"># if @handler.owner?</span>
<span class="ruby-comment"># unless the_configuration.is_a?(::Hash)</span>
<span class="ruby-comment"># raise ArgumentError, &quot;You MUST provide a configuration Hash.&quot;</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># the_configuration = this().default_room_configuration(the_configuration)</span>
<span class="ruby-comment"># @handler.submit_room_configuration(the_configuration)</span>
<span class="ruby-comment"># result = true</span>
<span class="ruby-comment"># else</span>
<span class="ruby-comment"># raise Exception, &quot;You are not the owner of this conversation room.&quot;</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:configuration</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_configuration</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-chat_buddies" class="method-detail ">
<div class="method-heading">
<span class="method-name">chat_buddies</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="chat_buddies-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3049</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">chat_buddies</span>()
<span class="ruby-identifier">result</span> = []
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># Review : TODO - like XmppAgent.buddies but for this ROOM only.</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-closed-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">closed?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="closed-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2988</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">closed?</span>()
<span class="ruby-comment"># Review : integrate with new system</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-configuration" class="method-detail ">
<div class="method-heading">
<span class="method-name">configuration</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="configuration-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3086</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">configuration</span>()
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># Review : TODO - get ROOM configuration</span>
<span class="ruby-comment"># if @handler</span>
<span class="ruby-comment"># if @handler.owner?</span>
<span class="ruby-comment"># current_configuration = {}</span>
<span class="ruby-comment"># iq = ::Jabber::Iq.new(:get, @handler.jid.to_s)</span>
<span class="ruby-comment"># iq.to = @handler.jid.to_s</span>
<span class="ruby-comment"># iq.from = @handler.my_jid.to_s</span>
<span class="ruby-comment"># iq.add(::Jabber::MUC::IqQueryMUCOwner.new)</span>
<span class="ruby-comment"># field_keys = this().default_room_configuration.keys</span>
<span class="ruby-comment"># response = @stream.send_with_id(iq)</span>
<span class="ruby-comment"># if response</span>
<span class="ruby-comment"># if (response.query &amp;&amp; response.query.x(::Jabber::Dataforms::XData))</span>
<span class="ruby-comment"># field_keys.each do |the_key|</span>
<span class="ruby-comment"># field = response.query.x(::Jabber::Dataforms::XData).field(the_key.to_s)</span>
<span class="ruby-comment"># if field.is_a?(::Jabber::Dataforms::XDataField)</span>
<span class="ruby-comment"># current_configuration[(the_key.to_s)] = field.value</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># result = current_configuration</span>
<span class="ruby-comment"># else</span>
<span class="ruby-comment"># raise Exception, &quot;You are not the owner of this conversation room.&quot;</span>
<span class="ruby-comment"># end</span>
<span class="ruby-comment"># end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-default_room_configuration" class="method-detail ">
<div class="method-heading">
<span class="method-name">default_room_configuration</span><span
class="method-args">(options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="default_room_configuration-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2903</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">default_room_configuration</span>(<span class="ruby-identifier">options</span>={})
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">default_config</span> = {
<span class="ruby-string">&#39;FORM_TYPE&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&#39;http://jabber.org/protocol/muc#roomconfig&#39;</span>,
<span class="ruby-string">&#39;form&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&#39;config&#39;</span>,
<span class="ruby-string">&#39;muc#roomconfig_roomname&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>,
<span class="ruby-string">&#39;muc#roomconfig_roomdesc&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>,
<span class="ruby-string">&#39;leave&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&#39;has left&#39;</span>,
<span class="ruby-string">&#39;join&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&#39;has become available&#39;</span>,
<span class="ruby-string">&#39;rename&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&#39;is now known as&#39;</span>,
<span class="ruby-string">&#39;muc#roomconfig_changesubject&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;muc#roomconfig_maxusers&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;privacy&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;muc#roomconfig_publicroom&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">1</span>,
<span class="ruby-string">&#39;muc#roomconfig_persistentroom&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">1</span>,
<span class="ruby-string">&#39;legacy&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;muc#roomconfig_moderatedroom&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;defaulttype&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;privmsg&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;muc#roomconfig_membersonly&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;muc#roomconfig_allowinvites&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">1</span>,
<span class="ruby-string">&#39;muc#roomconfig_passwordprotectedroom&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;muc#roomconfig_roomsecret&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>,
<span class="ruby-string">&#39;muc#roomconfig_whois&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&#39;moderators&#39;</span>,
<span class="ruby-string">&#39;muc#roomconfig_enablelogging&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">0</span>,
<span class="ruby-string">&#39;logformat&#39;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&#39;xml&#39;</span>
}
<span class="ruby-identifier">default_config</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-inspect" class="method-detail ">
<div class="method-heading">
<span class="method-name">inspect</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="inspect-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2984</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>()
{<span class="ruby-value">:jid</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">this</span>().<span class="ruby-identifier">jid</span>, <span class="ruby-value">:title</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">this</span>().<span class="ruby-identifier">title</span>}.<span class="ruby-identifier">inspect</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-jid" class="method-detail ">
<div class="method-heading">
<span class="method-name">jid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="jid-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2958</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">jid</span>()
<span class="ruby-ivar">@details</span>[<span class="ruby-value">:sender</span>].<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-join" class="method-detail ">
<div class="method-heading">
<span class="method-name">join</span><span
class="method-args">(the_jid=nil, password=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="join-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3028</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">join</span>(<span class="ruby-identifier">the_jid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">password</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># Review : TODO - MUC join</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:the_jid</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_jid</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-leave" class="method-detail ">
<div class="method-heading">
<span class="method-name">leave</span><span
class="method-args">(exit_string=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="leave-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3038</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">leave</span>(<span class="ruby-identifier">exit_string</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># Review : TODO - MUC leave</span>
<span class="ruby-comment"># @parent.refresh_conversations</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:exit_string</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">exit_string</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-my_jid" class="method-detail ">
<div class="method-heading">
<span class="method-name">my_jid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="my_jid-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2962</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">my_jid</span>()
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@parent</span>
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">jid</span>().<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process_received" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_received</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_received-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2993</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_received</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">count</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@received_thread_safety</span>.<span class="ruby-identifier">synchronize</span> {
<span class="ruby-identifier">count</span> = <span class="ruby-ivar">@received</span>.<span class="ruby-identifier">size</span>
}
<span class="ruby-identifier">record</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">count</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
<span class="ruby-ivar">@received_thread_safety</span>.<span class="ruby-identifier">synchronize</span> {
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@received</span>.<span class="ruby-identifier">shift</span>
}
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
<span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">record</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {}})
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-say_something" class="method-detail ">
<div class="method-heading">
<span class="method-name">say_something</span><span
class="method-args">(the_message=nil, to_jid=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="say_something-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3059</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">say_something</span>(<span class="ruby-identifier">the_message</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">to_jid</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@details</span>[<span class="ruby-value">:type</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:chat</span>
<span class="ruby-identifier">recipient</span> = (<span class="ruby-identifier">to_jid</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_message</span>[<span class="ruby-value">:to</span>]).<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">say</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Blather</span><span class="ruby-operator">::</span><span class="ruby-constant">JID</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">recipient</span>), <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">gxg_message_to_xmpp</span>(<span class="ruby-identifier">the_message</span>))
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># Review : TODO - send chat message to ROOM</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:message</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_message</span>, <span class="ruby-value">:to</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">to_jid</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-send_invitations" class="method-detail ">
<div class="method-heading">
<span class="method-name">send_invitations</span><span
class="method-args">(the_recipients=nil, reason=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="send_invitations-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 3075</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">send_invitations</span>(<span class="ruby-identifier">the_recipients</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">reason</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># Review : TODO - ROOM invitation list processing list.each { |i| send i }</span>
<span class="ruby-comment"># &quot;You MUST provide an Array of JID Strings.&quot;</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:recipients</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">the_recipients</span>, <span class="ruby-value">:message</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">reason</span>}})
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-title" class="method-detail ">
<div class="method-heading">
<span class="method-name">title</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="title-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2978</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">title</span>()
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-comment"># Review : TODO - return ROOM title</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-uuid" class="method-detail ">
<div class="method-heading">
<span class="method-name">uuid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="uuid-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2954</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">uuid</span>()
<span class="ruby-ivar">@uuid</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,470 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::XmppAgentInvitation - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-5B-5D">#[]</a>
<li ><a href="#method-i-accept">#accept</a>
<li ><a href="#method-i-decline">#decline</a>
<li ><a href="#method-i-inspect">#inspect</a>
<li ><a href="#method-i-invitation">#invitation</a>
<li ><a href="#method-i-keys">#keys</a>
<li ><a href="#method-i-pending-3F">#pending?</a>
<li ><a href="#method-i-uuid">#uuid</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::XmppAgentInvitation">
<h1 id="class-GxG::Networking::XmppAgentInvitation" class="class">
class GxG::Networking::XmppAgentInvitation
</h1>
<section class="description">
<p>XMPP Classes: Review : <a href="../../Blather.html"><code>Blather</code></a> switchover: require ::File.expand_path(“./xmpp_client.rb”,::File.dirname(__FILE__)) ### Invitations</p>
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(parent=nil, invitation=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2474</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">parent</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">invitation</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-ivar">@uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-ivar">@pending</span> = <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@parent</span> = <span class="ruby-identifier">parent</span>
<span class="ruby-ivar">@invitation</span> = <span class="ruby-identifier">invitation</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@invitation</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Blather</span><span class="ruby-operator">::</span><span class="ruby-constant">Stanza</span><span class="ruby-operator">::</span><span class="ruby-constant">Presence</span>)
<span class="ruby-ivar">@details</span> = {<span class="ruby-value">:sender</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@invitation</span>.<span class="ruby-identifier">from</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">:association</span>}
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@details</span> = {<span class="ruby-value">:sender</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@invitation</span>.<span class="ruby-identifier">from</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:type</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">:unkown</span>}
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-5B-5D" class="method-detail ">
<div class="method-heading">
<span class="method-name">[]</span><span
class="method-args">(the_key)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="5B-5D-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2509</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]</span>(<span class="ruby-identifier">the_key</span>)
<span class="ruby-ivar">@details</span>[(<span class="ruby-identifier">the_key</span>)]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-accept" class="method-detail ">
<div class="method-heading">
<span class="method-name">accept</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="accept-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2513</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">accept</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@invitation</span>
<span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">write</span>(<span class="ruby-ivar">@invitation</span>.<span class="ruby-identifier">approve!</span>)
<span class="ruby-ivar">@pending</span> = <span class="ruby-keyword">false</span>
<span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">refresh_invitations</span>()
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-decline" class="method-detail ">
<div class="method-heading">
<span class="method-name">decline</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="decline-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2524</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">decline</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@invitation</span>
<span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">write</span>(<span class="ruby-ivar">@invitation</span>.<span class="ruby-identifier">cancel!</span>)
<span class="ruby-ivar">@pending</span> = <span class="ruby-keyword">false</span>
<span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">refresh_invitations</span>()
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-inspect" class="method-detail ">
<div class="method-heading">
<span class="method-name">inspect</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="inspect-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2497</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>()
<span class="ruby-ivar">@details</span>.<span class="ruby-identifier">inspect</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-invitation" class="method-detail ">
<div class="method-heading">
<span class="method-name">invitation</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Review : debug only</p>
<div class="method-source-code" id="invitation-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2489</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">invitation</span>()
<span class="ruby-ivar">@invitation</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-keys" class="method-detail ">
<div class="method-heading">
<span class="method-name">keys</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="keys-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2505</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">keys</span>()
<span class="ruby-ivar">@details</span>.<span class="ruby-identifier">keys</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-pending-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">pending?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="pending-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2501</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">pending?</span>()
<span class="ruby-ivar">@pending</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-uuid" class="method-detail ">
<div class="method-heading">
<span class="method-name">uuid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="uuid-source">
<pre><span class="ruby-comment"># File lib/gxg/net_clients.rb, line 2493</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">uuid</span>()
<span class="ruby-ivar">@uuid</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

187
doc/GxG/Networking/ZMQ.html Normal file
View file

@ -0,0 +1,187 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Networking::ZMQ - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-zmq_default_context">::zmq_default_context</a>
<li ><a href="#method-c-zmq_supported_protocols">::zmq_supported_protocols</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Networking::ZMQ">
<h1 id="module-GxG::Networking::ZMQ" class="module">
module GxG::Networking::ZMQ
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-zmq_default_context" class="method-detail ">
<div class="method-heading">
<span class="method-name">zmq_default_context</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="zmq_default_context-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 25</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">zmq_default_context</span>()
<span class="ruby-identifier">@@details</span>[<span class="ruby-value">:zmq_context</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-zmq_supported_protocols" class="method-detail ">
<div class="method-heading">
<span class="method-name">zmq_supported_protocols</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="zmq_supported_protocols-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 29</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">zmq_supported_protocols</span>()
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">SYSTEM</span>.<span class="ruby-identifier">platform</span>()[<span class="ruby-value">:platform</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:windows</span>
[<span class="ruby-string">&quot;inproc&quot;</span>, <span class="ruby-string">&quot;tcp&quot;</span>, <span class="ruby-string">&quot;tcp4&quot;</span>, <span class="ruby-string">&quot;tcp6&quot;</span>, <span class="ruby-string">&quot;pgm&quot;</span>, <span class="ruby-string">&quot;epgm&quot;</span>]
<span class="ruby-keyword">else</span>
[<span class="ruby-string">&quot;inproc&quot;</span>, <span class="ruby-string">&quot;ipc&quot;</span>, <span class="ruby-string">&quot;tcp&quot;</span>, <span class="ruby-string">&quot;tcp4&quot;</span>, <span class="ruby-string">&quot;tcp6&quot;</span>, <span class="ruby-string">&quot;pgm&quot;</span>, <span class="ruby-string">&quot;epgm&quot;</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,503 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqAdapter - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../../../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-close">#close</a>
<li ><a href="#method-i-context">#context</a>
<li ><a href="#method-i-identity">#identity</a>
<li ><a href="#method-i-listen">#listen</a>
<li ><a href="#method-i-open-3F">#open?</a>
<li ><a href="#method-i-receive">#receive</a>
<li ><a href="#method-i-send">#send</a>
<li ><a href="#method-i-socket">#socket</a>
<li ><a href="#method-i-vetted_parameters">#vetted_parameters</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqAdapter">
<h1 id="class-GxG::Networking::ZMQ::ZmqAdapter" class="class">
class GxG::Networking::ZMQ::ZmqAdapter
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-close" class="method-detail ">
<div class="method-heading">
<span class="method-name">close</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="close-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 101</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">close</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">close</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">true</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-context" class="method-detail ">
<div class="method-heading">
<span class="method-name">context</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="context-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 111</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">context</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">context</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-identity" class="method-detail ">
<div class="method-heading">
<span class="method-name">identity</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="identity-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 123</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">identity</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-listen" class="method-detail ">
<div class="method-heading">
<span class="method-name">listen</span><span
class="method-args">(&amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="listen-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 129</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">listen</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">listen</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-open-3F" class="method-detail ">
<div class="method-heading">
<span class="method-name">open?</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="open-3F-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 97</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">open?</span>()
<span class="ruby-ivar">@open</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-receive" class="method-detail ">
<div class="method-heading">
<span class="method-name">receive</span><span
class="method-args">(**options, &amp;block)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="receive-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 135</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">receive</span>(<span class="ruby-operator">**</span><span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">receive</span>(<span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-send" class="method-detail ">
<div class="method-heading">
<span class="method-name">send</span><span
class="method-args">(message=&quot;&quot;, **options)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="send-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 141</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">send</span>(<span class="ruby-identifier">message</span>=<span class="ruby-string">&quot;&quot;</span>, <span class="ruby-operator">**</span><span class="ruby-identifier">options</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>.<span class="ruby-identifier">to_s</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-socket" class="method-detail ">
<div class="method-heading">
<span class="method-name">socket</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="socket-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 117</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">socket</span>()
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-vetted_parameters" class="method-detail ">
<div class="method-heading">
<span class="method-name">vetted_parameters</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<pre>Proposed: {:bind/connect =&gt; &lt;URI&gt;, :context =&gt; &lt;Context&gt;, :encode =&gt; &lt;Proc&gt;, :decode =&gt; &lt;Proc&gt;}
mode (:bind, :connect) — a mode for the socket.
Options Hash:</pre>
<p>context (ZMQ::Context) — a context to use for this socket (one will be created if not provided). encode (lambda) — how to encode messages. decode (lambda) — how to decode messages. transport (Symbol) — default: :tcp — transport for transport. address (String) — default: &#39;127.0.0.1&#39; — address for endpoint. port (Fixnum) — default: 5555 — port for endpoint.</p>
<div class="method-source-code" id="vetted_parameters-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 47</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">vetted_parameters</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a Hash as parameters.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:bind</span>]
<span class="ruby-comment"># bind</span>
<span class="ruby-identifier">mode</span> = <span class="ruby-value">:bind</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># connect</span>
<span class="ruby-identifier">mode</span> = <span class="ruby-value">:connect</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:context</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">ZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Context</span>)
<span class="ruby-identifier">options</span>[<span class="ruby-value">:context</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-value">:context</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">uri</span> = <span class="ruby-identifier">params</span>[(<span class="ruby-identifier">mode</span>)].<span class="ruby-identifier">clone</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span> = <span class="ruby-value">5555</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:port</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">Generic</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You MUST provide a valid URI to bind or connect to.&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Networking</span><span class="ruby-operator">::</span><span class="ruby-constant">ZMQ</span><span class="ruby-operator">::</span><span class="ruby-identifier">zmq_supported_protocols</span>().<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span>())
<span class="ruby-keyword">if</span> <span class="ruby-identifier">mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:bind</span>
<span class="ruby-keyword">if</span> [<span class="ruby-string">&quot;tcp&quot;</span>, <span class="ruby-string">&quot;tcp4&quot;</span>, <span class="ruby-string">&quot;tcp6&quot;</span>, <span class="ruby-string">&quot;udp&quot;</span>, <span class="ruby-string">&quot;udp4&quot;</span>, <span class="ruby-string">&quot;udp6&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span>())
<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">resolve_host</span>()
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">SYSTEM</span>.<span class="ruby-identifier">network_port_used?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Addrinfo</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">uri</span>))
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EADDRINUSE</span>, <span class="ruby-node">&quot;Address and port already in use: #{uri.to_s}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">&quot;Unsupported networking protocol: #{uri.scheme().inspect}&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:transport</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:address</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">hostname</span>
<span class="ruby-keyword">if</span> [<span class="ruby-string">&quot;tcp&quot;</span>, <span class="ruby-string">&quot;tcp4&quot;</span>, <span class="ruby-string">&quot;tcp6&quot;</span>, <span class="ruby-string">&quot;udp&quot;</span>, <span class="ruby-string">&quot;udp4&quot;</span>, <span class="ruby-string">&quot;udp6&quot;</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span>())
<span class="ruby-identifier">options</span>[<span class="ruby-value">:port</span>] = (<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span> <span class="ruby-operator">||</span> <span class="ruby-value">5555</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">options</span>[<span class="ruby-value">:transport</span>] = <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:encode</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">options</span>[<span class="ruby-value">:encode</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-value">:encode</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:decode</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-identifier">options</span>[<span class="ruby-value">:decode</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-value">:decode</span>]
<span class="ruby-keyword">end</span>
{<span class="ruby-value">:mode</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">mode</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">options</span>}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,202 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqClient - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ZmqAdapter.html">GxG::Networking::ZMQ::ZmqAdapter</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-request">#request</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqClient">
<h1 id="class-GxG::Networking::ZMQ::ZmqClient" class="class">
class GxG::Networking::ZMQ::ZmqClient
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 184</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">vetted_parameters</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-ivar">@connector</span> = <span class="ruby-operator">::</span><span class="ruby-constant">EZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Client</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-value">:options</span>])
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-request" class="method-detail ">
<div class="method-heading">
<span class="method-name">request</span><span
class="method-args">(message=&quot;&quot;, **options)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="request-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 192</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">request</span>(<span class="ruby-identifier">message</span>=<span class="ruby-string">&quot;&quot;</span>, <span class="ruby-operator">**</span><span class="ruby-identifier">options</span>)
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">message</span>.<span class="ruby-identifier">to_s</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqContext - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link">EZMQ::Context
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqContext">
<h1 id="class-GxG::Networking::ZMQ::ZmqContext" class="class">
class GxG::Networking::ZMQ::ZmqContext
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqPair - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ZmqAdapter.html">GxG::Networking::ZMQ::ZmqAdapter</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqPair">
<h1 id="class-GxG::Networking::ZMQ::ZmqPair" class="class">
class GxG::Networking::ZMQ::ZmqPair
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 151</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">vetted_parameters</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-ivar">@connector</span> = <span class="ruby-operator">::</span><span class="ruby-constant">EZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Pair</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>], <span class="ruby-identifier">params</span>[<span class="ruby-value">:options</span>])
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,204 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqPublisher - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ZmqAdapter.html">GxG::Networking::ZMQ::ZmqAdapter</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-send">#send</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqPublisher">
<h1 id="class-GxG::Networking::ZMQ::ZmqPublisher" class="class">
class GxG::Networking::ZMQ::ZmqPublisher
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 209</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">vetted_parameters</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-ivar">@connector</span> = <span class="ruby-operator">::</span><span class="ruby-constant">EZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Publisher</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-value">:options</span>])
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-send" class="method-detail ">
<div class="method-heading">
<span class="method-name">send</span><span
class="method-args">(message=&quot;&quot;, topic=&#39;&#39;, **options)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="send-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 217</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">send</span>(<span class="ruby-identifier">message</span>=<span class="ruby-string">&quot;&quot;</span>, <span class="ruby-identifier">topic</span>=<span class="ruby-string">&#39;&#39;</span>, <span class="ruby-operator">**</span><span class="ruby-identifier">options</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">topic</span>.<span class="ruby-identifier">to_s</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqPuller - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ZmqAdapter.html">GxG::Networking::ZMQ::ZmqAdapter</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqPuller">
<h1 id="class-GxG::Networking::ZMQ::ZmqPuller" class="class">
class GxG::Networking::ZMQ::ZmqPuller
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 173</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">vetted_parameters</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-ivar">@connector</span> = <span class="ruby-operator">::</span><span class="ruby-constant">EZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Puller</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>], <span class="ruby-identifier">params</span>[<span class="ruby-value">:options</span>])
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqPusher - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ZmqAdapter.html">GxG::Networking::ZMQ::ZmqAdapter</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqPusher">
<h1 id="class-GxG::Networking::ZMQ::ZmqPusher" class="class">
class GxG::Networking::ZMQ::ZmqPusher
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 162</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">vetted_parameters</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-ivar">@connector</span> = <span class="ruby-operator">::</span><span class="ruby-constant">EZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Pusher</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-value">:mode</span>], <span class="ruby-identifier">params</span>[<span class="ruby-value">:options</span>])
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,159 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqServer - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ZmqAdapter.html">GxG::Networking::ZMQ::ZmqAdapter</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqServer">
<h1 id="class-GxG::Networking::ZMQ::ZmqServer" class="class">
class GxG::Networking::ZMQ::ZmqServer
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 198</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">vetted_parameters</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-ivar">@connector</span> = <span class="ruby-operator">::</span><span class="ruby-constant">EZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Server</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-value">:options</span>])
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,241 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Networking::ZMQ::ZmqSubscriber - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="ZmqAdapter.html">GxG::Networking::ZMQ::ZmqAdapter</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-subscribe">#subscribe</a>
<li ><a href="#method-i-unsubscribe">#unsubscribe</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Networking::ZMQ::ZmqSubscriber">
<h1 id="class-GxG::Networking::ZMQ::ZmqSubscriber" class="class">
class GxG::Networking::ZMQ::ZmqSubscriber
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 226</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-identifier">params</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">vetted_parameters</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-ivar">@connector</span> = <span class="ruby-operator">::</span><span class="ruby-constant">EZMQ</span><span class="ruby-operator">::</span><span class="ruby-constant">Subscriber</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-value">:options</span>])
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">socket</span>.<span class="ruby-identifier">identity</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Celluloid</span><span class="ruby-operator">::</span><span class="ruby-constant">UUID</span><span class="ruby-operator">::</span><span class="ruby-identifier">random_generate</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-ivar">@open</span> = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-subscribe" class="method-detail ">
<div class="method-heading">
<span class="method-name">subscribe</span><span
class="method-args">(topic=&quot;&quot;)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="subscribe-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 234</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">subscribe</span>(<span class="ruby-identifier">topic</span>=<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">subscribe</span>(<span class="ruby-identifier">topic</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-unsubscribe" class="method-detail ">
<div class="method-heading">
<span class="method-name">unsubscribe</span><span
class="method-args">(topic=&quot;&quot;)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="unsubscribe-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_zmq.rb, line 240</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unsubscribe</span>(<span class="ruby-identifier">topic</span>=<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@open</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">unsubscribe</span>(<span class="ruby-identifier">topic</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

411
doc/GxG/ReturnResponse.html Normal file
View file

@ -0,0 +1,411 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::ReturnResponse - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-debug">#debug</a>
<li ><a href="#method-i-error">#error</a>
<li ><a href="#method-i-info">#info</a>
<li ><a href="#method-i-inspect">#inspect</a>
<li ><a href="#method-i-new_selector">#new_selector</a>
<li ><a href="#method-i-result">#result</a>
<li ><a href="#method-i-warning">#warning</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::ReturnResponse">
<h1 id="class-GxG::ReturnResponse" class="class">
class GxG::ReturnResponse
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(response={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>this class allows for characterized muli-part return values for Procs and Methods this was created for a variety of reasons. Hope this isn&#39;t a dead end.</p>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 364</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">response</span>={})
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&quot;Response must be passed as a Hash&quot;</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@details</span> = <span class="ruby-identifier">response</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-debug" class="method-detail ">
<div class="method-heading">
<span class="method-name">debug</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="debug-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 385</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">debug</span>()
<span class="ruby-ivar">@details</span>[<span class="ruby-value">:debug</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-error" class="method-detail ">
<div class="method-heading">
<span class="method-name">error</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="error-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 376</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">error</span>()
<span class="ruby-ivar">@details</span>[<span class="ruby-value">:error</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-info" class="method-detail ">
<div class="method-heading">
<span class="method-name">info</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="info-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 382</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">info</span>()
<span class="ruby-ivar">@details</span>[<span class="ruby-value">:info</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-inspect" class="method-detail ">
<div class="method-heading">
<span class="method-name">inspect</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="inspect-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 388</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>()
<span class="ruby-ivar">@details</span>.<span class="ruby-identifier">inspect</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-new_selector" class="method-detail ">
<div class="method-heading">
<span class="method-name">new_selector</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new_selector-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 370</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">new_selector</span>()
<span class="ruby-ivar">@details</span>[<span class="ruby-value">:new_selector</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-result" class="method-detail ">
<div class="method-heading">
<span class="method-name">result</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="result-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 373</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">result</span>()
<span class="ruby-ivar">@details</span>[<span class="ruby-value">:result</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-warning" class="method-detail ">
<div class="method-heading">
<span class="method-name">warning</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="warning-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 379</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">warning</span>()
<span class="ruby-ivar">@details</span>[<span class="ruby-value">:warning</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

97
doc/GxG/Storage.html Normal file
View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Storage - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Storage">
<h1 id="module-GxG::Storage" class="module">
module GxG::Storage
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

2259
doc/GxG/Storage/Volume.html Normal file

File diff suppressed because it is too large Load diff

97
doc/GxG/Support.html Normal file
View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support">
<h1 id="module-GxG::Support" class="module">
module GxG::Support
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support::Library - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support::Library">
<h1 id="module-GxG::Support::Library" class="module">
module GxG::Support::Library
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,376 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support::Library::CommonIOPrepare - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-process_parameters">#process_parameters</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support::Library::CommonIOPrepare">
<h1 id="module-GxG::Support::Library::CommonIOPrepare" class="module">
module GxG::Support::Library::CommonIOPrepare
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-process_parameters" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_parameters</span><span
class="method-args">(*args)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_parameters-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 769</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_parameters</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-identifier">default_object</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
<span class="ruby-comment"># GxG style parameters</span>
<span class="ruby-identifier">raw_params</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:object</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_params_classes_valid</span>())
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:file_descriptor</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_params_classes_valid</span>())
<span class="ruby-identifier">default_object</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_params_default_object</span>((<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:object</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:file_descriptor</span>]))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">default_object</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:object</span>] = <span class="ruby-identifier">default_object</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, (<span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span><span class="ruby-operator">::</span><span class="ruby-identifier">process_params_classes_error</span>())
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you MUST specify an Array of :mode flags (as symbols)&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">to_enum</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_mode_flag</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">unless</span> [<span class="ruby-value">:read</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:readwrite</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:overwrite</span>, <span class="ruby-value">:truncate</span>, <span class="ruby-value">:append</span>, <span class="ruby-value">:text</span>, <span class="ruby-value">:binary</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_mode_flag</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">the_mode_flag</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-value">:binary</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-value">:text</span>))
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:text</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># standard MRI style parameters</span>
<span class="ruby-identifier">raw_params</span> = {<span class="ruby-value">:mode</span> <span class="ruby-operator">=&gt;</span> []}
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_params_classes_valid</span>())
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:file_descriptor</span>] = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:object</span>] = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">default_object</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">process_params_default_object</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])
<span class="ruby-keyword">if</span> <span class="ruby-identifier">default_object</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:object</span>] = <span class="ruby-identifier">default_object</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, (<span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span><span class="ruby-operator">::</span><span class="ruby-identifier">process_params_classes_error</span>())
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:mode</span>]
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:mode</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:binmode</span>]
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:binary</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">index</span>(<span class="ruby-value">:text</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:text</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">extern_encode</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">intern_encode</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:encoding</span>]
<span class="ruby-identifier">extern_encode</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:encoding</span>]
<span class="ruby-identifier">intern_encode</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:encoding</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:external_encoding</span>]
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">extern_encode</span>
<span class="ruby-identifier">extern_encode</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:external_encoding</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:internal_encoding</span>]
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">intern_encode</span>
<span class="ruby-identifier">intern_encode</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:internal_encoding</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">extern_encode</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:external_encoding</span>] = <span class="ruby-identifier">extern_encode</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">intern_encode</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:internal_encoding</span>] = <span class="ruby-identifier">intern_encode</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:autoclose</span>]
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:autoclose</span>] = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>][<span class="ruby-value">:autoclose</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-constant">String</span>,<span class="ruby-constant">Numeric</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>]
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you specify :mode as: 2nd parameter (String || Numeric) or an option in 3rd parameter Hash, but not in both&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] = <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
<span class="ruby-identifier">mode_parse</span> = <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">&quot;:&quot;</span>)
<span class="ruby-identifier">mode_spec</span> = <span class="ruby-identifier">mode_parse</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">numeric_values</span>()
<span class="ruby-keyword">if</span> <span class="ruby-identifier">mode_spec</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] = <span class="ruby-identifier">mode_spec</span>[<span class="ruby-value">:integer</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] = <span class="ruby-identifier">mode_parse</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">mode_parse</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">extern_encode</span> = <span class="ruby-identifier">mode_parse</span>[<span class="ruby-value">1</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">mode_parse</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">2</span>
<span class="ruby-identifier">intern_encode</span> = <span class="ruby-identifier">mode_parse</span>[<span class="ruby-value">2</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">intern_encode</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">extern_encode</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-identifier">intern_encode</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># if specified also in options, it is overwritten here by mode inclusion.</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">extern_encode</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">intern_encode</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">extern_encode</span>
<span class="ruby-comment"># raw_params[:encoding] = extern_encode</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:external_encoding</span>] = <span class="ruby-identifier">extern_encode</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:internal_encoding</span>] = <span class="ruby-identifier">extern_encode</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">extern_encode</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:external_encoding</span>] = <span class="ruby-identifier">extern_encode</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">intern_encode</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:internal_encoding</span>] = <span class="ruby-identifier">intern_encode</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># numeric mode arg</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] = <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">unless</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:object</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:file_descriptor</span>])
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you MUST specify an IO :object or a :file_descriptor Fixnum&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>]
<span class="ruby-comment"># decipher :raw_mode</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
<span class="ruby-comment"># Numeric</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:file_descriptor</span>]
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">RDWR</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">RDWR</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:read</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">WRONLY</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">WRONLY</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">RDONLY</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">RDONLY</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">TRUNC</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">TRUNC</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:overwrite</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">APPEND</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">APPEND</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:append</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">CREAT</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">CREAT</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:append</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">RDWR</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">RDWR</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:read</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WRONLY</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WRONLY</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">RDONLY</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">RDONLY</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">TRUNC</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">TRUNC</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:overwrite</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">APPEND</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">APPEND</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:append</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">CREAT</span>) <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">CREAT</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:create</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># String</span>
<span class="ruby-keyword">unless</span> (<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-value">:binary</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-value">:text</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;b&quot;</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:binary</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:text</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;r&quot;</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:read</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;+&quot;</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;w&quot;</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:overwrite</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;+&quot;</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;a&quot;</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:write</span>
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:append</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:raw_mode</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">&quot;+&quot;</span>)
<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:mode</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">:read</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">raw_params</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:raw_mode</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:external_encoding</span>]
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-identifier">constants</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:external_encoding</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;:external_encoding :#{raw_params[:external_encoding].to_s} unsupported&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:internal_encoding</span>]
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-identifier">constants</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">raw_params</span>[<span class="ruby-value">:internal_encoding</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;:internal_encoding :#{raw_params[:internal_encoding].to_s} unsupported&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">raw_params</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,218 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support::Library::IOPrepare - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-process_params_classes_error">#process_params_classes_error</a>
<li ><a href="#method-i-process_params_classes_valid">#process_params_classes_valid</a>
<li ><a href="#method-i-process_params_default_object">#process_params_default_object</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support::Library::IOPrepare">
<h1 id="module-GxG::Support::Library::IOPrepare" class="module">
module GxG::Support::Library::IOPrepare
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-process_params_classes_error" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_params_classes_error</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_params_classes_error-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 761</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_params_classes_error</span>()
<span class="ruby-string">&quot;you MUST specify an IO :object or a :file_descriptor Fixnum&quot;</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process_params_classes_valid" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_params_classes_valid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_params_classes_valid-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 758</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_params_classes_valid</span>()
[<span class="ruby-operator">::</span><span class="ruby-constant">IO</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span>, <span class="ruby-operator">::</span><span class="ruby-constant">StringIO</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">StringIO</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process_params_default_object" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_params_default_object</span><span
class="method-args">(the_object=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_params_default_object-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 755</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_params_default_object</span>(<span class="ruby-identifier">the_object</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-identifier">the_object</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,669 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support::Library::SocketIO - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-recv">#recv</a>
<li ><a href="#method-i-recvmsg">#recvmsg</a>
<li ><a href="#method-i-send">#send</a>
<li ><a href="#method-i-sendmsg">#sendmsg</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support::Library::SocketIO">
<h1 id="module-GxG::Support::Library::SocketIO" class="module">
module GxG::Support::Library::SocketIO
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-recv" class="method-detail ">
<div class="method-heading">
<span class="method-name">recv</span><span
class="method-args">(bytecount=nil, flags=0)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="recv-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 340</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">recv</span>(<span class="ruby-identifier">bytecount</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">flags</span>=<span class="ruby-value">0</span>)
<span class="ruby-comment"># for now, flags ignored. LATER: study Socket.recv message flags in detail</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@before_receive_data</span>)
<span class="ruby-ivar">@before_receive_data</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@after_receive_data</span>)
<span class="ruby-ivar">@after_receive_data</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">bytecount</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">bytecount</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">buffer_limits</span>(<span class="ruby-value">:in</span>,<span class="ruby-value">:socket</span>)[<span class="ruby-value">:initial</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">flags</span> = <span class="ruby-value">0</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fcntl</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_GETFL</span>,<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span> <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>
<span class="ruby-comment"># on Winderz, just to a buffer sized spoon full until done ??</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to recv on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">call</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UNIXServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UNIXSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:socket</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">TCPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">SOCKSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">TCPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:tcp</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UDPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSource</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:udp</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">buffer_size</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">buffer_limits</span>(<span class="ruby-value">:in</span>,<span class="ruby-identifier">whatfor</span>)[<span class="ruby-value">:initial</span>]
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">bytecount</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">bytecount</span> = <span class="ruby-identifier">buffer_size</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">flags</span> = <span class="ruby-value">0</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># millisecond: 1/1000th of a second (reminder)</span>
<span class="ruby-identifier">read_bytes</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">result</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-identifier">result</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-identifier">chunk</span> = <span class="ruby-string">&quot;abc&quot;</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">until</span> (<span class="ruby-identifier">read_bytes</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">bytecount</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">bytesize</span>() <span class="ruby-operator">==</span> <span class="ruby-value">0</span>)
<span class="ruby-keyword">begin</span>
<span class="ruby-keyword">if</span> ((<span class="ruby-identifier">bytecount</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">read_bytes</span>) <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">buffer_size</span>)
<span class="ruby-identifier">chunk</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">recv_nonblock</span>((<span class="ruby-identifier">bytecount</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">read_bytes</span>),<span class="ruby-identifier">flags</span>).<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">chunk</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">recv_nonblock</span>(<span class="ruby-identifier">buffer_size</span>,<span class="ruby-identifier">flags</span>).<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">read_bytes</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">bytesize</span>()
<span class="ruby-keyword">if</span> <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">bytesize</span>() <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">chunk</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitReadable</span>, <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>, <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitReadable</span>, <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># about 10 ms</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>([<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">until</span> <span class="ruby-identifier">selected</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>([<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">call</span>([<span class="ruby-identifier">result</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0</span>,<span class="ruby-keyword">nil</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to recv on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">call</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">original_recv</span>(<span class="ruby-identifier">bytecount</span>.<span class="ruby-identifier">to_i</span>,<span class="ruby-identifier">flags</span>).<span class="ruby-identifier">to_s</span>
<span class="ruby-identifier">result</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">call</span>([<span class="ruby-identifier">result</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0</span>,<span class="ruby-keyword">nil</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-recvmsg" class="method-detail ">
<div class="method-heading">
<span class="method-name">recvmsg</span><span
class="method-args">(max_mesg_length=nil, flags=0, max_control_length=nil, options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="recvmsg-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 281</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">recvmsg</span>(<span class="ruby-identifier">max_mesg_length</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">flags</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">max_control_length</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
<span class="ruby-comment"># for now, flags ignored. LATER: study Socket.recv message flags in detail</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fcntl</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_GETFL</span>,<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span> <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>
<span class="ruby-comment"># on Winderz, just to a buffer sized spoon full until done ??</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to recvmsg on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">call</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">recvmsg_nonblock</span>(<span class="ruby-identifier">max_mesg_length</span>, <span class="ruby-identifier">flags</span>, <span class="ruby-identifier">max_control_length</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-comment">#</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitReadable</span>, <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>, <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitReadable</span>, <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># about 10 ms</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>([<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">until</span> <span class="ruby-identifier">selected</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>([<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">result</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to recvmsg on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">call</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">original_recvmsg</span>(<span class="ruby-identifier">max_mesg_length</span>, <span class="ruby-identifier">flags</span>, <span class="ruby-identifier">max_control_length</span>, <span class="ruby-identifier">options</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">result</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-send" class="method-detail ">
<div class="method-heading">
<span class="method-name">send</span><span
class="method-args">(data=&quot;&quot;, flags=0, destination_socket_address=nil, *controls)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="send-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 181</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">send</span>(<span class="ruby-identifier">data</span>=<span class="ruby-string">&quot;&quot;</span>, <span class="ruby-identifier">flags</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">destination_socket_address</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">controls</span>)
<span class="ruby-comment"># for now, flags ignored. LATER: study Socket.send message flags in detail</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@remote_closed</span>)
<span class="ruby-ivar">@remote_closed</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@write_latency</span>)
<span class="ruby-ivar">@write_latency</span> = {<span class="ruby-value">:low</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:last</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:high</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@before_send_data</span>)
<span class="ruby-ivar">@before_send_data</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@after_send_data</span>)
<span class="ruby-ivar">@after_send_data</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to send on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPIPE</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">data</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-identifier">length</span> = <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">bytesize</span>() <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">length</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">bytesize</span>()
<span class="ruby-comment"># process controls:</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>)
<span class="ruby-identifier">controls</span> = <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">controls</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AF_UNIX</span>, (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:level</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:SOCKET</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:type</span>] <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SCM_RIGHTS</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:data</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fileno</span>))
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">controls</span>.<span class="ruby-identifier">flatten!</span>
<span class="ruby-identifier">controls</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AF_UNIX</span>, (<span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:SOCKET</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SCM_RIGHTS</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fileno</span>))
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">controls</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UNIXServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UNIXSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:socket</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">TCPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">SOCKSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">TCPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:tcp</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UDPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSource</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:udp</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">buffer_size</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">buffer_limits</span>(<span class="ruby-value">:out</span>,<span class="ruby-identifier">whatfor</span>)[<span class="ruby-value">:initial</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">buffer_size</span>
<span class="ruby-identifier">passes</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">passes_needed</span>(<span class="ruby-identifier">length</span>, <span class="ruby-identifier">buffer_size</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">passes</span> = <span class="ruby-value">1</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">total</span> = (<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
<span class="ruby-identifier">starting</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">ending</span> = ([<span class="ruby-identifier">length</span>,<span class="ruby-identifier">buffer_size</span>].<span class="ruby-identifier">min</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
<span class="ruby-comment">#</span>
<span class="ruby-identifier">passes</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment"># if remote end closes during write, raise error.</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>
<span class="ruby-identifier">reading</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">latency_reading</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">write_latency</span>()) <span class="ruby-keyword">do</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">sendmsg</span>(<span class="ruby-identifier">data</span>.<span class="ruby-identifier">slice_bytes</span>(<span class="ruby-identifier">starting</span><span class="ruby-operator">..</span><span class="ruby-identifier">ending</span>),<span class="ruby-identifier">flags</span>,<span class="ruby-identifier">destination_socket_address</span>,<span class="ruby-identifier">controls</span>) <span class="ruby-keyword">or</span> <span class="ruby-ivar">@remote_closed</span>=<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">destination_socket_address</span>
<span class="ruby-identifier">reading</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">latency_reading</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">write_latency</span>()) <span class="ruby-keyword">do</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">original_send</span>(<span class="ruby-identifier">data</span>.<span class="ruby-identifier">slice_bytes</span>(<span class="ruby-identifier">starting</span><span class="ruby-operator">..</span><span class="ruby-identifier">ending</span>),<span class="ruby-identifier">flags</span>,<span class="ruby-identifier">destination_socket_address</span>) <span class="ruby-keyword">or</span> <span class="ruby-ivar">@remote_closed</span>=<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">reading</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">latency_reading</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">write_latency</span>()) <span class="ruby-keyword">do</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">original_send</span>(<span class="ruby-identifier">data</span>.<span class="ruby-identifier">slice_bytes</span>(<span class="ruby-identifier">starting</span><span class="ruby-operator">..</span><span class="ruby-identifier">ending</span>),<span class="ruby-identifier">flags</span>) <span class="ruby-keyword">or</span> <span class="ruby-ivar">@remote_closed</span>=<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@write_latency</span> = <span class="ruby-identifier">reading</span>[<span class="ruby-value">:reading</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">starting</span> = <span class="ruby-identifier">ending</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">ending</span> = (<span class="ruby-identifier">starting</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">buffer_size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">ending</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">total</span>
<span class="ruby-identifier">ending</span> = <span class="ruby-identifier">ending</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">ending</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">total</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPIPE</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">length</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-sendmsg" class="method-detail ">
<div class="method-heading">
<span class="method-name">sendmsg</span><span
class="method-args">(data=&quot;&quot;, flags=0, destination_socket_address=nil, *controls)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="sendmsg-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 8</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sendmsg</span>(<span class="ruby-identifier">data</span>=<span class="ruby-string">&quot;&quot;</span>, <span class="ruby-identifier">flags</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">destination_socket_address</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">controls</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@remote_closed</span>)
<span class="ruby-ivar">@remote_closed</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@write_latency</span>)
<span class="ruby-ivar">@write_latency</span> = {<span class="ruby-value">:low</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:last</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:high</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@before_send_data</span>)
<span class="ruby-ivar">@before_send_data</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@after_send_data</span>)
<span class="ruby-ivar">@after_send_data</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fcntl</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_GETFL</span>,<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span> <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>
<span class="ruby-comment"># on Winderz, just to a buffer sized spoon full until done ??</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to sendmsg on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPIPE</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">data</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-identifier">written_bytes</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">bytesize</span>()
<span class="ruby-comment"># process controls:</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>)
<span class="ruby-identifier">controls</span> = <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">controls</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AF_UNIX</span>, (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:level</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:SOCKET</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:type</span>] <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SCM_RIGHTS</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:data</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fileno</span>))
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">controls</span>.<span class="ruby-identifier">flatten!</span>
<span class="ruby-identifier">controls</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AF_UNIX</span>, (<span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:SOCKET</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SCM_RIGHTS</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fileno</span>))
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you MUST supply ancillary data as a control&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UNIXServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UNIXSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:socket</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">TCPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">SOCKSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">TCPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:tcp</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UDPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSource</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:udp</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">buffer_size</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">buffer_limits</span>(<span class="ruby-value">:out</span>,<span class="ruby-identifier">whatfor</span>)[<span class="ruby-value">:initial</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">written_bytes</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">buffer_size</span>
<span class="ruby-identifier">passes</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">passes_needed</span>(<span class="ruby-identifier">written_bytes</span>, <span class="ruby-identifier">buffer_size</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">passes</span> = <span class="ruby-value">1</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">total</span> = (<span class="ruby-identifier">written_bytes</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
<span class="ruby-identifier">starting</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">ending</span> = ([<span class="ruby-identifier">written_bytes</span>,<span class="ruby-identifier">buffer_size</span>].<span class="ruby-identifier">min</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
<span class="ruby-comment">#</span>
<span class="ruby-identifier">passes</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># if remote end closes during write, raise error by setting @remote_closed and breaking loop.</span>
<span class="ruby-identifier">reading</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">latency_reading</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">write_latency</span>()) <span class="ruby-keyword">do</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">sendmsg_nonblock</span>(<span class="ruby-identifier">data</span>.<span class="ruby-identifier">slice_bytes</span>(<span class="ruby-identifier">starting</span><span class="ruby-operator">..</span><span class="ruby-identifier">ending</span>),<span class="ruby-identifier">flags</span>,<span class="ruby-identifier">destination_socket_address</span>,<span class="ruby-identifier">controls</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@write_latency</span> = <span class="ruby-identifier">reading</span>[<span class="ruby-value">:reading</span>]
<span class="ruby-comment">#</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>, <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EINTR</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EWOULDBLOCK</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EAGAIN</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>(<span class="ruby-keyword">nil</span>,[<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">until</span> <span class="ruby-identifier">selected</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>(<span class="ruby-keyword">nil</span>,[<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">::</span><span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPIPE</span>
<span class="ruby-ivar">@remote_closed</span>=<span class="ruby-keyword">true</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">starting</span> = <span class="ruby-identifier">ending</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">ending</span> = (<span class="ruby-identifier">starting</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">buffer_size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">ending</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">total</span>
<span class="ruby-identifier">ending</span> = <span class="ruby-identifier">ending</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">ending</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">total</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPIPE</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">written_bytes</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to sendmsg on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPIPE</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">data</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">transcode_to_external</span>(<span class="ruby-identifier">data</span>)
<span class="ruby-identifier">written_bytes</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">bytesize</span>()
<span class="ruby-comment"># process controls:</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>)
<span class="ruby-identifier">controls</span> = <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">controls</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AF_UNIX</span>, (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:level</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:SOCKET</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:type</span>] <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SCM_RIGHTS</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">:data</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fileno</span>))
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">controls</span>.<span class="ruby-identifier">flatten!</span>
<span class="ruby-identifier">controls</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AncillaryData</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">AF_UNIX</span>, (<span class="ruby-identifier">controls</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:SOCKET</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SCM_RIGHTS</span>), (<span class="ruby-identifier">controls</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fileno</span>))
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;you MUST supply ancillary data as a control&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UNIXServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UNIXSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:socket</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">TCPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">SOCKSocket</span>, <span class="ruby-operator">::</span><span class="ruby-constant">TCPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:tcp</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">UDPServer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSource</span>, <span class="ruby-operator">::</span><span class="ruby-constant">UDPSocket</span>)
<span class="ruby-identifier">whatfor</span> = <span class="ruby-value">:udp</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">buffer_size</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">buffer_limits</span>(<span class="ruby-value">:out</span>,<span class="ruby-identifier">whatfor</span>)[<span class="ruby-value">:initial</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">written_bytes</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">buffer_size</span>
<span class="ruby-identifier">passes</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">passes_needed</span>(<span class="ruby-identifier">written_bytes</span>, <span class="ruby-identifier">buffer_size</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">passes</span> = <span class="ruby-value">1</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">total</span> = (<span class="ruby-identifier">written_bytes</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
<span class="ruby-identifier">starting</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">ending</span> = ([<span class="ruby-identifier">written_bytes</span>,<span class="ruby-identifier">buffer_size</span>].<span class="ruby-identifier">min</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
<span class="ruby-comment">#</span>
<span class="ruby-identifier">passes</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment"># if remote end closes during write, raise error.</span>
<span class="ruby-identifier">reading</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">latency_reading</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">write_latency</span>()) <span class="ruby-keyword">do</span>
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">original_sendmsg</span>(<span class="ruby-identifier">data</span>.<span class="ruby-identifier">slice_bytes</span>(<span class="ruby-identifier">starting</span><span class="ruby-operator">..</span><span class="ruby-identifier">ending</span>),<span class="ruby-identifier">flags</span>,<span class="ruby-identifier">destination_socket_address</span>,<span class="ruby-identifier">controls</span>) <span class="ruby-keyword">or</span> <span class="ruby-ivar">@remote_closed</span>=<span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-keyword">break</span>
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@write_latency</span> = <span class="ruby-identifier">reading</span>[<span class="ruby-value">:reading</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">starting</span> = <span class="ruby-identifier">ending</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">ending</span> = (<span class="ruby-identifier">starting</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">buffer_size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">ending</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">total</span>
<span class="ruby-identifier">ending</span> = <span class="ruby-identifier">ending</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">ending</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">total</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@remote_closed</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">EPIPE</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">written_bytes</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,203 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support::Library::SocketIORecvFrom - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-recvfrom">#recvfrom</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support::Library::SocketIORecvFrom">
<h1 id="module-GxG::Support::Library::SocketIORecvFrom" class="module">
module GxG::Support::Library::SocketIORecvFrom
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-recvfrom" class="method-detail ">
<div class="method-heading">
<span class="method-name">recvfrom</span><span
class="method-args">(max_mesg_length=nil, flags=0)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Note: Allow aliases or existing recvfrom_nonblock to catch method references. Do not define recvfrom_nonblock here.</p>
<div class="method-source-code" id="recvfrom-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 445</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">recvfrom</span>(<span class="ruby-identifier">max_mesg_length</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">flags</span>=<span class="ruby-value">0</span>)
<span class="ruby-comment"># for now, flags ignored. LATER: study Socket.recv message flags in detail</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">fcntl</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_GETFL</span>,<span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>) <span class="ruby-operator">&amp;</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span> <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">O_NONBLOCK</span>
<span class="ruby-comment"># on Winderz, just to a buffer sized spoon full until done ??</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to recvmsg on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">call</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">recvfrom_nonblock</span>(<span class="ruby-identifier">max_mesg_length</span>, <span class="ruby-identifier">flags</span>)
<span class="ruby-comment">#</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitReadable</span>, <span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>, <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitReadable</span>, <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">WaitWritable</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">begin</span>
<span class="ruby-comment"># about 10 ms</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>([<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">until</span> <span class="ruby-identifier">selected</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-identifier">selected</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-identifier">select</span>([<span class="ruby-keyword">self</span>],<span class="ruby-keyword">nil</span>,<span class="ruby-keyword">nil</span>,<span class="ruby-value">0.010</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">retry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">result</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">closed?</span>()
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IOError</span>, <span class="ruby-string">&quot;attempting to recvmsg on a closed stream&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@before_receive_data</span>.<span class="ruby-identifier">call</span>()
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">original_recvfrom</span>(<span class="ruby-identifier">max_mesg_length</span>, <span class="ruby-identifier">flags</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">result</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:call</span>)
<span class="ruby-ivar">@after_receive_data</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">result</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,218 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support::Library::StringIOPrepare - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-process_params_classes_error">#process_params_classes_error</a>
<li ><a href="#method-i-process_params_classes_valid">#process_params_classes_valid</a>
<li ><a href="#method-i-process_params_default_object">#process_params_default_object</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support::Library::StringIOPrepare">
<h1 id="module-GxG::Support::Library::StringIOPrepare" class="module">
module GxG::Support::Library::StringIOPrepare
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-process_params_classes_error" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_params_classes_error</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_params_classes_error-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 748</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_params_classes_error</span>()
<span class="ruby-string">&quot;you MUST specify a String&quot;</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process_params_classes_valid" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_params_classes_valid</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_params_classes_valid-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 745</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_params_classes_valid</span>()
[<span class="ruby-operator">::</span><span class="ruby-constant">String</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-process_params_default_object" class="method-detail ">
<div class="method-heading">
<span class="method-name">process_params_default_object</span><span
class="method-args">(the_object)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="process_params_default_object-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_io.rb, line 742</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">process_params_default_object</span>(<span class="ruby-identifier">the_object</span>)
<span class="ruby-string">&quot;&quot;</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

View file

@ -0,0 +1,723 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Support::Library::Transcoding - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../../";
var index_rel_prefix = "../../../";
</script>
<script src="../../../js/navigation.js" defer></script>
<script src="../../../js/search.js" defer></script>
<script src="../../../js/search_index.js" defer></script>
<script src="../../../js/searcher.js" defer></script>
<script src="../../../js/darkfish.js" defer></script>
<link href="../../../css/fonts.css" rel="stylesheet">
<link href="../../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../../table_of_contents.html#pages">Pages</a>
<a href="../../../table_of_contents.html#classes">Classes</a>
<a href="../../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-i-convert_to_string">#convert_to_string</a>
<li ><a href="#method-i-field_separator_used">#field_separator_used</a>
<li ><a href="#method-i-newline_option_used">#newline_option_used</a>
<li ><a href="#method-i-newline_used">#newline_used</a>
<li ><a href="#method-i-prepare_conversion_options">#prepare_conversion_options</a>
<li ><a href="#method-i-record_separator_used">#record_separator_used</a>
<li ><a href="#method-i-transcode_to_external">#transcode_to_external</a>
<li ><a href="#method-i-transcode_to_internal">#transcode_to_internal</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Support::Library::Transcoding">
<h1 id="module-GxG::Support::Library::Transcoding" class="module">
module GxG::Support::Library::Transcoding
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-convert_to_string" class="method-detail ">
<div class="method-heading">
<span class="method-name">convert_to_string</span><span
class="method-args">(the_object=nil,encoding=::Encoding.default_external,conversion_options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="convert_to_string-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 214</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">convert_to_string</span>(<span class="ruby-identifier">the_object</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">encoding</span>=<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">default_external</span>,<span class="ruby-identifier">conversion_options</span>={})
<span class="ruby-comment"># return the supplied string, or supported object string data, or UTF_8 codepoint, un-transcoded</span>
<span class="ruby-comment"># encoding is used for when a byte value integer is passed to know what encoding to set.</span>
<span class="ruby-identifier">the_string</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-identifier">encoding</span> <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">default_external</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_object</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
<span class="ruby-identifier">dataset</span> = <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">flatten</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">dataset</span> = [(<span class="ruby-identifier">the_object</span>)]
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">dataset</span>.<span class="ruby-identifier">to_enum</span>(<span class="ruby-value">:each</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">object</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">buffer</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-comment"># find the string content of these classes and pass them for transcoding: Numeric, String, ::IO via gets, ::StringIO via gets, ::GxG::ByteArray</span>
<span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">object</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">IO</span>, <span class="ruby-operator">::</span><span class="ruby-constant">StringIO</span>)
<span class="ruby-comment"># Note: what issues arise when the_object is in binary mode? Also, how does this scale to very large things or files?</span>
<span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">object</span>.<span class="ruby-identifier">gets</span>().<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>)
<span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">object</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Numeric</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">data</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-keyword">if</span> (<span class="ruby-value">0xFFFFFFFF</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">to_i</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">255</span>
<span class="ruby-comment"># interprets as unicode code point</span>
<span class="ruby-identifier">data</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">UTF_8</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># interprets as a char value in its own encoding, no transcoding needed.</span>
<span class="ruby-identifier">data</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-identifier">encoding</span> <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">default_external</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">buffer</span> = (<span class="ruby-identifier">data</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">object</span>.<span class="ruby-identifier">to_i</span>)
<span class="ruby-identifier">data</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># signed integers not supported for char values or codepoints at this time.</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">encoding</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">encoding</span> <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">default_external</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">binmode?</span>())
<span class="ruby-identifier">the_string</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">buffer</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># ::String::transcode_options((encoding || ::Encoding.default_external),buffer.encoding, (conversion_options || {}))</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">binmode?</span>()
<span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">to_enum</span>(<span class="ruby-value">:chars</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_char</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">the_char</span>.<span class="ruby-identifier">to_enum</span>(<span class="ruby-value">:bytes</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_byte</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">the_string</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">the_byte</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">nl_op</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">newline_option_used</span>(<span class="ruby-identifier">conversion_options</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">if</span> <span class="ruby-identifier">nl_op</span>
<span class="ruby-identifier">options</span>[(<span class="ruby-identifier">nl_op</span>)] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">the_string</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">transcode!</span>((<span class="ruby-identifier">encoding</span> <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">default_external</span>),<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">the_string</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-field_separator_used" class="method-detail ">
<div class="method-heading">
<span class="method-name">field_separator_used</span><span
class="method-args">(io_channel=:external)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="field_separator_used-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 162</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">field_separator_used</span>(<span class="ruby-identifier">io_channel</span>=<span class="ruby-value">:external</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@internal_encoding</span>)
<span class="ruby-ivar">@internal_encoding</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@internal_field_separator</span>)
<span class="ruby-ivar">@internal_field_separator</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@external_field_separator</span>)
<span class="ruby-ivar">@external_field_separator</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">field_separator</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">io_channel</span> <span class="ruby-operator">==</span> <span class="ruby-value">:internal</span>
<span class="ruby-identifier">field_separator</span>.<span class="ruby-identifier">force_encoding</span>((<span class="ruby-ivar">@internal_encoding</span> <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>))
<span class="ruby-identifier">field_separator</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-ivar">@internal_field_separator</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">$,</span>).<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">io_channel</span> = <span class="ruby-value">:external</span>
<span class="ruby-identifier">field_separator</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>)
<span class="ruby-identifier">field_separator</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-ivar">@external_field_separator</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">$,</span>).<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">field_separator</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">field_separator</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-newline_option_used" class="method-detail ">
<div class="method-heading">
<span class="method-name">newline_option_used</span><span
class="method-args">(io_channel=:external)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="newline_option_used-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 103</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">newline_option_used</span>(<span class="ruby-identifier">io_channel</span>=<span class="ruby-value">:external</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@conversion_options</span>)
<span class="ruby-ivar">@conversion_options</span> = {<span class="ruby-value">:internal</span> <span class="ruby-operator">=&gt;</span> {}, <span class="ruby-value">:external</span> <span class="ruby-operator">=&gt;</span> {}}
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># determine the correct new_line trancoding option used</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">io_channel</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">options</span> = <span class="ruby-identifier">io_channel</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">options</span> = (<span class="ruby-ivar">@conversion_options</span>[(<span class="ruby-identifier">io_channel</span>.<span class="ruby-identifier">to_sym</span>)] <span class="ruby-operator">||</span> {})
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:cr_newline</span>]
<span class="ruby-value">:cr_newline</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:crlf_newline</span>]
<span class="ruby-value">:crlf_newline</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:universal_newline</span>]
<span class="ruby-value">:universal_newline</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># use nil if none specified</span>
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-newline_used" class="method-detail ">
<div class="method-heading">
<span class="method-name">newline_used</span><span
class="method-args">(io_channel=:external)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="newline_used-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 130</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">newline_used</span>(<span class="ruby-identifier">io_channel</span>=<span class="ruby-value">:external</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@conversion_options</span>)
<span class="ruby-ivar">@conversion_options</span> = {<span class="ruby-value">:internal</span> <span class="ruby-operator">=&gt;</span> {}, <span class="ruby-value">:external</span> <span class="ruby-operator">=&gt;</span> {}}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@internal_encoding</span>)
<span class="ruby-ivar">@internal_encoding</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">newline</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">io_channel</span> <span class="ruby-operator">==</span> <span class="ruby-value">:internal</span>
<span class="ruby-identifier">newline</span>.<span class="ruby-identifier">force_encoding</span>((<span class="ruby-ivar">@internal_encoding</span> <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>))
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">io_channel</span> = <span class="ruby-value">:external</span>
<span class="ruby-identifier">newline</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># determine the correct new_line_separator</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@conversion_options</span>[(<span class="ruby-identifier">io_channel</span>)][<span class="ruby-value">:cr_newline</span>]
<span class="ruby-identifier">newline</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;\r&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@conversion_options</span>[(<span class="ruby-identifier">io_channel</span>)][<span class="ruby-value">:crlf_newline</span>]
<span class="ruby-identifier">newline</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;\r\n&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@conversion_options</span>[(<span class="ruby-identifier">io_channel</span>)][<span class="ruby-value">:universal_newline</span>]
<span class="ruby-identifier">newline</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;\n&quot;</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># use global default if none specified</span>
<span class="ruby-identifier">newline</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">$/</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">newline</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-prepare_conversion_options" class="method-detail ">
<div class="method-heading">
<span class="method-name">prepare_conversion_options</span><span
class="method-args">(options={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Instance Methods</p>
<div class="method-source-code" id="prepare_conversion_options-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 8</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">prepare_conversion_options</span>(<span class="ruby-identifier">options</span>={})
<span class="ruby-comment"># obsoleted by ::String::transcode_options</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;You must pass conversion options parameter as a Hash&quot;</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">new_options</span> = {}
<span class="ruby-comment">#</span>
<span class="ruby-identifier">valid_options</span> = [<span class="ruby-value">:invalid</span>,<span class="ruby-value">:undef</span>,<span class="ruby-value">:replace</span>,<span class="ruby-value">:fallback</span>,<span class="ruby-value">:xml</span>,<span class="ruby-value">:cr_newline</span>,<span class="ruby-value">:crlf_newline</span>,<span class="ruby-value">:universal_newline</span>]
<span class="ruby-comment">#</span>
<span class="ruby-keyword">for</span> <span class="ruby-identifier">the_option_key</span> <span class="ruby-keyword">in</span> <span class="ruby-identifier">valid_options</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[(<span class="ruby-identifier">the_option_key</span>)]
<span class="ruby-comment"># Note Source: http://ruby-doc.org/core-1.9.3/String.html#method-i-encode</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:fallback</span>
<span class="ruby-comment"># Sets the replacement string by the given object for undefined character. The object should be a Hash, a Proc, a Method,</span>
<span class="ruby-comment"># or an object which has [] method. Its key is an undefined character encoded in the source encoding of current transcoder.</span>
<span class="ruby-comment"># Its value can be any encoding until it can be converted into the destination encoding of the transcoder.</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">new_options</span>[<span class="ruby-value">:replace</span>]
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">options</span>[<span class="ruby-value">:fallback</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Struct</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Proc</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Method</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:fallback</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:[]</span>))
<span class="ruby-comment"># if :fallback will not process an Array as mentioned above ... remove :[] respond_to? condition.</span>
<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:fallback</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:fallback</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:invalid</span>
<span class="ruby-comment"># If the value is :replace, encode replaces invalid byte sequences in str with the replacement character. The default is to</span>
<span class="ruby-comment"># raise the Encoding::InvalidByteSequenceError exception</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">new_options</span>[<span class="ruby-value">:fallback</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:invalid</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:replace</span>
<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:invalid</span>] = <span class="ruby-value">:replace</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:undef</span>)
<span class="ruby-comment"># If the value is :replace, encode replaces characters which are undefined in the destination encoding with the replacement character.</span>
<span class="ruby-comment"># The default is to raise the Encoding::UndefinedConversionError.</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">new_options</span>[<span class="ruby-value">:fallback</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:undef</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:replace</span>
<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:undef</span>] = <span class="ruby-value">:replace</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:replace</span>)
<span class="ruby-comment"># Sets the replacement string to the given value. The default replacement string is “uFFFD” for Unicode encoding forms, and “?” otherwise.</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">new_options</span>[<span class="ruby-value">:fallback</span>]
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:replace</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:replace</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:replace</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:xml</span>
<span class="ruby-comment"># The value must be :text or :attr. If the value is :text encode replaces undefined characters with their (upper-case hexadecimal) numeric character</span>
<span class="ruby-comment"># references. ‘&amp;’, ‘&lt;’, and ‘&gt;’ are converted to “&amp;amp;”, “&amp;lt;”, and “&amp;gt;”, respectively. If the value is :attr, encode also quotes the replacement</span>
<span class="ruby-comment"># result (using ‘“’), and replaces ‘”’ with “&amp;quot;”.</span>
<span class="ruby-keyword">if</span> [<span class="ruby-value">:text</span>, <span class="ruby-value">:attr</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:xml</span>])
<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:xml</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:xml</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:cr_newline</span>
<span class="ruby-comment"># Replaces LF (“n”) with CR (“r”) if value is true.</span>
<span class="ruby-keyword">unless</span> (<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:crlf_newline</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">new_options</span>[<span class="ruby-value">:universal_newline</span>])
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[(<span class="ruby-identifier">the_option_key</span>)] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">new_options</span>[(<span class="ruby-identifier">the_option_key</span>)] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:crlf_newline</span>
<span class="ruby-comment"># Replaces LF (“n”) with CRLF (“rn”) if value is true.</span>
<span class="ruby-keyword">unless</span> (<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:cr_newline</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">new_options</span>[<span class="ruby-value">:universal_newline</span>])
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[(<span class="ruby-identifier">the_option_key</span>)] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">new_options</span>[(<span class="ruby-identifier">the_option_key</span>)] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_option_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:universal_newline</span>
<span class="ruby-comment"># Replaces CRLF (“rn”) and CR (“r”) with LF (“n”) if value is true.</span>
<span class="ruby-keyword">unless</span> (<span class="ruby-identifier">new_options</span>[<span class="ruby-value">:cr_newline</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">new_options</span>[<span class="ruby-value">:crlf_newline</span>])
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[(<span class="ruby-identifier">the_option_key</span>)] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
<span class="ruby-identifier">new_options</span>[(<span class="ruby-identifier">the_option_key</span>)] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">pause</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">new_options</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-record_separator_used" class="method-detail ">
<div class="method-heading">
<span class="method-name">record_separator_used</span><span
class="method-args">(io_channel=:external)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="record_separator_used-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 188</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">record_separator_used</span>(<span class="ruby-identifier">io_channel</span>=<span class="ruby-value">:external</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@internal_encoding</span>)
<span class="ruby-ivar">@internal_encoding</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@internal_record_separator</span>)
<span class="ruby-ivar">@internal_record_separator</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@external_record_separator</span>)
<span class="ruby-ivar">@external_record_separator</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">record_separator</span> = <span class="ruby-string">&quot;&quot;</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">io_channel</span> <span class="ruby-operator">==</span> <span class="ruby-value">:internal</span>
<span class="ruby-identifier">record_separator</span>.<span class="ruby-identifier">force_encoding</span>((<span class="ruby-ivar">@internal_encoding</span> <span class="ruby-operator">||</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>))
<span class="ruby-identifier">record_separator</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-ivar">@internal_record_separator</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">$\</span>).<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">io_channel</span> = <span class="ruby-value">:external</span>
<span class="ruby-identifier">record_separator</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>)
<span class="ruby-identifier">record_separator</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-ivar">@external_record_separator</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">$\</span>).<span class="ruby-identifier">to_s</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record_separator</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">record_separator</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-transcode_to_external" class="method-detail ">
<div class="method-heading">
<span class="method-name">transcode_to_external</span><span
class="method-args">(the_string=&quot;&quot;)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>TODO: GxG::StringIO : transcoding methods : tie into conversion-options-set-selector supports (dst-encoding,src-encoding). <a href="../../../Hash.html"><code>Hash</code></a> deep-merge method needed.</p>
<div class="method-source-code" id="transcode_to_external-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 287</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">transcode_to_external</span>(<span class="ruby-identifier">the_string</span>=<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-comment"># return the supplied string, or supported object string data, or UTF_8 codepoint, transcoded</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@conversion_options</span>)
<span class="ruby-ivar">@conversion_options</span> = {<span class="ruby-value">:internal</span> <span class="ruby-operator">=&gt;</span> {}, <span class="ruby-value">:external</span> <span class="ruby-operator">=&gt;</span> {}}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@internal_encoding</span>)
<span class="ruby-ivar">@internal_encoding</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-comment"># External conversion options will have to be dynamically generated upon transcode_to_external as *any* encoding is possible, not just internal_encoding</span>
<span class="ruby-identifier">the_string</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">convert_to_string</span>(<span class="ruby-identifier">the_string</span>,<span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>,<span class="ruby-ivar">@conversion_options</span>[<span class="ruby-value">:external</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">binmode?</span>()
<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@internal_encoding</span>
<span class="ruby-identifier">options</span> = <span class="ruby-operator">::</span><span class="ruby-constant">String</span><span class="ruby-operator">::</span><span class="ruby-identifier">transcode_options</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>,<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span>,<span class="ruby-ivar">@conversion_options</span>[<span class="ruby-value">:external</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># External conversion options will have to be dynamically generated upon transcode_to_external as *any* encoding is possible, not just internal_encoding</span>
<span class="ruby-identifier">nl_op</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">newline_option_used</span>(<span class="ruby-value">:external</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">if</span> <span class="ruby-identifier">nl_op</span>
<span class="ruby-identifier">options</span>[(<span class="ruby-identifier">nl_op</span>)] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">options</span> = <span class="ruby-operator">::</span><span class="ruby-constant">String</span><span class="ruby-operator">::</span><span class="ruby-identifier">transcode_options</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>,<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">transcode!</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">the_string</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-transcode_to_internal" class="method-detail ">
<div class="method-heading">
<span class="method-name">transcode_to_internal</span><span
class="method-args">(the_string=&quot;&quot;)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="transcode_to_internal-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_transcode.rb, line 324</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">transcode_to_internal</span>(<span class="ruby-identifier">the_string</span>=<span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-comment"># return the supplied string, or supported object string data, or UTF_8 codepoint, transcoded</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@conversion_options</span>)
<span class="ruby-ivar">@conversion_options</span> = {<span class="ruby-value">:internal</span> <span class="ruby-operator">=&gt;</span> {}, <span class="ruby-value">:external</span> <span class="ruby-operator">=&gt;</span> {}}
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">instance_variable_defined?</span>(<span class="ruby-value">:@internal_encoding</span>)
<span class="ruby-ivar">@internal_encoding</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> (<span class="ruby-ivar">@internal_encoding</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">binmode?</span>())
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
<span class="ruby-identifier">the_string</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">convert_to_string</span>(<span class="ruby-identifier">the_string</span>,<span class="ruby-ivar">@internal_encoding</span>,<span class="ruby-ivar">@conversion_options</span>[<span class="ruby-value">:internal</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@internal_encoding</span> <span class="ruby-operator">==</span> <span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>
<span class="ruby-comment"># for cases where the external encoding is anything but binary, but the internal is set to BINARY.</span>
<span class="ruby-comment"># instead of actually transcoding something char by char into binary - just sets the encoding and filters for newline settings.</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>)
<span class="ruby-identifier">nl_op</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">newline_option_used</span>(<span class="ruby-value">:internal</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">if</span> <span class="ruby-identifier">nl_op</span>
<span class="ruby-identifier">options</span>[(<span class="ruby-identifier">nl_op</span>)] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">the_string</span> = <span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encode</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>,<span class="ruby-operator">::</span><span class="ruby-constant">Encoding</span><span class="ruby-operator">::</span><span class="ruby-constant">ASCII_8BIT</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@internal_encoding</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">external_encoding</span>
<span class="ruby-identifier">options</span> = <span class="ruby-operator">::</span><span class="ruby-constant">String</span><span class="ruby-operator">::</span><span class="ruby-identifier">transcode_options</span>(<span class="ruby-ivar">@internal_encoding</span>,<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span>,<span class="ruby-ivar">@conversion_options</span>[<span class="ruby-value">:internal</span>])
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">nl_op</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">newline_option_used</span>(<span class="ruby-value">:internal</span>)
<span class="ruby-identifier">options</span> = {}
<span class="ruby-keyword">if</span> <span class="ruby-identifier">nl_op</span>
<span class="ruby-identifier">options</span>[(<span class="ruby-identifier">nl_op</span>)] = <span class="ruby-keyword">true</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">options</span> = <span class="ruby-operator">::</span><span class="ruby-constant">String</span><span class="ruby-operator">::</span><span class="ruby-identifier">transcode_options</span>(<span class="ruby-ivar">@internal_encoding</span>,<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">encoding</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">the_string</span>.<span class="ruby-identifier">transcode!</span>(<span class="ruby-ivar">@internal_encoding</span>,<span class="ruby-identifier">options</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">the_string</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">transcode_to_external</span>(<span class="ruby-identifier">the_string</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">the_string</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

File diff suppressed because it is too large Load diff

419
doc/GxG/Tuple.html Normal file
View file

@ -0,0 +1,419 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Tuple - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a>
<li ><a href="#method-i-inspect">#inspect</a>
<li ><a href="#method-i-key">#key</a>
<li ><a href="#method-i-key-3D">#key=</a>
<li ><a href="#method-i-to_s">#to_s</a>
<li ><a href="#method-i-value">#value</a>
<li ><a href="#method-i-value-3D">#value=</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Tuple">
<h1 id="class-GxG::Tuple" class="class">
class GxG::Tuple
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(key=nil,value=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>Inspired by Python&#39;s <a href="Tuple.html"><code>Tuple</code></a> class, in this case: allows any object to be a key for any other object Monkey-patch notes: <a href="http://stackoverflow.com/questions/4470108/when-monkey-patching-a-method-can-you-call-the-overridden-method-from-the-new-i">stackoverflow.com/questions/4470108/when-monkey-patching-a-method-can-you-call-the-overridden-method-from-the-new-i</a> (Array integration)</p>
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 397</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">key</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">value</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-ivar">@thread_safety</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
<span class="ruby-ivar">@key</span> = <span class="ruby-identifier">key</span>
<span class="ruby-ivar">@value</span> = <span class="ruby-identifier">value</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-3C-3D-3E" class="method-detail ">
<div class="method-heading">
<span class="method-name">&lt;=&gt;</span><span
class="method-args">(other_value=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="3C-3D-3E-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 417</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">&lt;=&gt;</span>(<span class="ruby-identifier">other_value</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">other_value</span>.<span class="ruby-identifier">respone_to?</span>(<span class="ruby-value">:&lt;=&gt;</span>)
<span class="ruby-keyword">if</span> <span class="ruby-identifier">other_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Tuple</span>)
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@value</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other_value</span>.<span class="ruby-identifier">value</span> }
<span class="ruby-keyword">else</span>
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@value</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other_value</span> }
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-comment"># taking liberties here, if other object does not support compare, then this obj is construed as greater than. (bias)</span>
<span class="ruby-value">1</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-inspect" class="method-detail ">
<div class="method-heading">
<span class="method-name">inspect</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="inspect-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 432</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>()
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-node">&quot;#{@key.inspect} =&gt; #{@value.inspect}&quot;</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-key" class="method-detail ">
<div class="method-heading">
<span class="method-name">key</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="key-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 403</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">key</span>()
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@key</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-key-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">key=</span><span
class="method-args">(new_key=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="key-3D-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 406</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">key=</span> (<span class="ruby-identifier">new_key</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@key</span> = <span class="ruby-identifier">new_key</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-to_s" class="method-detail ">
<div class="method-heading">
<span class="method-name">to_s</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="to_s-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 429</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_s</span>()
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@value</span>.<span class="ruby-identifier">to_s</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-value" class="method-detail ">
<div class="method-heading">
<span class="method-name">value</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="value-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 410</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">value</span>()
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@value</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-value-3D" class="method-detail ">
<div class="method-heading">
<span class="method-name">value=</span><span
class="method-args">(new_value=nil)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="value-3D-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 413</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">value=</span> (<span class="ruby-identifier">new_value</span>=<span class="ruby-keyword">nil</span>)
<span class="ruby-ivar">@thread_safety</span>.<span class="ruby-identifier">synchronize</span> { <span class="ruby-ivar">@value</span> = <span class="ruby-identifier">new_value</span> }
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

266
doc/GxG/Units.html Normal file
View file

@ -0,0 +1,266 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Units - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-interpret_units">::interpret_units</a>
<li ><a href="#method-c-refresh_units_registry">::refresh_units_registry</a>
<li ><a href="#method-c-unit_interpreters">::unit_interpreters</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Units">
<h1 id="module-GxG::Units" class="module">
module GxG::Units
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-interpret_units" class="method-detail ">
<div class="method-heading">
<span class="method-name">interpret_units</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="interpret_units-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_units.rb, line 40</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">interpret_units</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-comment"># {:text =&gt; quanta,:categories =&gt; categories,:locale =&gt; locale}</span>
<span class="ruby-identifier">quanta_string</span> = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:text</span>] <span class="ruby-operator">||</span> <span class="ruby-string">&quot;&quot;</span>)
<span class="ruby-identifier">categories</span> = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:categories</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:any</span>)
<span class="ruby-identifier">locale</span> = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:locale</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:en_US</span>)
<span class="ruby-identifier">numeric_base</span> = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:base</span>] <span class="ruby-operator">||</span> <span class="ruby-value">10</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">categories</span> <span class="ruby-operator">==</span> <span class="ruby-value">:any</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">categories</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
<span class="ruby-identifier">categories</span> = [(<span class="ruby-identifier">categories</span>)]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">results</span> = []
<span class="ruby-identifier">@@interpreters</span>.<span class="ruby-identifier">to_enum</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">interpreter</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">entry</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">categories</span> <span class="ruby-operator">==</span> <span class="ruby-value">:any</span>
<span class="ruby-identifier">entry</span> = <span class="ruby-identifier">interpreter</span><span class="ruby-operator">::</span><span class="ruby-identifier">interpret</span>(<span class="ruby-identifier">quanta_string</span>.<span class="ruby-identifier">to_s</span>,<span class="ruby-identifier">locale</span>,<span class="ruby-identifier">numeric_base</span>)
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">categories</span>.<span class="ruby-identifier">to_enum</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">category</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">interpreter</span><span class="ruby-operator">::</span><span class="ruby-identifier">categories</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">category</span>)
<span class="ruby-identifier">entry</span> = <span class="ruby-identifier">interpreter</span>.<span class="ruby-identifier">interpret</span>(<span class="ruby-identifier">quanta_string</span>.<span class="ruby-identifier">to_s</span>,<span class="ruby-identifier">locale</span>,<span class="ruby-identifier">numeric_base</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>
<span class="ruby-identifier">results</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">entry</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
{<span class="ruby-value">:result</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">results</span>}
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-refresh_units_registry" class="method-detail ">
<div class="method-heading">
<span class="method-name">refresh_units_registry</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="refresh_units_registry-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_units.rb, line 35</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">refresh_units_registry</span>()
<span class="ruby-comment"># SOMEDAY: Thread-safety?</span>
<span class="ruby-identifier">@@interpreters</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">unit_interpreters</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-unit_interpreters" class="method-detail ">
<div class="method-heading">
<span class="method-name">unit_interpreters</span><span
class="method-args">(categories=:any)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<p>this module is used for interpreting text into denominations and multipliers., and general support for various units of measure</p>
<div class="method-source-code" id="unit_interpreters-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_units.rb, line 10</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">unit_interpreters</span>(<span class="ruby-identifier">categories</span>=<span class="ruby-value">:any</span>)
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">categories</span> <span class="ruby-operator">==</span> <span class="ruby-value">:any</span>
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">categories</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
<span class="ruby-identifier">categories</span> = [(<span class="ruby-identifier">categories</span>)]
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">unit_list</span> = []
<span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Units</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">to_enum</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">unit_handler</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">unit_handler</span> = <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Units</span>.<span class="ruby-identifier">const_get</span>(<span class="ruby-identifier">unit_handler</span>)
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">unit_handler</span>.<span class="ruby-identifier">is_any?</span>([<span class="ruby-constant">Class</span>, <span class="ruby-constant">Module</span>]) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">unit_handler</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:interpret</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">unit_handler</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:categories</span>))
<span class="ruby-keyword">if</span> <span class="ruby-identifier">categories</span> <span class="ruby-operator">==</span> <span class="ruby-value">:any</span>
<span class="ruby-identifier">unit_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">unit_handler</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">categories</span>.<span class="ruby-identifier">to_enum</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">category</span><span class="ruby-operator">|</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">unit_handler</span><span class="ruby-operator">::</span><span class="ruby-identifier">categories</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">category</span>)
<span class="ruby-identifier">unit_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">unit_handler</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-identifier">unit_list</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

97
doc/GxG/Units/Bits.html Normal file
View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Units::Bits - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Units::Bits">
<h1 id="module-GxG::Units::Bits" class="module">
module GxG::Units::Bits
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

221
doc/GxG/Units/Bytes.html Normal file
View file

@ -0,0 +1,221 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>module GxG::Units::Bytes - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../../";
var index_rel_prefix = "../../";
</script>
<script src="../../js/navigation.js" defer></script>
<script src="../../js/search.js" defer></script>
<script src="../../js/search_index.js" defer></script>
<script src="../../js/searcher.js" defer></script>
<script src="../../js/darkfish.js" defer></script>
<link href="../../css/fonts.css" rel="stylesheet">
<link href="../../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="module">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../../table_of_contents.html#pages">Pages</a>
<a href="../../table_of_contents.html#classes">Classes</a>
<a href="../../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-categories">::categories</a>
<li ><a href="#method-c-interpret">::interpret</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="module-GxG::Units::Bytes">
<h1 id="module-GxG::Units::Bytes" class="module">
module GxG::Units::Bytes
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-categories" class="method-detail ">
<div class="method-heading">
<span class="method-name">categories</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="categories-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_units.rb, line 73</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">categories</span>()
[<span class="ruby-value">:numeric</span>, <span class="ruby-value">:byte</span>, <span class="ruby-value">:memory</span>, <span class="ruby-value">:storage</span>, <span class="ruby-value">:computer</span>]
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-c-interpret" class="method-detail ">
<div class="method-heading">
<span class="method-name">interpret</span><span
class="method-args">(quanta_string=&quot;&quot;,interpret_for_locale=:en_US,interpret_for_numeric_base=10)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="interpret-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_units.rb, line 76</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">interpret</span>(<span class="ruby-identifier">quanta_string</span>=<span class="ruby-string">&quot;&quot;</span>,<span class="ruby-identifier">interpret_for_locale</span>=<span class="ruby-value">:en_US</span>,<span class="ruby-identifier">interpret_for_numeric_base</span>=<span class="ruby-value">10</span>)
<span class="ruby-identifier">multiplier</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">quanta_string</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>
<span class="ruby-comment"># Attribution: http://whatsabyte.com/</span>
<span class="ruby-comment"># Attribution: https://en.wikipedia.org/wiki/Exabyte</span>
<span class="ruby-comment"># Note: I am electing to count along the 1024 (to the power) rule. Hard drive manufacturers can kiss my rosey-red,</span>
<span class="ruby-comment"># I&#39;ll not bugger my enumeration standard for their bloody sales force. :P Thus:</span>
<span class="ruby-comment"># I&#39;ve attempted to include the IS and IEC terms and abbreviations.</span>
<span class="ruby-comment"># LATER: add ability to distinguish case: Kb = kiloBIT, KB = KiloBYTE, etc</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:byte</span>, <span class="ruby-value">:bytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:kb</span>, <span class="ruby-value">:kib</span>, <span class="ruby-value">:kilobyte</span>, <span class="ruby-value">:kilobytes</span>, <span class="ruby-value">:kibibyte</span>, <span class="ruby-value">:kibibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">1</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:mb</span>, <span class="ruby-value">:mib</span>, <span class="ruby-value">:megabyte</span>, <span class="ruby-value">:megabytes</span>, <span class="ruby-value">:mebibyte</span>, <span class="ruby-value">:mebibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">2</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:gb</span>, <span class="ruby-value">:gib</span>, <span class="ruby-value">:gigabyte</span>, <span class="ruby-value">:gigabytes</span>, <span class="ruby-value">:gibibyte</span>, <span class="ruby-value">:gibibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">3</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:tb</span>, <span class="ruby-value">:tib</span>, <span class="ruby-value">:terabyte</span>, <span class="ruby-value">:terabytes</span>, <span class="ruby-value">:tebibyte</span>, <span class="ruby-value">:tebibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">4</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:pb</span>, <span class="ruby-value">:pib</span>, <span class="ruby-value">:petabyte</span>, <span class="ruby-value">:petabytes</span>, <span class="ruby-value">:pebibyte</span>, <span class="ruby-value">:pebibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">5</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:eb</span>, <span class="ruby-value">:eib</span>, <span class="ruby-value">:exobyte</span>, <span class="ruby-value">:exobytes</span>, <span class="ruby-value">:exbibyte</span>, <span class="ruby-value">:exbibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">6</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:zb</span>, <span class="ruby-value">:zib</span>, <span class="ruby-value">:zettabyte</span>, <span class="ruby-value">:zettabytes</span>, <span class="ruby-value">:zebibyte</span>, <span class="ruby-value">:zebibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">7</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:yb</span>, <span class="ruby-value">:yib</span>, <span class="ruby-value">:yottabyte</span>, <span class="ruby-value">:yottabytes</span>, <span class="ruby-value">:yobibyte</span>, <span class="ruby-value">:yobibytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">8</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:bb</span>, <span class="ruby-value">:bib</span>, <span class="ruby-value">:brontobyte</span>, <span class="ruby-value">:brontobytes</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">9</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:geopbyte</span>, <span class="ruby-value">:geopbytes</span>
<span class="ruby-comment"># TODO: GeopByte: need to find missing SI and IEC abbreviations</span>
<span class="ruby-identifier">multiplier</span> = <span class="ruby-value">1024</span> <span class="ruby-operator">**</span> <span class="ruby-value">10</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">multiplier</span>
{<span class="ruby-value">:quantum</span> <span class="ruby-operator">=&gt;</span> {<span class="ruby-value">:byte</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">multiplier</span>}, <span class="ruby-value">:attributes</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">nil</span>}
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>

471
doc/GxG/Version.html Normal file
View file

@ -0,0 +1,471 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>class GxG::Version - RDoc Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "../";
var index_rel_prefix = "../";
</script>
<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>
<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="class">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="../index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="../table_of_contents.html#pages">Pages</a>
<a href="../table_of_contents.html#classes">Classes</a>
<a href="../table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div id="class-metadata">
<div id="parent-class-section" class="nav-section">
<h3>Parent</h3>
<p class="link"><a href="../Object.html">Object</a>
</div>
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
<h3>Methods</h3>
<ul class="link-list" role="directory">
<li ><a href="#method-c-new">::new</a>
<li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a>
<li ><a href="#method-i-encoded_value">#encoded_value</a>
<li ><a href="#method-i-increment">#increment</a>
<li ><a href="#method-i-inspect">#inspect</a>
<li ><a href="#method-i-to_s">#to_s</a>
<li ><a href="#method-i-value">#value</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-labelledby="class-GxG::Version">
<h1 id="class-GxG::Version" class="class">
class GxG::Version
</h1>
<section class="description">
</section>
<section id="5Buntitled-5D" class="documentation-section">
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Class Methods</h3>
</header>
<div id="method-c-new" class="method-detail ">
<div class="method-heading">
<span class="method-name">new</span><span
class="method-args">(params={})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="new-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 7</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">params</span>={})
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">params</span> = {<span class="ruby-value">:interpret</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">params</span>.<span class="ruby-identifier">to_s</span>)}
<span class="ruby-keyword">end</span>
<span class="ruby-ivar">@encoded_value</span> = <span class="ruby-identifier">encode</span>(<span class="ruby-identifier">params</span>)
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
<header>
<h3>Public Instance Methods</h3>
</header>
<div id="method-i-3C-3D-3E" class="method-detail ">
<div class="method-heading">
<span class="method-name">&lt;=&gt;</span><span
class="method-args">(other)</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="3C-3D-3E-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 19</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">&lt;=&gt;</span>(<span class="ruby-identifier">other</span>)
<span class="ruby-keyword">return</span> <span class="ruby-ivar">@encoded_value</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">encoded_value</span>()
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-encoded_value" class="method-detail ">
<div class="method-heading">
<span class="method-name">encoded_value</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="encoded_value-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 16</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">encoded_value</span>()
<span class="ruby-ivar">@encoded_value</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-increment" class="method-detail ">
<div class="method-heading">
<span class="method-name">increment</span><span
class="method-args">(params={:revision =&gt; 1})</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="increment-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 28</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">increment</span>(<span class="ruby-identifier">params</span>={<span class="ruby-value">:revision</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-value">1</span>})
<span class="ruby-identifier">current</span> = <span class="ruby-identifier">decode</span>({<span class="ruby-value">:value</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@encoded_value</span>})
<span class="ruby-keyword">if</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:phase</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
<span class="ruby-identifier">numeric_phase</span> = <span class="ruby-identifier">current</span>[<span class="ruby-value">:phase</span>][<span class="ruby-value">:candidate</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:phase</span>]
<span class="ruby-keyword">when</span> <span class="ruby-value">:alpha</span>
<span class="ruby-identifier">numeric_phase</span> = <span class="ruby-value">0</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:beta</span>
<span class="ruby-identifier">numeric_phase</span> = <span class="ruby-value">1</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:release</span>
<span class="ruby-identifier">numeric_phase</span> = <span class="ruby-value">99</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:phase</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">phase_increment</span> = <span class="ruby-identifier">params</span>[<span class="ruby-value">:phase</span>]
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">phase_increment</span> = <span class="ruby-value">0</span>
<span class="ruby-keyword">end</span>
<span class="ruby-identifier">new_value</span> = {}
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:revision</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">params</span>[<span class="ruby-value">:revision</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:revision</span>]) <span class="ruby-operator">&gt;</span> <span class="ruby-value">99999</span>
<span class="ruby-identifier">params</span>[<span class="ruby-value">:patch_level</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-value">:patch_level</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:revision</span>] = <span class="ruby-value">0</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:revision</span>] = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:revision</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:revision</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:revision</span>] = <span class="ruby-identifier">current</span>[<span class="ruby-value">:revision</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:patch_level</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">params</span>[<span class="ruby-value">:patch_level</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:patch_level</span>]) <span class="ruby-operator">&gt;</span> <span class="ruby-value">9999</span>
<span class="ruby-identifier">phase_increment</span> = <span class="ruby-identifier">phase_increment</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:patch_level</span>] = <span class="ruby-value">0</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:patch_level</span>] = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:patch_level</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:patch_level</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:patch_level</span>] = <span class="ruby-identifier">current</span>[<span class="ruby-value">:patch_level</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">phase_increment</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">phase_increment</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">numeric_phase</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">99</span>
<span class="ruby-identifier">params</span>[<span class="ruby-value">:tiny</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-value">:tiny</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] = <span class="ruby-value">99</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] = (<span class="ruby-identifier">phase_increment</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">numeric_phase</span>)
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] = <span class="ruby-identifier">numeric_phase</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:tiny</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">params</span>[<span class="ruby-value">:tiny</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:tiny</span>]) <span class="ruby-operator">&gt;</span> <span class="ruby-value">999</span>
<span class="ruby-identifier">params</span>[<span class="ruby-value">:minor</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-value">:minor</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:tiny</span>] = <span class="ruby-value">0</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:tiny</span>] = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:tiny</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:tiny</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:tiny</span>] = <span class="ruby-identifier">current</span>[<span class="ruby-value">:tiny</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:minor</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">params</span>[<span class="ruby-value">:minor</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:minor</span>]) <span class="ruby-operator">&gt;</span> <span class="ruby-value">999</span>
<span class="ruby-identifier">params</span>[<span class="ruby-value">:major</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-value">:major</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:minor</span>] = <span class="ruby-value">0</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:minor</span>] = (<span class="ruby-identifier">params</span>[<span class="ruby-value">:minor</span>].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">current</span>[<span class="ruby-value">:minor</span>])
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:minor</span>] = <span class="ruby-identifier">current</span>[<span class="ruby-value">:minor</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-keyword">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:major</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:major</span>] = <span class="ruby-identifier">current</span>[<span class="ruby-value">:major</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:major</span>].<span class="ruby-identifier">to_i</span>
<span class="ruby-keyword">else</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:major</span>] = <span class="ruby-identifier">current</span>[<span class="ruby-value">:major</span>]
<span class="ruby-keyword">end</span>
<span class="ruby-comment"># convert phase numeric value to Symbol / Hash</span>
<span class="ruby-keyword">if</span> (<span class="ruby-value">2</span><span class="ruby-operator">..</span><span class="ruby-value">98</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>])
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] = {<span class="ruby-value">:candidate</span> <span class="ruby-operator">=&gt;</span> (<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] <span class="ruby-operator">-</span> <span class="ruby-value">2</span>)}
<span class="ruby-keyword">else</span>
<span class="ruby-keyword">case</span> <span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>]
<span class="ruby-keyword">when</span> <span class="ruby-value">0</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] = <span class="ruby-value">:alpha</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] = <span class="ruby-value">:beta</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">99</span>
<span class="ruby-identifier">new_value</span>[<span class="ruby-value">:phase</span>] = <span class="ruby-value">:release</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
<span class="ruby-comment">#</span>
<span class="ruby-ivar">@encoded_value</span> = <span class="ruby-identifier">encode</span>(<span class="ruby-identifier">new_value</span>)
<span class="ruby-keyword">self</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-inspect" class="method-detail ">
<div class="method-heading">
<span class="method-name">inspect</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="inspect-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 25</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>()
<span class="ruby-identifier">value</span>.<span class="ruby-identifier">inspect</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-to_s" class="method-detail ">
<div class="method-heading">
<span class="method-name">to_s</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="to_s-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 22</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_s</span>()
<span class="ruby-identifier">value</span>.<span class="ruby-identifier">inspect</span>
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
<div id="method-i-value" class="method-detail ">
<div class="method-heading">
<span class="method-name">value</span><span
class="method-args">()</span>
<span class="method-click-advice">click to toggle source</span>
</div>
<div class="method-description">
<div class="method-source-code" id="value-source">
<pre><span class="ruby-comment"># File lib/gxg/gxg_elements.rb, line 13</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">value</span>()
<span class="ruby-identifier">decode</span>({<span class="ruby-value">:value</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-ivar">@encoded_value</span>})
<span class="ruby-keyword">end</span></pre>
</div>
</div>
</div>
</section>
</section>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>