Archiving a bunch of old stuff

This commit is contained in:
Dan Buch
2015-06-22 13:15:42 -05:00
parent a6ec1d560e
commit bd1abd8734
395 changed files with 1 additions and 76 deletions

View File

@@ -0,0 +1,13 @@
_______________________________________
/ This started out with just some \
| ActiveResource bits and then roped in |
\ Aspen and then Redis. Gads. /
---------------------------------------
\ \
\ \
\ _\^
\ _- oo\
\---- \______
\ )\
||-----|| \
|| ||

View File

@@ -0,0 +1,23 @@
require 'active_resource'
SITE = 'http://localhost:9282' unless defined?(SITE)
class Person < ActiveResource::Base
self.site = SITE
def family
Family.find(self.surname.downcase)
end
def family=(family_surname)
self.surname = family_surname
Family.find(family_surname)
rescue StandardError => e
STDERR.puts("#{e.class.name}:#{e.message}\n#{e.backtrace.join("\n")}")
Family.create(surname: family_surname.downcase)
end
end
class Family < ActiveResource::Base
self.site = SITE
end

View File

@@ -0,0 +1,2 @@
#!/bin/bash
exec irb -I. -rclient -rawesome_print --simple-prompt --readline "$@"

View File

@@ -0,0 +1,9 @@
#!/bin/bash
which aspen >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "You need to 'pip install aspen'"
exit 1
fi
cd $(dirname $(readlink -f $0))
export PYTHONPATH="$PWD:$PYTHONPATH"
exec aspen --changes_reload=yes -w ./www -a '0.0.0.0:9282'

View File

@@ -0,0 +1,15 @@
import redis
_MEMCACHE = {'pool': None}
def get_pool():
if not _MEMCACHE['pool']:
_MEMCACHE['pool'] = \
redis.ConnectionPool(host='localhost', port=6379, db=0)
return _MEMCACHE['pool']
def get_redis_conn():
return redis.Redis(connection_pool=get_pool())

View File

@@ -0,0 +1,12 @@
from server.resource import Resource
class Families(Resource):
__collection__ = 'families'
__required_keys__ = ('surname',)
def get_by_surname(self, surname):
for family in self.getall():
if family['surname'] == surname:
return family
return None

View File

@@ -0,0 +1,5 @@
import json
def json_loads_from_request(request):
raw = request.body.s_iter.read(int(request.headers['Content-Length']))
return json.loads(raw)

View File

@@ -0,0 +1,6 @@
from server.resource import Resource
class People(Resource):
__collection__ = 'people'
__required_keys__ = ('name', 'surname', 'age')

View File

@@ -0,0 +1,46 @@
import json
from server import get_redis_conn
class Resource(object):
__collection__ = 'generic'
__required_keys__ = ()
def __init__(self):
self._db = get_redis_conn()
def getall(self):
ret = []
for resource in self._db.hgetall(self.__collection__).itervalues():
try:
ret.append(json.loads(resource))
except ValueError, exc:
print_exc()
return ret
def get(self, resource_id):
raw_resource = self._db.hget(self.__collection__, resource_id)
if not raw_resource:
return None
resource = json.loads(raw_resource)
return resource
def add(self, resource_dict):
if None in (resource_dict.get(k) for k in self.__required_keys__):
raise ValueError(
'Missing required fields!: {}'.format(resource_dict)
)
resource_dict['id'] = self._db.incr(self.__collection__ + '_ids')
success = self._db.hset(
self.__collection__, resource_dict['id'], json.dumps(resource_dict)
)
assert success, 'Failed to save!'
return resource_dict['id']

View File

@@ -0,0 +1,18 @@
from server.families import Families
from server.helpers import json_loads_from_request
__families__ = Families()
if GET:
response.body = __families__.getall()
elif POST:
family = json_loads_from_request(request)['family']
family_id = __families__.add(family)
response.headers['Location'] = '/families/{}.json'.format(family_id)
family['id'] = family_id
response.body = family
response.code = 201
# vim:filetype=python

View File

@@ -0,0 +1,10 @@
from server.families import Families
__families__ = Families()
family = __families__.get_by_surname(path['surname'])
if family:
response.body = {'family': family}
else:
response.code = 404
# vim:filetype=python

View File

@@ -0,0 +1,18 @@
from server.people import People
from server.helpers import json_loads_from_request
__people__ = People()
if GET:
response.body = __people__.getall()
elif POST:
person = json_loads_from_request(request)['person']
person_id = __people__.add(person)
response.headers['Location'] = '/people/{}.json'.format(person_id)
person['id'] = person_id
response.body = person
response.code = 201
# vim:filetype=python

View File

@@ -0,0 +1,11 @@
from server.people import People
__people__ = People()
person = __people__.get(int(path['id']))
if person:
response.body = {'person': person}
else:
response.code = 404
# vim:filetype=python