diff --git a/ares/client.rb b/ares/client.rb index 1f61423..993fff3 100644 --- a/ares/client.rb +++ b/ares/client.rb @@ -8,6 +8,14 @@ class Person < ActiveResource::Base 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 diff --git a/ares/server/helpers.py b/ares/server/helpers.py new file mode 100644 index 0000000..1e9fa97 --- /dev/null +++ b/ares/server/helpers.py @@ -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) diff --git a/ares/www/families.json b/ares/www/families.json index bac3005..14caee7 100644 --- a/ares/www/families.json +++ b/ares/www/families.json @@ -1,5 +1,5 @@ -import json from server.families import Families +from server.helpers import json_loads_from_request __families__ = Families() @@ -8,9 +8,7 @@ __families__ = Families() if GET: response.body = __families__.getall() elif POST: - family = json.loads( - request.body.s_iter.read(int(request.headers['Content-Length'])) - )['family'] + family = json_loads_from_request(request)['family'] family_id = __families__.add(family) response.headers['Location'] = '/families/{}.json'.format(family_id) family['id'] = family_id diff --git a/ares/www/people.json b/ares/www/people.json index b95c5df..e45c9a8 100644 --- a/ares/www/people.json +++ b/ares/www/people.json @@ -1,6 +1,5 @@ -import json from server.people import People -from aspen import Response +from server.helpers import json_loads_from_request __people__ = People() @@ -9,12 +8,11 @@ __people__ = People() if GET: response.body = __people__.getall() elif POST: - person = json.loads( - request.body.s_iter.read(int(request.headers['Content-Length'])) - )['person'] + person = json_loads_from_request(request)['person'] person_id = __people__.add(person) response.headers['Location'] = '/people/{}.json'.format(person_id) - response.body = {} - raise Response(201) + person['id'] = person_id + response.body = person + response.code = 201 # vim:filetype=python