channelstream: bumped to channelstream==0.6.14

This commit is contained in:
Marcin Kuzminski 2020-08-31 21:15:25 +02:00
parent 436bb2e63a
commit ebb08db0ad
6 changed files with 98 additions and 26 deletions

View file

@ -35,6 +35,20 @@ self: super: {
license = [ pkgs.lib.licenses.bsdOriginal ];
};
};
"apispec" = super.buildPythonPackage {
name = "apispec-1.0.0";
doCheck = false;
propagatedBuildInputs = [
self."PyYAML"
];
src = fetchurl {
url = "https://files.pythonhosted.org/packages/67/15/346c04988dd67d36007e28145504c520491930c878b1f484a97b27a8f497/apispec-1.0.0.tar.gz";
sha256 = "1712w1anvqrvadjjpvai84vbaygaxabd3zz5lxihdzwzs4gvi9sp";
};
meta = {
license = [ pkgs.lib.licenses.mit ];
};
};
"appenlight-client" = super.buildPythonPackage {
name = "appenlight-client-0.6.26";
doCheck = false;
@ -236,20 +250,23 @@ self: super: {
};
};
"channelstream" = super.buildPythonPackage {
name = "channelstream-0.5.2";
name = "channelstream-0.6.14";
doCheck = false;
propagatedBuildInputs = [
self."gevent"
self."ws4py"
self."marshmallow"
self."python-dateutil"
self."pyramid"
self."pyramid-jinja2"
self."pyramid-apispec"
self."itsdangerous"
self."requests"
self."six"
];
src = fetchurl {
url = "https://files.pythonhosted.org/packages/2b/31/29a8e085cf5bf97fa88e7b947adabfc581a18a3463adf77fb6dada34a65f/channelstream-0.5.2.tar.gz";
sha256 = "1qbm4xdl5hfkja683x546bncg3rqq8qv79w1m1a1wd48cqqzb6rm";
url = "https://files.pythonhosted.org/packages/d4/2d/86d6757ccd06ce673ee224123471da3d45251d061da7c580bfc259bad853/channelstream-0.6.14.tar.gz";
sha256 = "0qgy5j3rj6c8cslzidh32glhkrhbbdxjc008y69v8a0y3zyaz2d3";
};
meta = {
license = [ pkgs.lib.licenses.bsdOriginal ];
@ -862,11 +879,11 @@ self: super: {
};
};
"itsdangerous" = super.buildPythonPackage {
name = "itsdangerous-0.24";
name = "itsdangerous-1.1.0";
doCheck = false;
src = fetchurl {
url = "https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz";
sha256 = "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb";
url = "https://files.pythonhosted.org/packages/68/1a/f27de07a8a304ad5fa817bbe383d1238ac4396da447fa11ed937039fa04b/itsdangerous-1.1.0.tar.gz";
sha256 = "068zpbksq5q2z4dckh2k1zbcq43ay74ylqn77rni797j0wyh66rj";
};
meta = {
license = [ pkgs.lib.licenses.bsdOriginal ];
@ -993,6 +1010,17 @@ self: super: {
license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd3 ];
};
};
"marshmallow" = super.buildPythonPackage {
name = "marshmallow-2.18.0";
doCheck = false;
src = fetchurl {
url = "https://files.pythonhosted.org/packages/ad/0b/5799965d1c6d5f608d684e2c0dce8a828e0309a3bfe8327d9418a89f591c/marshmallow-2.18.0.tar.gz";
sha256 = "1g0aafpjn7yaxq06yndy8c7rs9n42adxkqq1ayhlr869pr06d3lm";
};
meta = {
license = [ pkgs.lib.licenses.mit ];
};
};
"mistune" = super.buildPythonPackage {
name = "mistune-0.8.4";
doCheck = false;
@ -1522,6 +1550,20 @@ self: super: {
license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
};
};
"pyramid-apispec" = super.buildPythonPackage {
name = "pyramid-apispec-0.3.2";
doCheck = false;
propagatedBuildInputs = [
self."apispec"
];
src = fetchurl {
url = "https://files.pythonhosted.org/packages/2a/30/1dea5d81ea635449572ba60ec3148310d75ae4530c3c695f54b0991bb8c7/pyramid_apispec-0.3.2.tar.gz";
sha256 = "0ffrcqp9dkykivhfcq0v9lgy6w0qhwl6x78925vfjmayly9r8da0";
};
meta = {
license = [ pkgs.lib.licenses.bsdOriginal ];
};
};
"pyramid-mailer" = super.buildPythonPackage {
name = "pyramid-mailer-0.15.1";
doCheck = false;
@ -1763,6 +1805,17 @@ self: super: {
license = [ pkgs.lib.licenses.bsdOriginal { fullName = "LGPL+BSD"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
};
};
"PyYAML" = super.buildPythonPackage {
name = "PyYAML-5.3.1";
doCheck = false;
src = fetchurl {
url = "https://files.pythonhosted.org/packages/64/c2/b80047c7ac2478f9501676c988a5411ed5572f35d1beff9cae07d321512c/PyYAML-5.3.1.tar.gz";
sha256 = "0pb4zvkfxfijkpgd1b86xjsqql97ssf1knbd1v53wkg1qm9cgsmq";
};
meta = {
license = [ pkgs.lib.licenses.mit ];
};
};
"redis" = super.buildPythonPackage {
name = "redis-3.4.1";
doCheck = false;

View file

@ -5,7 +5,7 @@ babel==1.3
beaker==1.9.1
bleach==3.1.3
celery==4.3.0
channelstream==0.5.2
channelstream==0.6.14
click==7.0
colander==1.7.0
# our custom configobj
@ -22,7 +22,7 @@ future==0.14.3
futures==3.0.2
infrae.cache==1.0.1
iso8601==0.1.12
itsdangerous==0.24
itsdangerous==1.1.0
kombu==4.6.6
lxml==4.2.5
mako==1.1.0

View file

@ -18,10 +18,11 @@ jsonschema==2.6.0
pluggy==0.13.1
pyasn1-modules==0.2.6
pyramid-jinja2==2.7
pyramid-apispec==0.3.2
scandir==1.10.0
setproctitle==1.1.10
tempita==0.5.2
testpath==0.4.4
transaction==2.4.0
vine==1.3.0
wcwidth==0.1.9
wcwidth==0.1.9

View file

@ -34,7 +34,7 @@ from rhodecode.lib.channelstream import (
get_user_data,
parse_channels_info,
update_history_from_logs,
STATE_PUBLIC_KEYS)
USER_STATE_PUBLIC_KEYS)
from rhodecode.lib.auth import NotAnonymous
@ -86,14 +86,16 @@ class ChannelstreamView(BaseAppView):
'display_name': None,
'display_link': None,
}
user_data['permissions'] = self._rhodecode_user.permissions_safe
#user_data['permissions'] = self._rhodecode_user.permissions_safe
payload = {
'username': user.username,
'user_state': user_data,
'conn_id': str(uuid.uuid4()),
'channels': channels,
'channel_configs': {},
'state_public_keys': STATE_PUBLIC_KEYS,
'state_public_keys': USER_STATE_PUBLIC_KEYS,
'info': {
'exclude_channels': ['broadcast']
}
@ -118,10 +120,13 @@ class ChannelstreamView(BaseAppView):
'Channelstream service at {} is down'.format(channelstream_url))
return HTTPBadGateway()
channel_info = connect_result.get('channels_info')
if not channel_info:
raise HTTPBadRequest()
connect_result['channels'] = channels
connect_result['channels_info'] = parse_channels_info(
connect_result['channels_info'],
include_channel_info=filtered_channels)
channel_info, include_channel_info=filtered_channels)
update_history_from_logs(self.channelstream_config,
filtered_channels, connect_result)
return connect_result
@ -167,10 +172,15 @@ class ChannelstreamView(BaseAppView):
log.exception(
'Channelstream service at {} is down'.format(channelstream_url))
return HTTPBadGateway()
channel_info = connect_result.get('channels_info')
if not channel_info:
raise HTTPBadRequest()
# include_channel_info will limit history only to new channel
# to not overwrite histories on other channels in client
connect_result['channels_info'] = parse_channels_info(
connect_result['channels_info'],
channel_info,
include_channel_info=filtered_channels)
update_history_from_logs(
self.channelstream_config, filtered_channels, connect_result)

View file

@ -1890,7 +1890,7 @@
"url": "http://spdx.org/licenses/BSD-4-Clause.html"
}
],
"name": "python2.7-channelstream-0.5.2"
"name": "python2.7-channelstream-0.6.14"
},
{
"license": [

View file

@ -37,8 +37,9 @@ log = logging.getLogger(__name__)
LOCK = ReadWriteMutex()
STATE_PUBLIC_KEYS = ['id', 'username', 'first_name', 'last_name',
'icon_link', 'display_name', 'display_link']
USER_STATE_PUBLIC_KEYS = [
'id', 'username', 'first_name', 'last_name',
'icon_link', 'display_name', 'display_link']
class ChannelstreamException(Exception):
@ -64,6 +65,8 @@ def channelstream_request(config, payload, endpoint, raise_exc=True):
'x-channelstream-endpoint': endpoint,
'Content-Type': 'application/json'}
req_url = get_channelstream_server_url(config, endpoint)
log.debug('Sending a channelstream request to endpoint: `%s`', req_url)
response = None
try:
response = requests.post(req_url, data=json.dumps(payload),
@ -76,6 +79,7 @@ def channelstream_request(config, payload, endpoint, raise_exc=True):
log.exception('Exception related to Channelstream happened')
if raise_exc:
raise ChannelstreamConnectionException()
log.debug('Got channelstream response: %s', response)
return response
@ -154,7 +158,7 @@ def parse_channels_info(info_result, include_channel_info=None):
for userinfo in info_result['users']:
user_state_dict[userinfo['user']] = {
k: v for k, v in userinfo['state'].items()
if k in STATE_PUBLIC_KEYS
if k in USER_STATE_PUBLIC_KEYS
}
channels_info = {}
@ -163,9 +167,9 @@ def parse_channels_info(info_result, include_channel_info=None):
if c_name not in include_channel_info:
continue
connected_list = []
for userinfo in c_info['users']:
for username in c_info['users']:
connected_list.append({
'user': userinfo['user'],
'user': username,
'state': user_state_dict[userinfo['user']]
})
channels_info[c_name] = {'users': connected_list,
@ -230,6 +234,14 @@ def get_connection_validators(registry):
def post_message(channel, message, username, registry=None):
message_obj = message
if isinstance(message, basestring):
message_obj = {
'message': message,
'level': 'success',
'topic': '/notifications'
}
if not registry:
registry = get_current_registry()
@ -243,11 +255,7 @@ def post_message(channel, message, username, registry=None):
'user': 'system',
'exclude_users': [username],
'channel': channel,
'message': {
'message': message,
'level': 'success',
'topic': '/notifications'
}
'message': message_obj
}
try: