Don't break when sizes or durations are given as integers

pull/136/head
Mark Haines 2015-04-30 16:04:02 +01:00
parent c28f1d16f0
commit 74aaacf82a
2 changed files with 15 additions and 12 deletions

View File

@ -26,9 +26,9 @@ for port in 8080 8081 8082; do
https_port=$((port + 400)) https_port=$((port + 400))
mkdir -p demo/$port mkdir -p demo/$port
pushd demo/$port # pushd demo/$port
rm $DIR/etc/$port.config #rm $DIR/etc/$port.config
python -m synapse.app.homeserver \ python -m synapse.app.homeserver \
--generate-config \ --generate-config \
-H "localhost:$https_port" \ -H "localhost:$https_port" \
@ -39,7 +39,7 @@ for port in 8080 8081 8082; do
-D \ -D \
-vv \ -vv \
popd # popd
done done
cd "$CWD" cd "$CWD"

View File

@ -27,30 +27,33 @@ class ConfigError(Exception):
class Config(object): class Config(object):
@staticmethod @staticmethod
def parse_size(string): def parse_size(value):
if isinstance(value, int) or isinstance(value, long):
return value
sizes = {"K": 1024, "M": 1024 * 1024} sizes = {"K": 1024, "M": 1024 * 1024}
size = 1 size = 1
suffix = string[-1] suffix = value[-1]
if suffix in sizes: if suffix in sizes:
string = string[:-1] value = value[:-1]
size = sizes[suffix] size = sizes[suffix]
return int(string) * size return int(value) * size
@staticmethod @staticmethod
def parse_duration(string): def parse_duration(value):
if isinstance(value, int) or isinstance(value, long):
return value
second = 1000 second = 1000
hour = 60 * 60 * second hour = 60 * 60 * second
day = 24 * hour day = 24 * hour
week = 7 * day week = 7 * day
year = 365 * day year = 365 * day
sizes = {"s": second, "h": hour, "d": day, "w": week, "y": year} sizes = {"s": second, "h": hour, "d": day, "w": week, "y": year}
size = 1 size = 1
suffix = string[-1] suffix = value[-1]
if suffix in sizes: if suffix in sizes:
string = string[:-1] value = value[:-1]
size = sizes[suffix] size = sizes[suffix]
return int(string) * size return int(value) * size
@staticmethod @staticmethod
def abspath(file_path): def abspath(file_path):