make preview available to peers
This commit is contained in:
parent
8e3d8b5f8e
commit
3339c641c1
2 changed files with 59 additions and 6 deletions
43
oml/nodes.py
43
oml/nodes.py
|
|
@ -304,17 +304,19 @@ class Node(Thread):
|
|||
trigger_event('peering.%s'%action.replace('Peering', ''), u.json())
|
||||
return True
|
||||
|
||||
headers = {
|
||||
'X-Node-Protocol': settings.NODE_PROTOCOL,
|
||||
'User-Agent': settings.USER_AGENT,
|
||||
'Accept-Encoding': 'gzip',
|
||||
}
|
||||
|
||||
def download(self, item):
|
||||
from item.models import Transfer
|
||||
self.resolve()
|
||||
url = '%s/get/%s' % (self.url, item.id)
|
||||
headers = {
|
||||
'X-Node-Protocol': settings.NODE_PROTOCOL,
|
||||
'User-Agent': settings.USER_AGENT,
|
||||
}
|
||||
t1 = datetime.utcnow()
|
||||
logger.debug('download %s', url)
|
||||
self._opener.addheaders = list(zip(headers.keys(), headers.values()))
|
||||
self._opener.addheaders = list(zip(self.headers.keys(), self.headers.values()))
|
||||
try:
|
||||
r = self._opener.open(url, timeout=self.TIMEOUT*2)
|
||||
except:
|
||||
|
|
@ -363,6 +365,37 @@ class Node(Thread):
|
|||
logger.debug('FAILED %s', url)
|
||||
return False
|
||||
|
||||
def download_preview(self, item):
|
||||
from item.icons import icons
|
||||
self.resolve()
|
||||
url = '%s/preview/%s' % (self.url, item.id)
|
||||
self._opener.addheaders = list(zip(self.headers.keys(), self.headers.values()))
|
||||
try:
|
||||
r = self._opener.open(url, timeout=self.TIMEOUT*2)
|
||||
except:
|
||||
logger.debug('openurl failed %s', url, exc_info=1)
|
||||
return False
|
||||
code = r.getcode()
|
||||
if code == 200:
|
||||
try:
|
||||
fileobj = r
|
||||
if r.headers.get('content-encoding', None) == 'gzip':
|
||||
fileobj = gzip.GzipFile(fileobj=r)
|
||||
content = fileobj.read()
|
||||
key = 'preview:' + item.id
|
||||
icons[key] = content
|
||||
for resolution in (128, 256, 512):
|
||||
del icons['preview:%s' % resolution]
|
||||
return True
|
||||
except:
|
||||
logger.debug('preview download failed %s', url, exc_info=1)
|
||||
return False
|
||||
elif code == 404:
|
||||
pass
|
||||
else:
|
||||
logger.debug('FAILED %s', url)
|
||||
return False
|
||||
|
||||
def download_upgrade(self, release):
|
||||
for module in release['modules']:
|
||||
path = os.path.join(settings.update_path, release['modules'][module]['name'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue