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

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

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

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


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

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


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

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

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

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

    <div id="content"><h1>Class: Ballast::Service
  
  
  
</h1>

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

<h2>Overview</h2><div class="docstring">
  <div class="discussion">
    <p>A class which implements a common abstraction for services.</p>


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

</div><h2>Defined Under Namespace</h2>
<p class="children">
  
    
  
    
      <strong class="classes">Classes:</strong> <span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span>
    
  
</p>




  <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
  <ul class="summary">
    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#owner-instance_method" title="#owner (instance method)">- (Object|NilClass) <strong>owner</strong> </a>
    

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

  
    <span class="summary_desc"><div class='inline'><p>The owner of this service.</p>
</div></span>
  
</li>

    
  </ul>




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

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#call-class_method" title="call (class method)">+ (Response) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &amp;block) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Invokes one of the operations exposed by the service.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#fail%21-class_method" title="fail! (class method)">+ (Object) <strong>fail!</strong>(details, on_validation: false) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Marks the failure of the operation.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#handle_failure-class_method" title="handle_failure (class method)">+ (Response) <strong>handle_failure</strong>(failure, raise_errors) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Handles a failure.</p>
</div></span>
  
</li>

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

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#call-instance_method" title="#call (instance method)">- (Response) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &amp;block) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Invokes one of the operations exposed by the service.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#fail%21-instance_method" title="#fail! (instance method)">- (Object) <strong>fail!</strong>(details, on_validation: false) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Marks the failure of the operation.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#initialize-instance_method" title="#initialize (instance method)">- (Service) <strong>initialize</strong>(owner = nil) </a>
    

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

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

      
    </ul>
  

<div id="constructor_details" class="method_details_list">
  <h2>Constructor Details</h2>
  
    <div class="method_details first">
  <h3 class="signature first" id="initialize-instance_method">
  
    - (<tt><span class='object_link'><a href="" title="Ballast::Service (class)">Service</a></span></tt>) <strong>initialize</strong>(owner = nil) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Creates a service object.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>owner</span>
      
      
        <span class='type'>(<tt>Object|NilClass</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>nil</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The owner of the service.</p>
</div>
      
    </li>
  
</ul>


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


109
110
111</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 109</span>

<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_owner'>owner</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
  <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
  
</div>

  <div id="instance_attr_details" class="attr_details">
    <h2>Instance Attribute Details</h2>
    
      
      <span id=""></span>
      <div class="method_details first">
  <h3 class="signature first" id="owner-instance_method">
  
    - (<tt>Object|NilClass</tt>) <strong>owner</strong>  <span class="extras">(readonly)</span>
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The owner of this service.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Object|NilClass</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The owner of this service.</p>
</div>
      
    </li>
  
</ul>

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


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 11</span>

<span class='kw'>class</span> <span class='const'>Service</span>
  <span class='comment'># A response to a service invocation.
</span>  <span class='comment'>#
</span>  <span class='comment'># @attribute [r] success
</span>  <span class='comment'>#   @return [Boolean] Whether the invocation was successful or not.
</span>  <span class='comment'># @attribute [r] data
</span>  <span class='comment'>#   @return [Object] The data returned by the operation.
</span>  <span class='comment'># @attribute [r] errors
</span>  <span class='comment'>#   @return [Array] The errors returned by the operation.
</span>  <span class='kw'>class</span> <span class='const'>Response</span>
    <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:success</span><span class='comma'>,</span> <span class='symbol'>:data</span><span class='comma'>,</span> <span class='symbol'>:errors</span>

    <span class='comment'># Creates a new service response.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param success [Boolean] Whether the invocation was successful or not.
</span>    <span class='comment'># @param data [Object|NilClass] The data returned by the operation.
</span>    <span class='comment'># @param errors [Array|NilClass] The errors returned by the operation.
</span>    <span class='comment'># @param error [Object|NilClass] Alias for errors. *Ignored if `errors` is present.*
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>errors:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_errors'>errors</span> <span class='op'>||=</span> <span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span>

      <span class='ivar'>@success</span> <span class='op'>=</span> <span class='id identifier rubyid_success'>success</span><span class='period'>.</span><span class='id identifier rubyid_to_boolean'>to_boolean</span>
      <span class='ivar'>@data</span> <span class='op'>=</span> <span class='id identifier rubyid_data'>data</span>
      <span class='ivar'>@errors</span> <span class='op'>=</span> <span class='id identifier rubyid_errors'>errors</span><span class='period'>.</span><span class='id identifier rubyid_ensure_array'>ensure_array</span><span class='lparen'>(</span><span class='label'>no_duplicates:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>compact:</span> <span class='kw'>true</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='comment'># Returns whether the invocation was successful or not.
</span>    <span class='comment'>#
</span>    <span class='comment'># @return [Boolean] `true` if the service invocation was successful, `false` otherwise.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_success?'>success?</span>
      <span class='comment'># TODO@PI: Ignore rubocop on this
</span>      <span class='ivar'>@success</span>
    <span class='kw'>end</span>
    <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:successful?</span><span class='comma'>,</span> <span class='symbol'>:success?</span>
    <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:succeeded?</span><span class='comma'>,</span> <span class='symbol'>:success?</span>

    <span class='comment'># Returns whether the invocation failed or not.
</span>    <span class='comment'>#
</span>    <span class='comment'># @return [Boolean] `true` if the service invocation failed, `false` otherwise.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_fail?'>fail?</span>
      <span class='op'>!</span><span class='ivar'>@success</span>
    <span class='kw'>end</span>
    <span class='id identifier rubyid_alias_method'>alias_method</span> <span class='symbol'>:failed?</span><span class='comma'>,</span> <span class='symbol'>:fail?</span>

    <span class='comment'># Returns the first error returned by the operation.
</span>    <span class='comment'>#
</span>    <span class='comment'># @return [Object] The first error returned by the service.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_error'>error</span>
      <span class='ivar'>@errors</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
    <span class='kw'>end</span>

    <span class='comment'># Converts this response to a AJAX response.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param transport [Object|NilClass] The transport to use for sending. Must respond to `render`, `params`, `request.format` and `performed?`.
</span>    <span class='comment'># @return [AjaxResponse] The AJAX response, which will include only the first error.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_as_ajax_response'>as_ajax_response</span><span class='lparen'>(</span><span class='id identifier rubyid_transport'>transport</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='id identifier rubyid_error_message'>error_message</span> <span class='op'>=</span>
          <span class='kw'>if</span> <span class='id identifier rubyid_successful?'>successful?</span>
            <span class='lbracket'>[</span><span class='symbol'>:ok</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rbracket'>]</span>
          <span class='kw'>elsif</span> <span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
            <span class='lbracket'>[</span><span class='id identifier rubyid_error'>error</span><span class='lbracket'>[</span><span class='symbol'>:status</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='lbracket'>[</span><span class='symbol'>:error</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
          <span class='kw'>else</span>
            <span class='lbracket'>[</span><span class='symbol'>:unknown</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='rbracket'>]</span>
          <span class='kw'>end</span>

      <span class='const'>AjaxResponse</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='id identifier rubyid_status'>status</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_data'>data</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_error_message'>error_message</span><span class='comma'>,</span> <span class='label'>transport:</span> <span class='id identifier rubyid_transport'>transport</span><span class='rparen'>)</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:owner</span>

  <span class='comment'># Invokes one of the operations exposed by the service.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param operation [String] The operation to invoke.
</span>  <span class='comment'># @param owner [Object|NilClass] The owner of the service.
</span>  <span class='comment'># @param raise_errors [Boolean] Whether to raise errors instead of returning a failure.
</span>  <span class='comment'># @param params [Hash] The parameters to pass to the service.
</span>  <span class='comment'># @param kwargs [Hash] Other modifiers to pass to the service.
</span>  <span class='comment'># @param block [Proc] A lambda to pass to the service.
</span>  <span class='comment'># @return [Response] The response of the service.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span>
    <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='id identifier rubyid_owner'>owner</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_failure'>failure</span>
    <span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Marks the failure of the operation.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param details [Object] The error(s) occurred.
</span>  <span class='comment'># @param on_validation [Boolean] Whether the error(s) was/were validation error(s).
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_on_validation'>on_validation</span> <span class='op'>?</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>ValidationFailure</span> <span class='op'>:</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a service object.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param owner [Object|NilClass] The owner of the service.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_owner'>owner</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
    <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span>
  <span class='kw'>end</span>

  <span class='comment'># Invokes one of the operations exposed by the service.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param operation [String] The operation to invoke.
</span>  <span class='comment'># @param owner [Object|NilClass] The owner of the service.
</span>  <span class='comment'># @param raise_errors [Boolean] Whether to raise errors instead of returning a failure.
</span>  <span class='comment'># @param params [Hash] The parameters to pass to the service.
</span>  <span class='comment'># @param kwargs [Hash] Other modifiers to pass to the service.
</span>  <span class='comment'># @param block [Proc] A lambda to pass to the service.
</span>  <span class='comment'># @return [Response] The response of the service.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
    <span class='comment'># PI: Ignore Roodi on this method
</span>    <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span> <span class='kw'>if</span> <span class='id identifier rubyid_owner'>owner</span>
    <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>#</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span>
    <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span>
  <span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_failure'>failure</span>
    <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='symbol'>:handle_failure</span><span class='comma'>,</span> <span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Marks the failure of the operation.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param details [Object] The error(s) occurred.
</span>  <span class='comment'># @param on_validation [Boolean] Whether the error(s) was/were validation error(s).
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span>
    <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='id identifier rubyid_on_validation'>on_validation</span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Handles a failure.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param failure [Failure] The failure to handle.
</span>  <span class='comment'># @param raise_errors [Boolean] If `true` it will simply raise the error, otherwise it will return a failure as as Service::Response.
</span>  <span class='comment'># @return [Response] A failure response.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise_errors'>raise_errors</span> <span class='op'>?</span> <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>false</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_failure'>failure</span><span class='period'>.</span><span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>


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

    
      <div class="method_details first">
  <h3 class="signature first" id="call-class_method">
  
    + (<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &amp;block) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Invokes one of the operations exposed by the service.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>operation</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>:perform</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The operation to invoke.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>owner</span>
      
      
        <span class='type'>(<tt>Object|NilClass</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The owner of the service.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>raise_errors</span>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>Whether to raise errors instead of returning a failure.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>params</span>
      
      
        <span class='type'>(<tt>Hash</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The parameters to pass to the service.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>kwargs</span>
      
      
        <span class='type'>(<tt>Hash</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>Other modifiers to pass to the service.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>block</span>
      
      
        <span class='type'>(<tt>Proc</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>A lambda to pass to the service.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The response of the service.</p>
</div>
      
    </li>
  
</ul>

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


91
92
93
94
95
96</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 91</span>

<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span>
  <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='id identifier rubyid_owner'>owner</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_failure'>failure</span>
  <span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="fail!-class_method">
  
    + (<tt>Object</tt>) <strong>fail!</strong>(details, on_validation: false) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Marks the failure of the operation.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>details</span>
      
      
        <span class='type'>(<tt>Object</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The error(s) occurred.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>on_validation</span>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>Whether the error(s) was/were validation error(s).</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Raises:</p>
<ul class="raise">
  
    <li>
      
      
        <span class='type'>(<tt>on_validation ? <span class='object_link'><a href="Errors/ValidationFailure.html" title="Ballast::Errors::ValidationFailure (class)">Errors::ValidationFailure</a></span> : <span class='object_link'><a href="Errors/Failure.html" title="Ballast::Errors::Failure (class)">Errors::Failure</a></span></tt>)</span>
      
      
      
    </li>
  
</ul>

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


102
103
104</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 102</span>

<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_on_validation'>on_validation</span> <span class='op'>?</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>ValidationFailure</span> <span class='op'>:</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span><span class='comma'>,</span> <span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="handle_failure-class_method">
  
    + (<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>) <strong>handle_failure</strong>(failure, raise_errors) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Handles a failure.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>failure</span>
      
      
        <span class='type'>(<tt>Failure</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The failure to handle.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>raise_errors</span>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>If <code>true</code> it will simply raise the error, otherwise it will return a failure as as Service::Response.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>A failure response.</p>
</div>
      
    </li>
  
</ul>

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


144
145
146</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 144</span>

<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_handle_failure'>handle_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_raise_errors'>raise_errors</span> <span class='op'>?</span> <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='id identifier rubyid_failure'>failure</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>false</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='id identifier rubyid_failure'>failure</span><span class='period'>.</span><span class='id identifier rubyid_details'>details</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

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

    
      <div class="method_details first">
  <h3 class="signature first" id="call-instance_method">
  
    - (<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>) <strong>call</strong>(operation = :perform, owner: nil, raise_errors: false, params: {}, **kwargs, &amp;block) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Invokes one of the operations exposed by the service.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>operation</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>:perform</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The operation to invoke.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>owner</span>
      
      
        <span class='type'>(<tt>Object|NilClass</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The owner of the service.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>raise_errors</span>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>Whether to raise errors instead of returning a failure.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>params</span>
      
      
        <span class='type'>(<tt>Hash</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The parameters to pass to the service.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>kwargs</span>
      
      
        <span class='type'>(<tt>Hash</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>Other modifiers to pass to the service.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>block</span>
      
      
        <span class='type'>(<tt>Proc</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>A lambda to pass to the service.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt><span class='object_link'><a href="Service/Response.html" title="Ballast::Service::Response (class)">Response</a></span></tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The response of the service.</p>
</div>
      
    </li>
  
</ul>

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


122
123
124
125
126
127
128
129</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 122</span>

<span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span> <span class='op'>=</span> <span class='symbol'>:perform</span><span class='comma'>,</span> <span class='label'>owner:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_errors:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
  <span class='comment'># PI: Ignore Roodi on this method
</span>  <span class='ivar'>@owner</span> <span class='op'>=</span> <span class='id identifier rubyid_owner'>owner</span> <span class='kw'>if</span> <span class='id identifier rubyid_owner'>owner</span>
  <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='label'>status:</span> <span class='int'>501</span><span class='comma'>,</span> <span class='label'>error:</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unsupported operation </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>#</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='rparen'>)</span>
  <span class='const'>Response</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='label'>data:</span> <span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='label'>params:</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span>
<span class='kw'>rescue</span> <span class='const'>Errors</span><span class='op'>::</span><span class='const'>Failure</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_failure'>failure</span>
  <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='symbol'>:handle_failure</span><span class='comma'>,</span> <span class='id identifier rubyid_failure'>failure</span><span class='comma'>,</span> <span class='id identifier rubyid_raise_errors'>raise_errors</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="fail!-instance_method">
  
    - (<tt>Object</tt>) <strong>fail!</strong>(details, on_validation: false) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Marks the failure of the operation.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>details</span>
      
      
        <span class='type'>(<tt>Object</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The error(s) occurred.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>on_validation</span>
      
      
        <span class='type'>(<tt>Boolean</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>Whether the error(s) was/were validation error(s).</p>
</div>
      
    </li>
  
</ul>


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


135
136
137</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/ballast/service.rb', line 135</span>

<span class='kw'>def</span> <span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='kw'>false</span><span class='rparen'>)</span>
  <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_fail!'>fail!</span><span class='lparen'>(</span><span class='id identifier rubyid_details'>details</span><span class='comma'>,</span> <span class='label'>on_validation:</span> <span class='id identifier rubyid_on_validation'>on_validation</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

</div>

    <div id="footer">
  Generated on Fri Dec 26 11:54:47 2014 by
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
  0.8.7.6 (ruby-2.1.3).
</div>

  </body>
</html>