Skip to content

Commit

Permalink
Formatting changes
Browse files Browse the repository at this point in the history
  • Loading branch information
simonwhitaker committed Oct 21, 2023
1 parent 4024ad1 commit 62ecd7f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 34 deletions.
51 changes: 27 additions & 24 deletions base64url
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import argparse
import base64
import sys

DEFAULT_IO = '-'
DEFAULT_IO = "-"


def decode(s: str) -> bytes:
Expand All @@ -27,45 +27,48 @@ def decode(s: str) -> bytes:
# is.
slen = len([b for b in s if b.isalnum()])
if slen % 4 != 0:
s += ('=' * ((4 - (slen % 4) % 4)))
s += "=" * ((4 - (slen % 4) % 4))

return base64.urlsafe_b64decode(s)


def encode(b: bytes, trim: bool = False, break_at: int = 0) -> str:
encoded_string = base64.urlsafe_b64encode(b).decode('utf-8')
encoded_string = base64.urlsafe_b64encode(b).decode("utf-8")
if trim:
encoded_string = encoded_string.rstrip('=')
encoded_string = encoded_string.rstrip("=")

if break_at > 0:
i = 0
result = ''
result = ""
while i < len(encoded_string):
result += encoded_string[i:i + break_at] + '\n'
result += encoded_string[i : i + break_at] + "\n"
i += break_at
return result
else:
return encoded_string


if __name__ == '__main__':
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-b', '--breakat',
parser.add_argument(
"-b",
"--breakat",
type=int,
default=0,
help='break encoded string into num character lines')
parser.add_argument('-t', '--trim',
action='store_true',
help='trim padding on encoded string')
parser.add_argument('-d', '-D', '--decode',
action='store_true',
help='decodes input')
parser.add_argument('-i', '--input',
default=DEFAULT_IO,
help='input file (default: stdin)')
parser.add_argument('-o', '--output',
default=DEFAULT_IO,
help='output file (default: stdout)')
help="break encoded string into num character lines",
)
parser.add_argument(
"-t", "--trim", action="store_true", help="trim padding on encoded string"
)
parser.add_argument(
"-d", "-D", "--decode", action="store_true", help="decodes input"
)
parser.add_argument(
"-i", "--input", default=DEFAULT_IO, help="input file (default: stdin)"
)
parser.add_argument(
"-o", "--output", default=DEFAULT_IO, help="output file (default: stdout)"
)
args = parser.parse_args()

if args.decode:
Expand All @@ -77,20 +80,20 @@ if __name__ == '__main__':
if args.output == DEFAULT_IO:
output = sys.stdout.buffer
else:
output = open(args.output, 'wb')
output = open(args.output, "wb")

encoded_string = input.read()
output.write(decode(encoded_string))
else:
if args.input == DEFAULT_IO:
input = sys.stdin.buffer
else:
input = open(args.input, 'rb')
input = open(args.input, "rb")

if args.output == DEFAULT_IO:
output = sys.stdout
else:
output = open(args.output, 'w')
output = open(args.output, "w")

data = input.read()
output.write(encode(data, args.trim, args.breakat))
16 changes: 6 additions & 10 deletions tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,26 @@
from importlib.util import spec_from_loader, module_from_spec
from importlib.machinery import SourceFileLoader

spec = spec_from_loader(
"base64url",
SourceFileLoader("base64url", "./base64url")
)
spec = spec_from_loader("base64url", SourceFileLoader("base64url", "./base64url"))
base64url = module_from_spec(spec)
spec.loader.exec_module(base64url)


class TestBase64URL(unittest.TestCase):
def test_decode(self):
self.assertEqual(base64url.decode('SGVsbG8gd29ybGQ='), b'Hello world')
self.assertEqual(base64url.decode("SGVsbG8gd29ybGQ="), b"Hello world")

def test_decode_no_padding(self):
self.assertEqual(base64url.decode('SGVsbG8gd29ybGQ'), b'Hello world')
self.assertEqual(base64url.decode("SGVsbG8gd29ybGQ"), b"Hello world")

def test_decode_empty_string(self):
self.assertEqual(base64url.decode(''), b'')
self.assertEqual(base64url.decode(""), b"")

def test_encode(self):
self.assertEqual(base64url.encode(b'Hello world'), 'SGVsbG8gd29ybGQ=')
self.assertEqual(base64url.encode(b"Hello world"), "SGVsbG8gd29ybGQ=")

def test_encode_trimmed(self):
self.assertEqual(
base64url.encode(b'Hello world', trim=True), 'SGVsbG8gd29ybGQ')
self.assertEqual(base64url.encode(b"Hello world", trim=True), "SGVsbG8gd29ybGQ")


if __name__ == "__main__":
Expand Down

0 comments on commit 62ecd7f

Please sign in to comment.