diff --git a/LICENSE b/LICENSE index 1c812fe..92ad68f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Dulan H +Copyright (c) 2024 Dulan Katukurundage Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/api.http b/api.http new file mode 100644 index 0000000..e455d8c --- /dev/null +++ b/api.http @@ -0,0 +1,223 @@ +### Variables +@baseUrl = http://localhost:8080 +@testImage = ./test/fixtures/sample.jpg + +### ------------------------------------------------------------------- +### GET / +### Root — returns plain-text server identity +### ------------------------------------------------------------------- +GET {{baseUrl}}/ +Accept: text/plain + +### ------------------------------------------------------------------- +### GET /health +### Health check — returns status and version +### ------------------------------------------------------------------- +GET {{baseUrl}}/health +Accept: application/json + +### ------------------------------------------------------------------- +### GET /info +### Get image metadata (multipart form) +### ------------------------------------------------------------------- +GET {{baseUrl}}/info +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary-- + +### ------------------------------------------------------------------- +### POST /info +### Get image metadata (same handler, POST allowed) +### ------------------------------------------------------------------- +POST {{baseUrl}}/info +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary-- + +### ------------------------------------------------------------------- +### POST /resize +### Resize image — fit mode (default), width=400, height=300 +### ------------------------------------------------------------------- +POST {{baseUrl}}/resize +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary +Content-Disposition: form-data; name="width" + +400 +------boundary +Content-Disposition: form-data; name="height" + +300 +------boundary +Content-Disposition: form-data; name="mode" + +fit +------boundary +Content-Disposition: form-data; name="format" + +jpeg +------boundary +Content-Disposition: form-data; name="quality" + +85 +------boundary-- + +### ------------------------------------------------------------------- +### POST /resize — fill mode, WebP output +### ------------------------------------------------------------------- +POST {{baseUrl}}/resize +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary +Content-Disposition: form-data; name="width" + +800 +------boundary +Content-Disposition: form-data; name="height" + +600 +------boundary +Content-Disposition: form-data; name="mode" + +fill +------boundary +Content-Disposition: form-data; name="format" + +webp +------boundary +Content-Disposition: form-data; name="quality" + +90 +------boundary-- + +### ------------------------------------------------------------------- +### POST /resize — stretch mode, auto-width (0), PNG output +### ------------------------------------------------------------------- +POST {{baseUrl}}/resize +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary +Content-Disposition: form-data; name="width" + +0 +------boundary +Content-Disposition: form-data; name="height" + +500 +------boundary +Content-Disposition: form-data; name="mode" + +stretch +------boundary +Content-Disposition: form-data; name="format" + +png +------boundary-- + +### ------------------------------------------------------------------- +### POST /convert +### Convert image to PNG +### ------------------------------------------------------------------- +POST {{baseUrl}}/convert +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary +Content-Disposition: form-data; name="format" + +png +------boundary +Content-Disposition: form-data; name="quality" + +90 +------boundary-- + +### ------------------------------------------------------------------- +### POST /convert — to WebP +### ------------------------------------------------------------------- +POST {{baseUrl}}/convert +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary +Content-Disposition: form-data; name="format" + +webp +------boundary-- + +### ------------------------------------------------------------------- +### POST /optimize +### Optimize image (default quality 80, strip EXIF) +### ------------------------------------------------------------------- +POST {{baseUrl}}/optimize +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary +Content-Disposition: form-data; name="format" + +jpeg +------boundary-- + +### ------------------------------------------------------------------- +### POST /optimize — quality=75, preserve EXIF +### ------------------------------------------------------------------- +POST {{baseUrl}}/optimize +Content-Type: multipart/form-data; boundary=----boundary + +------boundary +Content-Disposition: form-data; name="image"; filename="sample.jpg" +Content-Type: image/jpeg + +< {{testImage}} +------boundary +Content-Disposition: form-data; name="format" + +png +------boundary +Content-Disposition: form-data; name="quality" + +75 +------boundary +Content-Disposition: form-data; name="strip_exif" + +false +------boundary-- diff --git a/test/fixtures/sample.JPG b/test/fixtures/sample.JPG new file mode 100755 index 0000000..0987114 Binary files /dev/null and b/test/fixtures/sample.JPG differ