My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# ----------------------------------------------------------------------------
# http://www.gravatar.com
# Monta a URL completa para o Gravatar do email informado.
#
# Opções: -t, --tamanho N Tamanho do avatar (padrão 80, máx 512)
# -d, --default TIPO Tipo do avatar substituto, se não encontrado
#
# Se não houver um avatar para o email, a opção --default informa que tipo
# de avatar substituto será usado em seu lugar:
# mm Mistery Man, a silhueta de uma pessoa (não muda)
# identicon Padrão geométrico, muda conforme o email
# monsterid Monstros, muda cores e rostos
# wavatar Rostos, muda características e cores
# retro Rostos pixelados, tipo videogame antigo 8-bits
# Veja exemplos em http://gravatar.com/site/implement/images/
#
# Uso: zzgravatar [--tamanho N] [--default tipo] email
# Ex.: zzgravatar fulano@dominio.com.br
# zzgravatar -t 128 -d mm fulano@dominio.com.br
# zzgravatar --tamanho 256 --default retro fulano@dominio.com.br
#
# Autor: Aurelio Marinho Jargas, www.aurelio.net
# Desde: 2011-05-06
# Versão: 1
# Licença: GPL
# Requisitos: zzmd5 zzminusculas
# ----------------------------------------------------------------------------
zzgravatar ()
{
zzzz -h gravatar "$1" && return

# Instruções de implementação:
# http://gravatar.com/site/implement/
#
# Exemplo de URL do Gravatar, com tamanho de 96 e MisteryMan:
# http://www.gravatar.com/avatar/e583bca48acb877efd4a29229bf7927f?size=96&default=mm

local email default extra codigo
local tamanho=80 # padrão caso não informado é 80
local tamanho_maximo=512
local defaults="mm:identicon:monsterid:wavatar:retro"
local url='http://www.gravatar.com/avatar/'

# Opções de linha de comando
while [ "${1#-}" != "$1" ]
do
case "$1" in
-t|--tamanho)
tamanho="$2"
extra="$extra&size=$tamanho"
shift
shift
;;
-d| --default)
default="$2"
extra="$extra&default=$default"
shift
shift
;;
*)
break
;;
esac
done

# Verificação dos parâmetros
[ "$1" ] || { zztool uso gravatar; return 1; }

# Guarda o email informado, sempre em minúsculas
email=$(zztool trim "$1" | zzminusculas)

# Foi passado um número mesmo?
if ! zztool testa_numero "$tamanho" || test "$tamanho" = 0
then
echo "Número inválido para a opção -t: $tamanho"
return 1
fi

# Temos uma limitação de tamanho
if [ $tamanho -gt $tamanho_maximo ]
then
echo "O tamanho máximo para a imagem é $tamanho_maximo"
return 1
fi

# O default informado é válido?
if test -n "$default" && ! zztool grep_var ":$default:" ":$defaults:"
then
echo "Valor inválido para a opção -d: '$default'"
return 1
fi

# Calcula o hash do email
codigo=$(printf "$email" | zzmd5)

# Verifica o hash e o coloca na URL
if test -n "$codigo"
then
url="$url$codigo"
else
echo "Houve um erro na geração do código MD5 do email"
return 1
fi

# Adiciona as opções extras na URL
if test -n "$extra"
then
url="$url?${extra#&}"
fi

# Tá feito, essa é a URL final
echo "$url"
}

Change log

r710 by aureliojargas on Mar 29, 2012   Diff
SEGURANÇA: $1 colocado entre aspas na
chamada padrão zzzz -h de todas as
funções.
Go to: 
Sign in to write a code review

Older revisions

r668 by aureliojargas on Mar 28, 2012   Diff
lint: removendo espaços inúteis.
r655 by aureliojargas on Mar 23, 2012   Diff
s/Aurélio/Aurelio/ *
r524 by aureliojargas on May 23, 2011   Diff
COMBO: Agora todas as chamadas ao
zztool uso por falha na verificação
dos parâmetros possuem um return 1
depois. Assim outros scripts que usam
as funções podem detectar erros.
All revisions of this file

File info

Size: 3095 bytes, 113 lines
Powered by Google Project Hosting