Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Basic api with announcing works now
  • Loading branch information
jaseg committed Feb 18, 2012
1 parent 85841ff commit 6815855
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 16 deletions.
9 changes: 7 additions & 2 deletions sinatra/server.rb
Expand Up @@ -21,15 +21,20 @@
end

post '/login' do
sessions[Guid.new()] = Session.new(params[:user])
return '{error: "no username given"}' unless params[:user]
guid = (Guid.new()).to_s()
sessions[guid] = Session.new(params[:user])
return {'guid' => guid}.to_json()
end

post '/announce' do
session = sessions[params[:session]]
if sessions[session] then
room_by_user[session.user] = params[:room]
session.reset_timeout()
return true;
end
'{error: "invalid session"}'
end

get '/users' do
Expand All @@ -50,7 +55,7 @@

#session purge logic: clears the session cache from stale sessions
def purge_sessions ()
ref = now()
ref = Time.now()
sessions.delete_if {|session|
if session.timeout()+60*SESSION_TIMEOUT < ref then
users_by_room[room_by_user[session.user]].delete(session.user)
Expand Down
4 changes: 2 additions & 2 deletions sinatra/session.rb
@@ -1,11 +1,11 @@
class Session
def initialize (user)
@user = user
@timeout = now()
@timeout = Time.now()
end

def reset_timeout ()
@timeout = now()
@timeout = Time.now()
end

def timeout ()
Expand Down
78 changes: 66 additions & 12 deletions sinatra/static/index.html
Expand Up @@ -12,30 +12,84 @@
<div class="container">
<div class="nav-collapse">
<ul class="nav nav-tabs">
<li class="active"><a href="#home">Home</a></li>
<li><a href="#userlist">User list</a></li>
<li><a href="#radar">Radar</a></li>
<li><a href="#home" data-toggle="tab">Home</a></li>
<li><a href="#userlist" data-toggle="tab">User list</a></li>
<li><a href="#radar" data-toggle="tab">Radar</a></li>
<li class="active"><a href="#testing" data-toggle="tab">Testing</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="tab-content">
<div class="tab-pane active" id="home">
<h1>Indoor Positioning System Demo Announce Server &copy;&reg;&trade;</h1>
</div>
<div class="tab-pane" id="userlist">
<h1>User list</h1>
</div>
<div class="tab-pane" id="radar">
<h1>Radar</h1>
<div class="hero-unit">
<div class="tab-content">
<div class="tab-pane maintabs" id="home">
<h1>Indoor Positioning System Demo Announce Server &copy;&trade;&reg;</h1>
</div>
<div class="tab-pane maintabs" id="userlist">
<h1>User list</h1>
</div>
<div class="tab-pane maintabs" id="radar">
<h1>Radar</h1>
</div>
<div class="tab-pane maintabs active" id="testing">
<h1>Testing</h1>
<form class="form-inline">
<input type="text" class="span3" id="testing-user" placeholder="User name"><button type="submit" class="btn" onClick="testing.login()">Login!</button>
</form>
<form class="form-inline">
<input type="text" class="span3" id="testing-room" placeholder="Room"><button type="submit" class="btn" onClick="testing.announce()">Announce!</button>
</form>
</div>
</div>
</div>
</div>
<script src="js/jquery.js"></script>
<script src="bootstrap/js/bootstrap-tab.js"></script>
<script language="javascript">

var testing = {
session: false,
login: function(){
$.post("/login", {user: $("#testing-user").val()}, function(data){
testing.session = data.guid;
}, "json");
},
announce: function(){
var room = $("#testing-room").val();
if(testing.session){
$.post("/announce", {session: testing.session, room: room}, function(data){
console.log(data);
}, "json");
}else{
console.log("Not logged in");
}
}
};

var refresh_handler = {
home: function(){

},
userlist: function(){

},
radar: function(){

},
testing: function(){
console.log("refresh testing");
}
};

function refresh_views(){
$(".maintabs:visible").each(function(index, elem){
refresh_handler[elem.id]();
});
setTimeout(refresh_views, 3000);
}
refresh_views();
</script>
</body>
</html>

0 comments on commit 6815855

Please sign in to comment.