Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8581657

Browse files
author
Raffi Krikorian
committed
twstreamer
1 parent 31a0e5d commit 8581657

File tree

4 files changed

+6659
-0
lines changed

4 files changed

+6659
-0
lines changed

twstreamer/TwStreamFlash.swf

2.4 KB
Binary file not shown.

twstreamer/index.html

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
<html>
2+
<head>
3+
<title>JavaScript/Flash bridge to Twitter Streaming API</title>
4+
<script src="jquery-1.4.2.js"></script>
5+
<script src="jquery.swfobject.1-0-9.js"></script>
6+
<script>
7+
$(document).ready(function() {
8+
$('#stream-title').hide();
9+
10+
var streamerSelector = $('#twstreamer');
11+
streamerSelector.flash({ swf: 'TwStreamFlash.swf', height: 1, width: 1 });
12+
$('#connect-button').click(function() {
13+
var buttonText = $('#connect-button').text();
14+
if (buttonText == 'Connect') {
15+
if (connectToStream()) {
16+
$('#connect-button').text('Disconnect');
17+
}
18+
} else {
19+
disconnectFromStream();
20+
$('#connect-button').text('Connect');
21+
}
22+
});
23+
});
24+
25+
function connectToStream() {
26+
var streamerSelector = $('#twstreamer');
27+
var streamPath = $('input[name=stream-path]').val();
28+
var streamUsername = $('input[name=stream-username]').val();
29+
var streamPassword = $('input[name=stream-password]').val();
30+
if ((streamPath != "") && (streamUsername != "") && (streamPassword != "")) {
31+
streamerSelector.flash(function() {
32+
this.ConnectToStream(streamPath, streamUsername, streamPassword);
33+
});
34+
return true;
35+
}
36+
return false;
37+
}
38+
39+
function disconnectFromStream() {
40+
var streamerSelector = $('#twstreamer');
41+
streamerSelector.flash(function() {
42+
this.DisconnectFromStream();
43+
});
44+
return true;
45+
}
46+
47+
var toDisplay = [];
48+
function streamEvent(json) {
49+
toDisplay.unshift(formatJson($.parseJSON(json), 0));
50+
if (toDisplay.length > 5) {
51+
toDisplay.pop();
52+
}
53+
$('#stream-title').show();
54+
$('#stream').html(toDisplay.join('<br/>'));
55+
}
56+
57+
Object.size = function(obj) {
58+
var size = 0, key;
59+
for (key in obj) {
60+
if (obj.hasOwnProperty(key)) size++;
61+
}
62+
return size;
63+
};
64+
65+
function formatJson(json, level) {
66+
if (json == null) {
67+
return "<span class='json-null'>null</span>";
68+
}
69+
70+
var isArray = json instanceof Array;
71+
var formattedJson = buildSpacer(level) + "<span class='json-brace'>";
72+
if (!isArray) {
73+
formattedJson = "{</span>";
74+
if (Object.size(json) > 1) {
75+
formattedJson += "<br/>"
76+
}
77+
} else {
78+
formattedJson = "[</span>";
79+
}
80+
var firstThrough = true;
81+
$.each(json, function(k, v) {
82+
if (!firstThrough) {
83+
formattedJson += ",";
84+
if (!isArray && (Object.size(json) > 1)) {
85+
formattedJson += "<br/>";
86+
}
87+
}
88+
if (!isArray) {
89+
if (Object.size(json) > 1) {
90+
formattedJson += buildSpacer(level + 1);
91+
}
92+
formattedJson += formatSingleValue(k);
93+
} else {
94+
formattedJson += formatSingleValue(v);
95+
}
96+
if (!isArray) {
97+
formattedJson += ":";
98+
var valueType = typeof(v);
99+
if (valueType == 'object')
100+
formattedJson += formatJson(v, level + 1);
101+
else {
102+
formattedJson += formatSingleValue(v);
103+
}
104+
}
105+
firstThrough = false;
106+
});
107+
if (!isArray && (Object.size(json) > 1)) {
108+
formattedJson += "<br/>";
109+
}
110+
formattedJson += buildSpacer(level) + "<span class='json-brace'>";
111+
if (!isArray) {
112+
formattedJson += "}";
113+
} else {
114+
formattedJson += "]";
115+
}
116+
formattedJson += "</span>";
117+
return formattedJson;
118+
}
119+
120+
function formatSingleValue(v) {
121+
var type = typeof(v);
122+
if (type == 'string') {
123+
return "<span class='json-string'>&quot;" + v + "&quot;</span>";
124+
} else if (type == 'number') {
125+
return "<span class='json-number'>" + v + "</span>";
126+
} else if (type == 'boolean') {
127+
return "<span class='json-boolean'>" + v + "</span>";
128+
}
129+
}
130+
131+
function buildSpacer(level) {
132+
var spaced = "";
133+
for (var lc=0;lc<level;lc++) { spaced += "<span class='json-width'>&nbsp;</span>"; }
134+
return spaced;
135+
}
136+
</script>
137+
138+
<style type="text/css">
139+
body {
140+
font-family: 'Helvetica Neue', Helvetica, Verdana, sans-serif;
141+
font-size: 0.8em;
142+
color: #555555;
143+
}
144+
145+
div#streaming-configuration {
146+
display: inline-block;
147+
border: 2px solid #dddddd;
148+
padding: 5px;
149+
}
150+
151+
div#streaming-configuration .label {
152+
display: inline-block;
153+
width: 125px;
154+
font-weight: 600;
155+
}
156+
157+
div#streaming-configuration .button {
158+
text-align: center;
159+
display: block;
160+
margin-top: 5px;
161+
font-size: 0.9em;
162+
font-weight: bold;
163+
text-transform: uppercase;
164+
}
165+
166+
div#streaming-configuration .button a {
167+
text-decoration: none;
168+
color: #555555;
169+
}
170+
171+
div#stream {
172+
margin-top: 5px;
173+
padding: 5px;
174+
height: 300px;
175+
font-size: 0.5em;
176+
width: 95%;
177+
}
178+
179+
div#id {
180+
visibility: hidden;
181+
height: 0px;
182+
width: 0px;
183+
}
184+
185+
.json-brace {
186+
color: black;
187+
}
188+
189+
.json-null {
190+
color: gray;
191+
}
192+
193+
.json-string {
194+
color: green;
195+
}
196+
197+
.json-number {
198+
color: red;
199+
}
200+
201+
.json-boolean {
202+
color: blue;
203+
}
204+
205+
.json-spacing {
206+
display: inline-block;
207+
width: 20px;
208+
}
209+
</style>
210+
</head>
211+
<body>
212+
<h1>JavaScript/Flash bridge to Twitter Streaming API</h1>
213+
<div id="streaming-configuration">
214+
<div class="parameters-input">
215+
<span class="label">Stream parameters</span>
216+
<input type="text" name="stream-path" size="30" value="/1/statuses/filter.json?track=twitter"/>
217+
</div>
218+
<div class="parameters-input">
219+
<span class="label">Username</span>
220+
<input type="text" name="stream-username" size="30"/>
221+
</div>
222+
<div class="parameters-input">
223+
<span class="label">Password</span>
224+
<input type="password" name="stream-password" size="30"/>
225+
</div>
226+
<span class="button"><a id="connect-button" href="#">Connect</a></span>
227+
</div>
228+
<h2 id="stream-title">Last 5 events</h2>
229+
<div id="stream"></div>
230+
<div id="twstreamer"></div>
231+
</body>
232+
</html>

0 commit comments

Comments
 (0)