Skip to content

Commit

Permalink
v0.2.1
Browse files Browse the repository at this point in the history
  • Loading branch information
0xflotus committed Jan 10, 2023
1 parent 9bacda6 commit 4f72d07
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 14 deletions.
2 changes: 1 addition & 1 deletion rfc1924/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.2.0"
__version__ = "0.2.1"
__author__ = "0xflotus"

from .rfc1924 import encode, decode, savings
Expand Down
28 changes: 17 additions & 11 deletions rfc1924/rfc1924.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ipaddress import IPv6Address
from functools import reduce

lookup_table = [
"0",
Expand Down Expand Up @@ -101,17 +102,22 @@ def encode(ipv6):


def decode(encoded_ipv6):
exp = 0o23
sum = 0
for elem in list(
map(lambda x: lookup_table.index(x), ",".join(encoded_ipv6).split(","))
):
sum = sum + elem * 0x55 ** exp
exp -= 1
return str(IPv6Address(sum))
return str(
IPv6Address(
reduce(
lambda sum, vec: sum + vec[0] * 0x55 ** (0o23 - vec[1]),
map(
lambda vec: (lookup_table.index(vec[0]), vec[1]),
zip(encoded_ipv6, range(0o24)),
),
0,
)
)
)


def savings(ipv6):
encoded = encode(ipv6)
saving = int((1 - len(encoded) / len(ipv6)) * 100)
return f"You saved {saving}%"
return f"You saved {int((1 - len(encode(ipv6)) / len(ipv6)) * 100)}%"


print(decode("AN?6(i3Y+yVr74uX@J3P"))
2 changes: 1 addition & 1 deletion rfc1924/test_rfc1924.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
assert encode("2345:425:2ca1::567:5673:23b5") == "AN?6(i3Y+yVr74uX@J3P"
assert decode("AN?6(i3Y+yVr74uX@J3P") == "2345:425:2ca1::567:5673:23b5"

print(savings("2345:425:2ca1::567:5673:23b5"))
print(savings("2345:425:2ca1::567:5673:23b5"))
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

setup(
name="rfc1924",
version="0.2.0",
version="0.2.1",
description="Implementation of RFC 1924",
long_description=README,
long_description_content_type="text/markdown",
Expand Down

0 comments on commit 4f72d07

Please sign in to comment.