== плоское api ==
Самая простая реализация, без /u/ и без приёма пойнтовых сообщений, выглядит так:
Сервер (использует bottle.py):
====[python]====
import bottle
@bottle.route('/m/<h:re:[a-zA-Z0-9]{20}>')
def msg(h):
return open('msg/%s' % h).read()
@bottle.route('/e/<echo:re:[a-z0-9_.!-]{60}>.<year:int>')
def elist(echo,year):
return open('echo/%s.%s' % h).read()
bottle.run(port=62220)
Клиент ====[python]==== URL='http://51t.ru/' ECHO='ii.test.2014 ii.about.2014 ii.dev.2014' def getf(l): import urllib; print l; return urllib.urlopen(URL + l).read() def get_echoarea(name): try: return open('echo/%s' % name).read().splitlines() except: return [] def savemsg(ea,h,s): open('msg/%s' % h,'w').write(s) open('echo/%s' % ea, 'a').write(h + '\n') for ea in ECHO.split(): newel = getf('e/%s' % ea).splitlines() myel = set(get_echoarea(ea)) for h in newel: if h not in myel: s = getf('m/%s' % h) savemsg(ea,h,s)
В принципе, эта уже работоспособная система обмена сообщений, которая позволяет синхронизироваться,
обмениваясь сообщениями, и быть неким транзитным узлом. Нет только пойнтовой отправки сообщений,
и работы с бандлами (чтобы качать сообщения не по одному), а всё остальное - присутствует. На всём
этом, на односторонней синхронизации и постоянном добавлении, и строится весь формат ii.
Более сложные структуры - только для большей скорости синхронизации с клиентами.