# -*- coding: utf-8 -*-

import json

from booby import Model, StringField, IntegerField, BooleanField
from finch import Collection

from tornado import httpclient, ioloop


class Party(Model):
    id = StringField()
    name = StringField()
    url = StringField()

    def parse(self, body, headers):
        return parse_party(json.loads(body))

    def __repr__(self):
        return 'Party({}/{})'.format(self.name, self.url)


class Parties(Collection):
    model = Party
    url = 'http://proyectocolibri.es/api/v1/group/'

    def parse(self, body, headers):
        return [parse_party(r) for r in json.loads(body)]

def parse_party(raw):
    import pdb; pdb.set_trace()
    return {
        'id': int(raw['id']),
        'name': raw['name'],
        'url': raw['owner']['login']
    }

def main():
    def on_parties(parties, error):
        ioloop.IOLoop.instance().stop()

        if error:
            raise error
        for party in parties:
            print party

    parties = Parties(httpclient.AsyncHTTPClient())
    parties.all(on_parties)

    ioloop.IOLoop.instance().start()


if __name__ == '__main__':
    main()