]> gitweb.factorcode.org Git - factor.git/commitdiff
gravatar: adding some optional avatar parameters
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 19 May 2023 18:42:57 +0000 (11:42 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 19 May 2023 18:42:57 +0000 (11:42 -0700)
extra/gravatar/gravatar.factor

index a59588be3feed0fd901d9fde7c9013bc341eaad0..5315c706ea8a0b18d1932e9818eb719e953bf371 100644 (file)
@@ -1,9 +1,10 @@
 ! Copyright (C) 2011 John Benediktsson
 ! See https://factorcode.org/license.txt for BSD license
 
-USING: accessors ascii assocs checksums checksums.md5
-classes.tuple formatting http.client images.http json kernel
-math.parser sequences strings ;
+USING: ascii assocs checksums checksums.md5 classes.tuple
+formatting http.client images.http io.encodings.string
+io.encodings.utf8 json kernel math.parser namespaces sequences
+urls ;
 
 IN: gravatar
 
@@ -14,9 +15,28 @@ profileBackground profileUrl requestHash thumbnailUrl urls ;
 : gravatar-id ( email -- gravatar-id )
     [ blank? ] trim >lower md5 checksum-bytes bytes>hex-string ;
 
-: gravatar-info ( gravatar-id -- info )
-    "https://gravatar.com/%s.json" sprintf http-get nip
-    >string json> "entry" of first info from-slots ;
+: gravatar-info ( email -- info )
+    gravatar-id "https://gravatar.com/%s.json" sprintf
+    http-get nip utf8 decode json> "entry" of first info from-slots ;
 
-: gravatar. ( gravatar-id -- )
-    gravatar-info thumbnailUrl>> http-image. ;
+! optional .jpg
+SYMBOL: gravatar-image-extension
+
+! 1px up to 2048px
+SYMBOL: gravatar-image-size
+
+! 404, mp, identicon, monsterid, wavatar, retro, robohash, blank
+SYMBOL: gravatar-image-type
+
+! g, pg, r, x
+SYMBOL: gravatar-image-rating
+
+: gravatar-image-url ( email -- url )
+    gravatar-id "https://gravatar.com/avatar/" prepend
+    gravatar-image-extension [ ".jpg" append ] when >url
+    gravatar-image-size get [ "s" set-query-param ] when*
+    gravatar-image-type get [ "d" set-query-param ] when*
+    gravatar-image-rating get [ "r" set-query-param ] when* ;
+
+: gravatar. ( email -- )
+    gravatar-image-url http-image. ;