From 294a1fbf34b07bc2f5929f60b9b14ec985b257e5 Mon Sep 17 00:00:00 2001 From: Jace Browning Date: Wed, 17 Jun 2015 20:16:24 -0400 Subject: [PATCH] Switch to JPEG-only JPEGs should be good enough and this prevents over-zealous route matches that killed the CSS. --- memegen/domain/image.py | 7 ++----- memegen/routes/image.py | 14 +++++++------- memegen/routes/links.py | 17 ++++++----------- memegen/services/image.py | 4 ++-- tests/test_all.py | 33 ++++----------------------------- 5 files changed, 21 insertions(+), 54 deletions(-) diff --git a/memegen/domain/image.py b/memegen/domain/image.py index b1cdbad3..6bb43f10 100644 --- a/memegen/domain/image.py +++ b/memegen/domain/image.py @@ -7,13 +7,10 @@ class Image: - """Meme image generated from a template.""" - - # TODO: support more image types - KINDS = ('JPG',) # 'PNG', 'GIF') + """Meme JPEG generated from a template.""" @classmethod - def from_template(cls, template, text, kind): + def from_template(cls, template, text): make_meme(text.top, text.bottom, template.path) return "../temp.jpg" diff --git a/memegen/routes/image.py b/memegen/routes/image.py index 43d06b95..d2ffc1f2 100644 --- a/memegen/routes/image.py +++ b/memegen/routes/image.py @@ -5,23 +5,23 @@ blueprint = Blueprint('image', __name__, url_prefix="/") -@blueprint.route("/.") -def get(key, path, kind): +@blueprint.route("/.jpg") +def get(key, path): template = domain.Template(key) text = domain.Text(path) if path != text.path: - return redirect(url_for(".get", key=key, path=text.path, kind=kind)) - _path = app.image_service.create_image(template, text, kind) + return redirect(url_for(".get", key=key, path=text.path)) + _path = app.image_service.create_image(template, text) return send_file(_path, mimetype='image/jpeg') -@blueprint.route(".") -def get_encoded(code, kind): +@blueprint.route(".jpg") +def get_encoded(code): key, path = app.link_service.decode(code) # TODO: maybe this shouldn't redirect # url = url_for('.get_visible', key=key, top=top, bottom=bottom, kind=kind) # return redirect(url) template = domain.Template(key) text = domain.Text(path) - _path = app.image_service.create_image(template, text, kind) + _path = app.image_service.create_image(template, text) return send_file(_path, mimetype='image/jpeg') diff --git a/memegen/routes/links.py b/memegen/routes/links.py index 2b63be4d..44788fcc 100644 --- a/memegen/routes/links.py +++ b/memegen/routes/links.py @@ -2,7 +2,7 @@ from flask import Blueprint, current_app as app, url_for, redirect -from ..domain import Image, Text +from ..domain import Text blueprint = Blueprint('links', __name__, url_prefix="/") @@ -11,20 +11,15 @@ @blueprint.route("/") def get(**kwargs): """Get links for generated images.""" - data = OrderedDict() - data['visible'] = OrderedDict() - data['hidden'] = OrderedDict() text = Text(kwargs['path']) if kwargs['path'] != text.path: kwargs['path'] = text.path return redirect(url_for(".get", **kwargs)) - for kind in Image.KINDS: - url = url_for('image.get', kind=kind.lower(), _external=True, **kwargs) - data['visible'][kind] = url - code = app.link_service.encode(**kwargs) - url = url_for('image.get_encoded', kind=kind.lower(), _external=True, - code=code) - data['hidden'][kind] = url + + data = OrderedDict() + data['visible'] = url_for('image.get', _external=True, **kwargs) + code = app.link_service.encode(**kwargs) + data['hidden'] = url_for('image.get_encoded', _external=True, code=code) return data diff --git a/memegen/services/image.py b/memegen/services/image.py index 0b3eab31..2479bdbd 100644 --- a/memegen/services/image.py +++ b/memegen/services/image.py @@ -16,7 +16,7 @@ def find_template(self, template): raise self.exceptions.not_found return template - def create_image(self, template, text, kind): + def create_image(self, template, text): template = self.find_template(template) - image = domain.Image.from_template(template, text, kind) + image = domain.Image.from_template(template, text) return image diff --git a/tests/test_all.py b/tests/test_all.py index 3bd80c92..9df8218b 100644 --- a/tests/test_all.py +++ b/tests/test_all.py @@ -34,24 +34,16 @@ def test_get_links(self, client): response = client.get("/iw/hello/world") assert response.status_code == 200 assert dict( - visible=dict( - JPG="http://localhost/iw/hello/world.jpg", - ), - hidden=dict( - JPG="http://localhost/aXcJaGVsbG8vd29ybGQJ.jpg", - ), + visible="http://localhost/iw/hello/world.jpg", + hidden="http://localhost/aXcJaGVsbG8vd29ybGQJ.jpg", ) == load(response) def test_get_links_with_1_line(self, client): response = client.get("/iw/hello") assert response.status_code == 200 assert dict( - visible=dict( - JPG="http://localhost/iw/hello.jpg", - ), - hidden=dict( - JPG="http://localhost/aXcJaGVsbG8J.jpg", - ), + visible="http://localhost/iw/hello.jpg", + hidden="http://localhost/aXcJaGVsbG8J.jpg", ) == load(response) def test_get_links_redirects_to_dashes(self, client): @@ -83,23 +75,6 @@ def test_get_visible_jpg_1_line(self, client): assert response.status_code == 200 assert response.mimetype == 'image/jpeg' - # TODO: add more image types - - # def test_get_visible_jpeg(self, client): - # response = client.get("/iw/hello/world.jpeg") - # assert response.status_code == 200 - # assert response.mimetype == 'image/jpeg' - - # def test_get_visible_png(self, client): - # response = client.get("/iw/hello/world.png") - # assert response.status_code == 200 - # assert response.mimetype == 'image/png' - - # def test_get_visible_gif(self, client): - # response = client.get("/iw/hello/world.gif") - # assert response.status_code == 200 - # assert response.mimetype == 'image/gif' - def test_get_hidden_jpg(self, client): response = client.get("/aXcJaGVsbG8vd29ybGQJ.jpg") assert response.status_code == 200