Skip to content

Instantly share code, notes, and snippets.

@anekos
Created January 4, 2014 14:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anekos/8255991 to your computer and use it in GitHub Desktop.
Save anekos/8255991 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require 'sinatra'
require 'json'
require 'thread'
class LevelStore
def initialize
@filename = 'battery-level.json'
@mutex = Mutex.new
end
def load
@mutex.synchronize do
if File.exist?(@filename)
JSON.parse(File.read(@filename))
else
{}
end
end
end
def save (obj)
@mutex.synchronize do
File.write(@filename, JSON.pretty_generate(obj))
end
end
def modify (&block)
save(block.call(load))
end
end
set :bind, '0.0.0.0'
$level_store = LevelStore.new
get '/level' do
$level_store.load.map do
|name, level|
"#{name} = #{level}"
end.join("\n") + "\n"
end
get '/level/:name/:level' do
|name, level|
$level_store.modify do
|stored|
stored[name] = level.to_i
stored
end
"ok #{level}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment