gnip_api 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +24 -3
  3. data/README.md +70 -33
  4. data/Rakefile +7 -0
  5. data/doc/rdoc/classes/Gnip/Activity.html +354 -0
  6. data/doc/rdoc/classes/Gnip/Actor.html +300 -0
  7. data/doc/rdoc/classes/Gnip/GnipData.html +154 -0
  8. data/doc/rdoc/classes/Gnip/Message.html +236 -0
  9. data/doc/rdoc/classes/Gnip/SystemMessage.html +190 -0
  10. data/doc/rdoc/classes/Gnip/TwitterComplianceMessage.html +194 -0
  11. data/doc/rdoc/classes/Gnip/UndefinedMessage.html +83 -0
  12. data/doc/rdoc/classes/Gnip/Url.html +194 -0
  13. data/doc/rdoc/classes/Gnip.html +95 -0
  14. data/doc/rdoc/classes/GnipApi/Adapter.html +287 -0
  15. data/doc/rdoc/classes/GnipApi/Configuration.html +194 -0
  16. data/doc/rdoc/classes/GnipApi/Endpoints.html +191 -0
  17. data/doc/rdoc/classes/GnipApi/Errors/Adapter/GnipSoftwareError.html +83 -0
  18. data/doc/rdoc/classes/GnipApi/Errors/Adapter/RateLimitError.html +83 -0
  19. data/doc/rdoc/classes/GnipApi/Errors/Adapter/RequestError.html +56 -0
  20. data/doc/rdoc/classes/GnipApi/Errors/Adapter.html +66 -0
  21. data/doc/rdoc/classes/GnipApi/Errors/Configuration/InvalidOutputFormat.html +83 -0
  22. data/doc/rdoc/classes/GnipApi/Errors/Configuration.html +58 -0
  23. data/doc/rdoc/classes/GnipApi/Errors/JsonParser/ParseError.html +56 -0
  24. data/doc/rdoc/classes/GnipApi/Errors/JsonParser.html +64 -0
  25. data/doc/rdoc/classes/GnipApi/Errors/MissingAdapter.html +83 -0
  26. data/doc/rdoc/classes/GnipApi/Errors/MissingCredentials.html +83 -0
  27. data/doc/rdoc/classes/GnipApi/Errors/PowerTrack/MissingRules.html +83 -0
  28. data/doc/rdoc/classes/GnipApi/Errors/PowerTrack/StreamDown.html +56 -0
  29. data/doc/rdoc/classes/GnipApi/Errors/PowerTrack.html +65 -0
  30. data/doc/rdoc/classes/GnipApi/Errors/Search/MissingParameters.html +83 -0
  31. data/doc/rdoc/classes/GnipApi/Errors/Search.html +64 -0
  32. data/doc/rdoc/classes/GnipApi/Errors.html +79 -0
  33. data/doc/rdoc/classes/GnipApi/JsonParser.html +101 -0
  34. data/doc/rdoc/classes/GnipApi/PowerTrack/Buffer.html +237 -0
  35. data/doc/rdoc/classes/GnipApi/PowerTrack/Rule.html +196 -0
  36. data/doc/rdoc/classes/GnipApi/PowerTrack/Rules.html +188 -0
  37. data/doc/rdoc/classes/GnipApi/PowerTrack/Stream.html +359 -0
  38. data/doc/rdoc/classes/GnipApi/PowerTrack.html +73 -0
  39. data/doc/rdoc/classes/GnipApi/Request.html +216 -0
  40. data/doc/rdoc/classes/GnipApi/Response.html +232 -0
  41. data/doc/rdoc/classes/GnipApi/Search.html +101 -0
  42. data/doc/rdoc/classes/GnipApi.html +252 -0
  43. data/doc/rdoc/created.rid +24 -0
  44. data/doc/rdoc/css/style.css +343 -0
  45. data/doc/rdoc/files/LICENSE_txt.html +73 -0
  46. data/doc/rdoc/files/README_md.html +299 -0
  47. data/doc/rdoc/files/lib/gnip_api/adapter_rb.html +51 -0
  48. data/doc/rdoc/files/lib/gnip_api/configuration_rb.html +51 -0
  49. data/doc/rdoc/files/lib/gnip_api/endpoints_rb.html +51 -0
  50. data/doc/rdoc/files/lib/gnip_api/errors_rb.html +51 -0
  51. data/doc/rdoc/files/lib/gnip_api/gnip/activity_rb.html +51 -0
  52. data/doc/rdoc/files/lib/gnip_api/gnip/actor_rb.html +51 -0
  53. data/doc/rdoc/files/lib/gnip_api/gnip/gnip_data_rb.html +51 -0
  54. data/doc/rdoc/files/lib/gnip_api/gnip/message_rb.html +51 -0
  55. data/doc/rdoc/files/lib/gnip_api/gnip/system_message_rb.html +51 -0
  56. data/doc/rdoc/files/lib/gnip_api/gnip/twitter_compliance_message_rb.html +51 -0
  57. data/doc/rdoc/files/lib/gnip_api/gnip/url_rb.html +51 -0
  58. data/doc/rdoc/files/lib/gnip_api/json_parser_rb.html +51 -0
  59. data/doc/rdoc/files/lib/gnip_api/power_track/buffer_rb.html +51 -0
  60. data/doc/rdoc/files/lib/gnip_api/power_track/rule_rb.html +51 -0
  61. data/doc/rdoc/files/lib/gnip_api/power_track/rules_rb.html +55 -0
  62. data/doc/rdoc/files/lib/gnip_api/power_track/stream_rb.html +51 -0
  63. data/doc/rdoc/files/lib/gnip_api/request_rb.html +51 -0
  64. data/doc/rdoc/files/lib/gnip_api/response_rb.html +51 -0
  65. data/doc/rdoc/files/lib/gnip_api/search_rb.html +55 -0
  66. data/doc/rdoc/files/lib/gnip_api/version_rb.html +51 -0
  67. data/doc/rdoc/files/lib/gnip_api_rb.html +84 -0
  68. data/doc/rdoc/fr_class_index.html +92 -0
  69. data/doc/rdoc/fr_file_index.html +41 -0
  70. data/doc/rdoc/fr_method_index.html +4791 -0
  71. data/doc/rdoc/index.html +15 -0
  72. data/gnip_api.gemspec +3 -1
  73. data/lib/gnip_api/configuration.rb +18 -4
  74. data/lib/gnip_api/errors.rb +0 -1
  75. data/lib/gnip_api/power_track/buffer.rb +60 -14
  76. data/lib/gnip_api/power_track/stream.rb +52 -17
  77. data/lib/gnip_api/response.rb +3 -2
  78. data/lib/gnip_api/version.rb +1 -1
  79. data/spec/gnip_api/power_track/buffer_spec.rb +8 -0
  80. data/spec/gnip_api/response_spec.rb +16 -0
  81. data/spec/spec_helper.rb +1 -0
  82. metadata +97 -2
@@ -0,0 +1,188 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
+ <html lang='en'>
3
+ <head>
4
+ <title>GnipApi::PowerTrack::Rules</title>
5
+ <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
6
+ <link href='../../../css/style.css' media='screen' rel='stylesheet' type='text/css'>
7
+ <script type='text/javascript'>
8
+ function popupCode(url) {
9
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
10
+ }
11
+
12
+ function toggleCode(id) {
13
+ var code = document.getElementById(id)
14
+
15
+ code.style.display = code.style.display != 'block' ? 'block' : 'none'
16
+ return true
17
+ }
18
+
19
+ // Make codeblocks hidden by default
20
+ document.writeln('<' + 'style type="text/css">.method .source pre { display: none }<\/style>')
21
+ </script>
22
+ </head>
23
+ <body class='page'>
24
+ <div class='class' id='wrapper'>
25
+ <div class='header'>
26
+ <h1 class='name'><span class='type'>class</span>
27
+ GnipApi::PowerTrack::Rules
28
+ </h1>
29
+ <ol class='paths'>
30
+ <li>
31
+ <a href="../../../files/lib/gnip_api/power_track/rules_rb.html">lib/gnip_api/power_track/rules.rb</a>
32
+ </li>
33
+ </ol>
34
+ <div class='parent'>
35
+ Superclass:
36
+ <strong>Object</strong>
37
+ </div>
38
+ </div>
39
+ <div id='content'>
40
+ <div id='text'>
41
+ <div id='description'></div>
42
+ <div id='method-list'>
43
+ <h2>Methods</h2>
44
+ <h3>Public Instance</h3>
45
+ <ol>
46
+ <li><a href="#method-i-construct_rules">construct_rules</a></li>
47
+ <li><a href="#method-i-create">create</a></li>
48
+ <li><a href="#method-i-delete">delete</a></li>
49
+ <li><a href="#method-i-list">list</a></li>
50
+ <li><a href="#method-i-parse_rules">parse_rules</a></li>
51
+ <li><a href="#method-i-validate">validate</a></li>
52
+ </ol>
53
+ </div>
54
+ <div id='context'>
55
+ </div>
56
+ <div id='section'>
57
+ <div id='methods'>
58
+ <h2>Public Instance methods</h2>
59
+ <div class='method public-instance' id='method-method-i-construct_rules'>
60
+ <a name='method-i-construct_rules'></a>
61
+ <div class='synopsis'>
62
+ <span class='name'>construct_rules</span>
63
+ <span class='arguments'>(rules)</span>
64
+
65
+ </div>
66
+ <div class='description'>
67
+
68
+ <p>Parses an array of <a href="Rule.html">GnipApi::PowerTrack::Rule</a>
69
+ objects to the necesary JSON format for the endpoint</p>
70
+
71
+ </div>
72
+ <div class='source'>
73
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-construct_rules-source&#39;); return false'>
74
+ [show source]
75
+ </a>
76
+ <pre id='method-i-construct_rules-source'><span class="ruby-comment"># File lib/gnip_api/power_track/rules.rb, line 45</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">construct_rules</span> <span class="ruby-identifier">rules</span>&#x000A; <span class="ruby-identifier">parsed_rules</span> = {<span class="ruby-value">:rules</span> =<span class="ruby-operator">&gt;</span> []}&#x000A; <span class="ruby-identifier">rules</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-identifier">parsed_rules</span>[<span class="ruby-value">:rules</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">attributes</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-identifier">parsed_rules</span>.<span class="ruby-identifier">to_json</span>&#x000A;<span class="ruby-keyword">end</span></pre>
77
+ </div>
78
+ </div>
79
+ <div class='method public-instance' id='method-method-i-create'>
80
+ <a name='method-i-create'></a>
81
+ <div class='synopsis'>
82
+ <span class='name'>create</span>
83
+ <span class='arguments'>(rules)</span>
84
+
85
+ </div>
86
+ <div class='description'>
87
+
88
+ <p>Creates the specified rule. Parameters:</p>
89
+ <ul><li>
90
+ <p>rules: <a href="Rule.html">GnipApi::PowerTrack::Rule</a> object</p>
91
+ </li></ul>
92
+
93
+ </div>
94
+ <div class='source'>
95
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-create-source&#39;); return false'>
96
+ [show source]
97
+ </a>
98
+ <pre id='method-i-create-source'><span class="ruby-comment"># File lib/gnip_api/power_track/rules.rb, line 17</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">create</span> <span class="ruby-identifier">rules</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;No rules provided&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">rules</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">rules</span>.<span class="ruby-identifier">empty?</span>&#x000A; <span class="ruby-identifier">request</span> = <span class="ruby-identifier">create_post_request</span>(<span class="ruby-identifier">construct_rules</span>(<span class="ruby-identifier">rules</span>))&#x000A; <span class="ruby-identifier">response</span> = <span class="ruby-identifier">fetch_data</span>(<span class="ruby-identifier">request</span>)&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">nil?</span>&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">JsonParser</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">response</span>)&#x000A;<span class="ruby-keyword">end</span></pre>
99
+ </div>
100
+ </div>
101
+ <div class='method public-instance' id='method-method-i-delete'>
102
+ <a name='method-i-delete'></a>
103
+ <div class='synopsis'>
104
+ <span class='name'>delete</span>
105
+ <span class='arguments'>(rules)</span>
106
+
107
+ </div>
108
+ <div class='description'>
109
+
110
+ <p>Deletes the specified rule. Parameters:</p>
111
+ <ul><li>
112
+ <p>rules: <a href="Rule.html">GnipApi::PowerTrack::Rule</a> object</p>
113
+ </li></ul>
114
+
115
+ </div>
116
+ <div class='source'>
117
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-delete-source&#39;); return false'>
118
+ [show source]
119
+ </a>
120
+ <pre id='method-i-delete-source'><span class="ruby-comment"># File lib/gnip_api/power_track/rules.rb, line 27</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">delete</span> <span class="ruby-identifier">rules</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;No rules provided&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">rules</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">rules</span>.<span class="ruby-identifier">empty?</span>&#x000A; <span class="ruby-identifier">request</span> = <span class="ruby-identifier">create_delete_request</span>(<span class="ruby-identifier">construct_rules</span>(<span class="ruby-identifier">rules</span>))&#x000A; <span class="ruby-identifier">response</span> = <span class="ruby-identifier">fetch_data</span>(<span class="ruby-identifier">request</span>)&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">nil?</span>&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">JsonParser</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">response</span>)&#x000A;<span class="ruby-keyword">end</span></pre>
121
+ </div>
122
+ </div>
123
+ <div class='method public-instance' id='method-method-i-list'>
124
+ <a name='method-i-list'></a>
125
+ <div class='synopsis'>
126
+ <span class='name'>list</span>
127
+ <span class='arguments'>()</span>
128
+
129
+ </div>
130
+ <div class='description'>
131
+
132
+ <p>Returns an array of defined rules</p>
133
+
134
+ </div>
135
+ <div class='source'>
136
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-list-source&#39;); return false'>
137
+ [show source]
138
+ </a>
139
+ <pre id='method-i-list-source'><span class="ruby-comment"># File lib/gnip_api/power_track/rules.rb, line 9</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">list</span>&#x000A; <span class="ruby-identifier">request</span> = <span class="ruby-identifier">create_get_request</span>&#x000A; <span class="ruby-identifier">rules</span> = <span class="ruby-identifier">fetch_data</span>(<span class="ruby-identifier">request</span>)&#x000A; <span class="ruby-identifier">parse_rules</span>(<span class="ruby-identifier">rules</span>)&#x000A;<span class="ruby-keyword">end</span></pre>
140
+ </div>
141
+ </div>
142
+ <div class='method public-instance' id='method-method-i-parse_rules'>
143
+ <a name='method-i-parse_rules'></a>
144
+ <div class='synopsis'>
145
+ <span class='name'>parse_rules</span>
146
+ <span class='arguments'>(data)</span>
147
+
148
+ </div>
149
+ <div class='description'>
150
+
151
+ </div>
152
+ <div class='source'>
153
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-parse_rules-source&#39;); return false'>
154
+ [show source]
155
+ </a>
156
+ <pre id='method-i-parse_rules-source'><span class="ruby-comment"># File lib/gnip_api/power_track/rules.rb, line 53</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">parse_rules</span> <span class="ruby-identifier">data</span>&#x000A; <span class="ruby-identifier">parsed_data</span> = <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">JsonParser</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">data</span>)&#x000A; <span class="ruby-identifier">parsed_data</span>[<span class="ruby-string">&#39;rules&#39;</span>].<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span> <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">PowerTrack</span><span class="ruby-operator">::</span><span class="ruby-constant">Rule</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">:value</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">rule</span>[<span class="ruby-string">&#39;value&#39;</span>], <span class="ruby-value">:tag</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">rule</span>[<span class="ruby-string">&#39;tag&#39;</span>], <span class="ruby-value">:id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">rule</span>[<span class="ruby-string">&#39;id&#39;</span>])}&#x000A;<span class="ruby-keyword">end</span></pre>
157
+ </div>
158
+ </div>
159
+ <div class='method public-instance' id='method-method-i-validate'>
160
+ <a name='method-i-validate'></a>
161
+ <div class='synopsis'>
162
+ <span class='name'>validate</span>
163
+ <span class='arguments'>(rules)</span>
164
+
165
+ </div>
166
+ <div class='description'>
167
+
168
+ </div>
169
+ <div class='source'>
170
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-validate-source&#39;); return false'>
171
+ [show source]
172
+ </a>
173
+ <pre id='method-i-validate-source'><span class="ruby-comment"># File lib/gnip_api/power_track/rules.rb, line 35</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">validate</span> <span class="ruby-identifier">rules</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;No rules provided&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">rules</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">rules</span>.<span class="ruby-identifier">empty?</span>&#x000A; <span class="ruby-identifier">request</span> = <span class="ruby-identifier">create_validation_request</span>(<span class="ruby-identifier">construct_rules</span>(<span class="ruby-identifier">rules</span>))&#x000A; <span class="ruby-identifier">response</span> = <span class="ruby-identifier">fetch_data</span>(<span class="ruby-identifier">request</span>)&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">nil?</span>&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">JsonParser</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">response</span>)&#x000A;<span class="ruby-keyword">end</span></pre>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </div>
178
+
179
+ </div>
180
+ </div>
181
+
182
+ <div id='footer-push'></div>
183
+ </div>
184
+ <div id='footer'>
185
+ <a href="https://github.com/rdoc/hanna-nouveau"><strong>Hanna Nouveau</strong> RDoc template</a>
186
+ </div>
187
+ </body>
188
+ </html>
@@ -0,0 +1,359 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
+ <html lang='en'>
3
+ <head>
4
+ <title>GnipApi::PowerTrack::Stream</title>
5
+ <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
6
+ <link href='../../../css/style.css' media='screen' rel='stylesheet' type='text/css'>
7
+ <script type='text/javascript'>
8
+ function popupCode(url) {
9
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
10
+ }
11
+
12
+ function toggleCode(id) {
13
+ var code = document.getElementById(id)
14
+
15
+ code.style.display = code.style.display != 'block' ? 'block' : 'none'
16
+ return true
17
+ }
18
+
19
+ // Make codeblocks hidden by default
20
+ document.writeln('<' + 'style type="text/css">.method .source pre { display: none }<\/style>')
21
+ </script>
22
+ </head>
23
+ <body class='page'>
24
+ <div class='class' id='wrapper'>
25
+ <div class='header'>
26
+ <h1 class='name'><span class='type'>class</span>
27
+ GnipApi::PowerTrack::Stream
28
+ </h1>
29
+ <ol class='paths'>
30
+ <li>
31
+ <a href="../../../files/lib/gnip_api/power_track/stream_rb.html">lib/gnip_api/power_track/stream.rb</a>
32
+ </li>
33
+ </ol>
34
+ <div class='parent'>
35
+ Superclass:
36
+ <strong>Object</strong>
37
+ </div>
38
+ </div>
39
+ <div id='content'>
40
+ <div id='text'>
41
+ <div id='description'>
42
+ <p>Handles a stream connection to <a href="../PowerTrack.html">PowerTrack</a>
43
+ to receive the data.</p>
44
+
45
+ <p>There are 3 ways to connect and consume the connection provided:</p>
46
+ <ul><li>
47
+ <p>:common</p>
48
+ </li><li>
49
+ <p>:io</p>
50
+ </li><li>
51
+ <p>:pty</p>
52
+ </li></ul>
53
+
54
+ <p>Each method uses a different backend. This is a result of experimentation
55
+ to mitigate disconnect issues. Each method handles differently the
56
+ keep-alive signals and works a bit differently at the low level. The
57
+ recommended method is :common, and will in the future become the default
58
+ once it&#39;s polished enough.</p>
59
+
60
+ <p>In addition to the methods above, a third strategy using the :common method
61
+ is also offered to detach any processing you do on your end using threads.</p>
62
+ </div>
63
+ <div id='method-list'>
64
+ <h2>Methods</h2>
65
+ <h3>Public Class</h3>
66
+ <ol>
67
+ <li><a href="#method-c-new">new</a></li>
68
+ </ol>
69
+ <h3>Public Instance</h3>
70
+ <ol>
71
+ <li><a href="#method-i-build_message">build_message</a></li>
72
+ <li><a href="#method-i-consume">consume</a></li>
73
+ <li><a href="#method-i-consume_json">consume_json</a></li>
74
+ <li><a href="#method-i-consume_raw">consume_raw</a></li>
75
+ <li><a href="#method-i-logger">logger</a></li>
76
+ <li><a href="#method-i-parse_json">parse_json</a></li>
77
+ <li><a href="#method-i-process_entries">process_entries</a></li>
78
+ <li><a href="#method-i-read_io_stream">read_io_stream</a></li>
79
+ <li><a href="#method-i-read_pty_stream">read_pty_stream</a></li>
80
+ <li><a href="#method-i-read_stream">read_stream</a></li>
81
+ <li><a href="#method-i-thread_consume">thread_consume</a></li>
82
+ </ol>
83
+ </div>
84
+ <div id='context'>
85
+ </div>
86
+ <div id='section'>
87
+ <div id='methods'>
88
+ <h2>Public Class methods</h2>
89
+ <div class='method public-class' id='method-method-c-new'>
90
+ <a name='method-c-new'></a>
91
+ <div class='synopsis'>
92
+ <span class='name'>new</span>
93
+ <span class='arguments'>()</span>
94
+
95
+ </div>
96
+ <div class='description'>
97
+
98
+ </div>
99
+ <div class='source'>
100
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-c-new-source&#39;); return false'>
101
+ [show source]
102
+ </a>
103
+ <pre id='method-c-new-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 19</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>&#x000A; <span class="ruby-ivar">@user</span> = <span class="ruby-constant">GnipApi</span>.<span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">user</span>&#x000A; <span class="ruby-ivar">@password</span> = <span class="ruby-constant">GnipApi</span>.<span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">password</span>&#x000A; <span class="ruby-ivar">@account</span> = <span class="ruby-constant">GnipApi</span>.<span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">account</span>&#x000A; <span class="ruby-ivar">@adapter</span> = <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">Adapter</span>.<span class="ruby-identifier">new</span>&#x000A; <span class="ruby-ivar">@buffer</span> = <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">PowerTrack</span><span class="ruby-operator">::</span><span class="ruby-constant">Buffer</span>.<span class="ruby-identifier">new</span>&#x000A; <span class="ruby-ivar">@running</span> = <span class="ruby-keyword">false</span>&#x000A;<span class="ruby-keyword">end</span></pre>
104
+ </div>
105
+ </div>
106
+ <h2>Public Instance methods</h2>
107
+ <div class='method public-instance' id='method-method-i-build_message'>
108
+ <a name='method-i-build_message'></a>
109
+ <div class='synopsis'>
110
+ <span class='name'>build_message</span>
111
+ <span class='arguments'>(params)</span>
112
+
113
+ </div>
114
+ <div class='description'>
115
+
116
+ <p>Builds a <a href="../../Gnip/Message.html">Gnip::Message</a> object from
117
+ the item params received.</p>
118
+
119
+ </div>
120
+ <div class='source'>
121
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-build_message-source&#39;); return false'>
122
+ [show source]
123
+ </a>
124
+ <pre id='method-i-build_message-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 192</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">build_message</span> <span class="ruby-identifier">params</span>&#x000A; <span class="ruby-constant">Gnip</span><span class="ruby-operator">::</span><span class="ruby-constant">Message</span>.<span class="ruby-identifier">build</span>(<span class="ruby-identifier">params</span>)&#x000A;<span class="ruby-keyword">end</span></pre>
125
+ </div>
126
+ </div>
127
+ <div class='method public-instance' id='method-method-i-consume'>
128
+ <a name='method-i-consume'></a>
129
+ <div class='synopsis'>
130
+ <span class='name'>consume</span>
131
+ <span class='arguments'>(stream_method=:common)</span>
132
+
133
+ </div>
134
+ <div class='description'>
135
+
136
+ <p>The following methods are different ways of consuming the stream There are
137
+ 3 different methods that return data slighly different. :common method uses
138
+ a simple HTTParty request reading chunks and decoding the GZip. This
139
+ method has a flaw that it waits for certain data to be buffered by Zlib in
140
+ order to return a decoded chunk. :common will return chunks that may
141
+ contain more than 1 objects.</p>
142
+
143
+ <p>:io method uses curl under the hood, in combination with IO.popen to
144
+ captrue stdout. For this method a single line is returned, which would be
145
+ an object sent to stream. Curl handles the GZip decoding better, however
146
+ the read method for the IO buffers up the keep alive signals due to not
147
+ flushing STDOUT.</p>
148
+
149
+ <p>:pty method is an alternative for :io in where the stdout output is
150
+ captured as it comes using PTY features. It almost works the same as :io,
151
+ but the keep alive signals are now captured properly.</p>
152
+
153
+ </div>
154
+ <div class='source'>
155
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-consume-source&#39;); return false'>
156
+ [show source]
157
+ </a>
158
+ <pre id='method-i-consume-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 73</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">consume</span> <span class="ruby-identifier">stream_method</span>=<span class="ruby-value">:common</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Block required, non given&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">block_given?</span>&#x000A; <span class="ruby-keyword">if</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:common</span>&#x000A; <span class="ruby-identifier">read_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">process_entries</span>(<span class="ruby-identifier">data</span>))&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:io</span>&#x000A; <span class="ruby-identifier">read_io_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">process_entries</span>([<span class="ruby-identifier">data</span>]))&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:pty</span>&#x000A; <span class="ruby-identifier">read_pty_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">process_entries</span>([<span class="ruby-identifier">data</span>]))&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">else</span> &#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Undefined stream method #{stream_method}&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
159
+ </div>
160
+ </div>
161
+ <div class='method public-instance' id='method-method-i-consume_json'>
162
+ <a name='method-i-consume_json'></a>
163
+ <div class='synopsis'>
164
+ <span class='name'>consume_json</span>
165
+ <span class='arguments'>(stream_method=:common)</span>
166
+
167
+ </div>
168
+ <div class='description'>
169
+
170
+ <p>Similar to <a href="Stream.html#method-i-consume">consume</a> but parses
171
+ the JSON to Hash with no further processing. <code>stream_method</code>
172
+ param accepts the same options as <a
173
+ href="Stream.html#method-i-consume">consume</a>.</p>
174
+
175
+ </div>
176
+ <div class='source'>
177
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-consume_json-source&#39;); return false'>
178
+ [show source]
179
+ </a>
180
+ <pre id='method-i-consume_json-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 117</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">consume_json</span> <span class="ruby-identifier">stream_method</span>=<span class="ruby-value">:common</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Block required, non given&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">block_given?</span>&#x000A; <span class="ruby-keyword">if</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:common</span>&#x000A; <span class="ruby-identifier">read_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">data</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span> <span class="ruby-identifier">parse_json</span>(<span class="ruby-identifier">item</span>)})&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:io</span>&#x000A; <span class="ruby-identifier">read_io_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">parse_json</span>(<span class="ruby-identifier">data</span>))&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:pty</span>&#x000A; <span class="ruby-identifier">read_pty_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">parse_json</span>(<span class="ruby-identifier">data</span>))&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">else</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Undefined stream method #{stream_method}&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
181
+ </div>
182
+ </div>
183
+ <div class='method public-instance' id='method-method-i-consume_raw'>
184
+ <a name='method-i-consume_raw'></a>
185
+ <div class='synopsis'>
186
+ <span class='name'>consume_raw</span>
187
+ <span class='arguments'>(stream_method=:common)</span>
188
+
189
+ </div>
190
+ <div class='description'>
191
+
192
+ <p>Similar to <a href="Stream.html#method-i-consume">consume</a> with the
193
+ difference this one spits out raw JSON and has no parsing on the data
194
+ received. Use it for a faster consumtion. <code>stream_method</code> param
195
+ accepts the same options as <a
196
+ href="Stream.html#method-i-consume">consume</a>.</p>
197
+
198
+ </div>
199
+ <div class='source'>
200
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-consume_raw-source&#39;); return false'>
201
+ [show source]
202
+ </a>
203
+ <pre id='method-i-consume_raw-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 95</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">consume_raw</span> <span class="ruby-identifier">stream_method</span>=<span class="ruby-value">:common</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&quot;Block required, non given&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">block_given?</span>&#x000A; <span class="ruby-keyword">if</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:common</span>&#x000A; <span class="ruby-identifier">read_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">data</span>)&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:io</span>&#x000A; <span class="ruby-identifier">read_io_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">data</span>)&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">stream_method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:pty</span>&#x000A; <span class="ruby-identifier">read_pty_stream</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">data</span>)&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">else</span> &#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Undefined stream method #{stream_method}&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
204
+ </div>
205
+ </div>
206
+ <div class='method public-instance' id='method-method-i-logger'>
207
+ <a name='method-i-logger'></a>
208
+ <div class='synopsis'>
209
+ <span class='name'>logger</span>
210
+ <span class='arguments'>()</span>
211
+
212
+ </div>
213
+ <div class='description'>
214
+
215
+ <p>Returns the configured logger.</p>
216
+
217
+ </div>
218
+ <div class='source'>
219
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-logger-source&#39;); return false'>
220
+ [show source]
221
+ </a>
222
+ <pre id='method-i-logger-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 29</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">logger</span>&#x000A; <span class="ruby-constant">GnipApi</span>.<span class="ruby-identifier">logger</span>&#x000A;<span class="ruby-keyword">end</span></pre>
223
+ </div>
224
+ </div>
225
+ <div class='method public-instance' id='method-method-i-parse_json'>
226
+ <a name='method-i-parse_json'></a>
227
+ <div class='synopsis'>
228
+ <span class='name'>parse_json</span>
229
+ <span class='arguments'>(json)</span>
230
+
231
+ </div>
232
+ <div class='description'>
233
+
234
+ <p>Returns a Hash from a parsed JSON string.</p>
235
+
236
+ </div>
237
+ <div class='source'>
238
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-parse_json-source&#39;); return false'>
239
+ [show source]
240
+ </a>
241
+ <pre id='method-i-parse_json-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 197</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">parse_json</span> <span class="ruby-identifier">json</span>&#x000A; <span class="ruby-keyword">begin</span> &#x000A; <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">JsonParser</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">parse</span> <span class="ruby-identifier">json</span>&#x000A; <span class="ruby-keyword">rescue</span> <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">JsonParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span>&#x000A; <span class="ruby-keyword">nil</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
242
+ </div>
243
+ </div>
244
+ <div class='method public-instance' id='method-method-i-process_entries'>
245
+ <a name='method-i-process_entries'></a>
246
+ <div class='synopsis'>
247
+ <span class='name'>process_entries</span>
248
+ <span class='arguments'>(entries)</span>
249
+
250
+ </div>
251
+ <div class='description'>
252
+
253
+ <p>Processes the items received after splitting them up, returning appropiate
254
+ <a href="../../Gnip.html">Gnip</a> objects.</p>
255
+
256
+ </div>
257
+ <div class='source'>
258
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-process_entries-source&#39;); return false'>
259
+ [show source]
260
+ </a>
261
+ <pre id='method-i-process_entries-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 183</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">process_entries</span> <span class="ruby-identifier">entries</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">debug</span> <span class="ruby-node">&quot;PowerTrack Stream: #{entries.size} items received&quot;</span>&#x000A; <span class="ruby-identifier">data</span> = <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">parse_json</span>(<span class="ruby-identifier">e</span>)}.<span class="ruby-identifier">compact</span>&#x000A; <span class="ruby-identifier">data</span>.<span class="ruby-identifier">map!</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">build_message</span>(<span class="ruby-identifier">e</span>)} &#x000A; <span class="ruby-identifier">data</span>.<span class="ruby-identifier">select</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:system_message?</span>).<span class="ruby-identifier">each</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:log!</span>)&#x000A; <span class="ruby-keyword">return</span> <span class="ruby-identifier">data</span>&#x000A;<span class="ruby-keyword">end</span></pre>
262
+ </div>
263
+ </div>
264
+ <div class='method public-instance' id='method-method-i-read_io_stream'>
265
+ <a name='method-i-read_io_stream'></a>
266
+ <div class='synopsis'>
267
+ <span class='name'>read_io_stream</span>
268
+ <span class='arguments'>()</span>
269
+
270
+ </div>
271
+ <div class='description'>
272
+
273
+ <p>Opens the connection to the <a href="../PowerTrack.html">PowerTrack</a>
274
+ stream and returns any data received using CURL IO transfer method.</p>
275
+
276
+ </div>
277
+ <div class='source'>
278
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-read_io_stream-source&#39;); return false'>
279
+ [show source]
280
+ </a>
281
+ <pre id='method-i-read_io_stream-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 138</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_io_stream</span>&#x000A; <span class="ruby-identifier">request</span> = <span class="ruby-identifier">create_request</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Opening PowerTrack parsed stream&quot;</span>&#x000A; <span class="ruby-keyword">begin</span>&#x000A; <span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">io_curl_stream</span>(<span class="ruby-identifier">request</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span> <span class="ruby-identifier">data</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">ensure</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">warn</span> <span class="ruby-string">&quot;Closing stream&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
282
+ </div>
283
+ </div>
284
+ <div class='method public-instance' id='method-method-i-read_pty_stream'>
285
+ <a name='method-i-read_pty_stream'></a>
286
+ <div class='synopsis'>
287
+ <span class='name'>read_pty_stream</span>
288
+ <span class='arguments'>()</span>
289
+
290
+ </div>
291
+ <div class='description'>
292
+
293
+ <p>Opens the connection to the <a href="../PowerTrack.html">PowerTrack</a>
294
+ stream and returns any data received using CURL PTY transfer method.</p>
295
+
296
+ </div>
297
+ <div class='source'>
298
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-read_pty_stream-source&#39;); return false'>
299
+ [show source]
300
+ </a>
301
+ <pre id='method-i-read_pty_stream-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 152</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_pty_stream</span>&#x000A; <span class="ruby-identifier">request</span> = <span class="ruby-identifier">create_request</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Opening PowerTrack parsed stream&quot;</span>&#x000A; <span class="ruby-keyword">begin</span>&#x000A; <span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">pty_curl_stream</span>(<span class="ruby-identifier">request</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">data</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-keyword">yield</span> <span class="ruby-identifier">data</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">ensure</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">warn</span> <span class="ruby-string">&quot;Closing stream&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
302
+ </div>
303
+ </div>
304
+ <div class='method public-instance' id='method-method-i-read_stream'>
305
+ <a name='method-i-read_stream'></a>
306
+ <div class='synopsis'>
307
+ <span class='name'>read_stream</span>
308
+ <span class='arguments'>()</span>
309
+
310
+ </div>
311
+ <div class='description'>
312
+
313
+ <p>Opens the connection to the <a href="../PowerTrack.html">PowerTrack</a>
314
+ stream and returns any data received using HTTParty and standard net/http.
315
+ The buffer is used in this case to collect the chunks and later split them
316
+ into items.</p>
317
+
318
+ </div>
319
+ <div class='source'>
320
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-read_stream-source&#39;); return false'>
321
+ [show source]
322
+ </a>
323
+ <pre id='method-i-read_stream-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 167</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">read_stream</span>&#x000A; <span class="ruby-identifier">request</span> = <span class="ruby-identifier">create_request</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Opening PowerTrack parsed stream&quot;</span>&#x000A; <span class="ruby-keyword">begin</span>&#x000A; <span class="ruby-ivar">@adapter</span>.<span class="ruby-identifier">stream_get</span> <span class="ruby-identifier">request</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">chunk</span><span class="ruby-operator">|</span>&#x000A; <span class="ruby-ivar">@buffer</span>.<span class="ruby-identifier">insert!</span> <span class="ruby-identifier">chunk</span>&#x000A; <span class="ruby-keyword">yield</span> <span class="ruby-ivar">@buffer</span>.<span class="ruby-identifier">read!</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">ensure</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">warn</span> <span class="ruby-string">&quot;Closing stream&quot;</span>&#x000A; <span class="ruby-ivar">@running</span> = <span class="ruby-keyword">false</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
324
+ </div>
325
+ </div>
326
+ <div class='method public-instance' id='method-method-i-thread_consume'>
327
+ <a name='method-i-thread_consume'></a>
328
+ <div class='synopsis'>
329
+ <span class='name'>thread_consume</span>
330
+ <span class='arguments'>()</span>
331
+
332
+ </div>
333
+ <div class='description'>
334
+
335
+ <p>Consumes the stream using a streamer thread instead of a simple block. This
336
+ way the streamer can fill in the buffer and the block consumes it
337
+ periodically.</p>
338
+
339
+ </div>
340
+ <div class='source'>
341
+ <a class='source-toggle' href='#' onclick='toggleCode(&#39;method-i-thread_consume-source&#39;); return false'>
342
+ [show source]
343
+ </a>
344
+ <pre id='method-i-thread_consume-source'><span class="ruby-comment"># File lib/gnip_api/power_track/stream.rb, line 35</span>&#x000A;<span class="ruby-keyword">def</span> <span class="ruby-identifier">thread_consume</span>&#x000A; <span class="ruby-identifier">streamer</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-string">&quot;Starting streamer Thread&quot;</span>&#x000A; <span class="ruby-keyword">begin</span>&#x000A; <span class="ruby-identifier">read_stream</span>&#x000A; <span class="ruby-keyword">ensure</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">warn</span> <span class="ruby-string">&quot;Streamer exited&quot;</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;&#x000A; <span class="ruby-keyword">begin</span>&#x000A; <span class="ruby-identifier">loop</span> <span class="ruby-keyword">do</span>&#x000A; <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">warn</span> <span class="ruby-string">&quot;Streamer is down&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">streamer</span>.<span class="ruby-identifier">alive?</span>&#x000A; <span class="ruby-identifier">raise</span> <span class="ruby-constant">GnipApi</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">PowerTrack</span><span class="ruby-operator">::</span><span class="ruby-constant">StreamDown</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">streamer</span>.<span class="ruby-identifier">alive?</span>&#x000A; <span class="ruby-identifier">entries</span> = <span class="ruby-ivar">@buffer</span>.<span class="ruby-identifier">read!</span>&#x000A; <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">any?</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">process_entries</span>(<span class="ruby-identifier">entries</span>)) <span class="ruby-operator">:</span> <span class="ruby-identifier">sleep</span>(<span class="ruby-value">0.1</span>)&#x000A; <span class="ruby-keyword">end</span>&#x000A; <span class="ruby-keyword">ensure</span>&#x000A; <span class="ruby-identifier">streamer</span>.<span class="ruby-identifier">kill</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">streamer</span>.<span class="ruby-identifier">alive?</span>&#x000A; <span class="ruby-keyword">end</span>&#x000A;<span class="ruby-keyword">end</span></pre>
345
+ </div>
346
+ </div>
347
+ </div>
348
+ </div>
349
+
350
+ </div>
351
+ </div>
352
+
353
+ <div id='footer-push'></div>
354
+ </div>
355
+ <div id='footer'>
356
+ <a href="https://github.com/rdoc/hanna-nouveau"><strong>Hanna Nouveau</strong> RDoc template</a>
357
+ </div>
358
+ </body>
359
+ </html>