forked from tastytea/libravatarserv
Added support for different sizes
This commit is contained in:
parent
30ec8f0657
commit
b073f2e0d6
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required (VERSION 3.2)
|
cmake_minimum_required (VERSION 3.2)
|
||||||
project(libravatarserv
|
project(libravatarserv
|
||||||
VERSION 0.1.0
|
VERSION 0.2.0
|
||||||
LANGUAGES CXX
|
LANGUAGES CXX
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
20
README.md
20
README.md
|
@ -11,9 +11,6 @@ images tied to email or OpenID addresses.
|
||||||
* Default avatar for unknown addresses
|
* Default avatar for unknown addresses
|
||||||
* MD5 hashes
|
* MD5 hashes
|
||||||
* SHA256 hashes
|
* SHA256 hashes
|
||||||
|
|
||||||
### Soon
|
|
||||||
|
|
||||||
* Variable image size (`s`)
|
* Variable image size (`s`)
|
||||||
|
|
||||||
### Not supported
|
### Not supported
|
||||||
|
@ -33,9 +30,20 @@ libravatarserv looks in each of `${XDG_DATA_DIRS}` for a directory named
|
||||||
`libravatarserv`. You can force a different directory by setting the environment
|
`libravatarserv`. You can force a different directory by setting the environment
|
||||||
variable `${AVATAR_DIR}`.
|
variable `${AVATAR_DIR}`.
|
||||||
|
|
||||||
The image files are named like your email address, no file extension. Example:
|
The image files are named like your email address, no file extension. If you
|
||||||
`user@example.com`. If you want to deliver a default image for unknown email
|
want to deliver a default image for unknown email addresses, name it `default`.
|
||||||
addresses, name it `default`.
|
|
||||||
|
Test your setup on https://www.libravatar.org/tools/check/.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
A directory could look like this:
|
||||||
|
```PLAIN
|
||||||
|
/usr/share/libravatarserv
|
||||||
|
├── [ 32K] default
|
||||||
|
├── [ 759] user@example.com
|
||||||
|
└── [ 16] user+newsletter@example.com -> user@example.com
|
||||||
|
```
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
|
|
@ -58,14 +58,26 @@ int main()
|
||||||
cout << "Content-type: image/png\n\n";
|
cout << "Content-type: image/png\n\n";
|
||||||
cout.flush(); // We need to flush before we use /dev/stdout directly.
|
cout.flush(); // We need to flush before we use /dev/stdout directly.
|
||||||
|
|
||||||
|
uint16_t size = 80;
|
||||||
string digest = request.substr(8);
|
string digest = request.substr(8);
|
||||||
std::transform(digest.begin(), digest.end(), digest.begin(), ::tolower);
|
std::transform(digest.begin(), digest.end(), digest.begin(), ::tolower);
|
||||||
|
std::size_t pos = digest.find('?');
|
||||||
|
if (pos != std::string::npos)
|
||||||
|
{
|
||||||
|
pos = digest.find("s=", pos);
|
||||||
|
if (pos != std::string::npos)
|
||||||
|
{
|
||||||
|
size = static_cast<uint16_t>(std::stoul(digest.substr(pos + 2)));
|
||||||
|
cout << size << endl;
|
||||||
|
}
|
||||||
|
digest = digest.substr(0, pos);
|
||||||
|
}
|
||||||
|
|
||||||
image::Image answer = image::get(digest, 80);
|
image::Image answer = image::get(digest, size);
|
||||||
if (answer.error == 0)
|
if (answer.error == 0)
|
||||||
{
|
{
|
||||||
// answer.image.write("test.png");
|
// answer.image.write("test.png");
|
||||||
answer.image.write("/dev/stdout");
|
// answer.image.write("/dev/stdout");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user