summaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorguillep2k <18600385+guillep2k@users.noreply.github.com>2019-10-08 16:48:57 -0300
committertechknowlogick <techknowlogick@gitea.io>2019-10-08 15:48:57 -0400
commitf05a3353f4788ade6156bf132796690cf3154fd3 (patch)
treeae53bc44ce43cc67a57534fe6367cbe81f6f1396 /vendor
parent4fe04f1adcd7897d4db3beee69d62d3ccdbd18da (diff)
downloadgitea-f05a3353f4788ade6156bf132796690cf3154fd3.tar.gz
gitea-f05a3353f4788ade6156bf132796690cf3154fd3.zip
Update strk.kbt.io/projects/go/libravatar to latest; closes #7860 (#8429)
Diffstat (limited to 'vendor')
-rw-r--r--vendor/modules.txt2
-rw-r--r--vendor/strk.kbt.io/projects/go/libravatar/Makefile12
-rw-r--r--vendor/strk.kbt.io/projects/go/libravatar/README.md6
-rw-r--r--vendor/strk.kbt.io/projects/go/libravatar/libravatar.go72
4 files changed, 58 insertions, 34 deletions
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 71ba274867..8b2224f54a 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -612,7 +612,7 @@ gopkg.in/warnings.v0
gopkg.in/yaml.v2
# mvdan.cc/xurls/v2 v2.0.0
mvdan.cc/xurls/v2
-# strk.kbt.io/projects/go/libravatar v0.0.0-20160628055650-5eed7bff870a
+# strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251
strk.kbt.io/projects/go/libravatar
# xorm.io/builder v0.3.6
xorm.io/builder
diff --git a/vendor/strk.kbt.io/projects/go/libravatar/Makefile b/vendor/strk.kbt.io/projects/go/libravatar/Makefile
new file mode 100644
index 0000000000..2a70ddc72c
--- /dev/null
+++ b/vendor/strk.kbt.io/projects/go/libravatar/Makefile
@@ -0,0 +1,12 @@
+PACKAGES ?= $(shell go list ./...)
+
+.PHONY: check
+check: lint
+ go test
+
+.PHONY: lint
+lint:
+ @which golint > /dev/null; if [ $$? -ne 0 ]; then \
+ go get -u github.com/golang/lint/golint; \
+ fi
+ @for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done;
diff --git a/vendor/strk.kbt.io/projects/go/libravatar/README.md b/vendor/strk.kbt.io/projects/go/libravatar/README.md
index 660cd90643..c0a9f942e2 100644
--- a/vendor/strk.kbt.io/projects/go/libravatar/README.md
+++ b/vendor/strk.kbt.io/projects/go/libravatar/README.md
@@ -1,12 +1,14 @@
Simple [golang](https://www.golang.org) library for serving
[federated avatars](https://www.libravatar.org)
+[![trunk](https://goreportcard.com/badge/strk.kbt.io/projects/go/libravatar)]
+(https://goreportcard.com/report/strk.kbt.io/projects/go/libravatar)
+
# Use
```sh
go get strk.kbt.io/projects/go/libravatar
-cd $GOPATH/src/strk.kbt.io/projects/go/libravatar
-go doc
+go doc strk.kbt.io/projects/go/libravatar
```
# Contribute
diff --git a/vendor/strk.kbt.io/projects/go/libravatar/libravatar.go b/vendor/strk.kbt.io/projects/go/libravatar/libravatar.go
index 4c748456f3..fe544cd4b4 100644
--- a/vendor/strk.kbt.io/projects/go/libravatar/libravatar.go
+++ b/vendor/strk.kbt.io/projects/go/libravatar/libravatar.go
@@ -5,7 +5,7 @@
// Implements support for federated avatars lookup.
// See https://wiki.libravatar.org/api/
-package libravatar
+package libravatar // import "strk.kbt.io/projects/go/libravatar"
import (
"crypto/md5"
@@ -16,6 +16,7 @@ import (
"net/mail"
"net/url"
"strings"
+ "sync"
"time"
)
@@ -38,7 +39,8 @@ const (
)
var (
- // Default object, enabling object-less function calls
+ // DefaultLibravatar is a default Libravatar object,
+ // enabling object-less function calls
DefaultLibravatar = New()
)
@@ -53,14 +55,16 @@ type cacheValue struct {
checkedAt time.Time
}
+// Libravatar is an opaque structure holding service configuration
type Libravatar struct {
- defUrl string // default url
+ defURL string // default url
picSize int // picture size
fallbackHost string // default fallback URL
secureFallbackHost string // default fallback URL for secure connections
useHTTPS bool
nameCache map[cacheKey]cacheValue
nameCacheDuration time.Duration
+ nameCacheMutex *sync.Mutex
minSize uint // smallest image dimension allowed
maxSize uint // largest image dimension allowed
size uint // what dimension should be used
@@ -68,7 +72,7 @@ type Libravatar struct {
secureServiceBase string // SRV record to be queried for federation with secure servers
}
-// Instanciate a library handle
+// New instanciates a new Libravatar object (handle)
func New() *Libravatar {
// According to https://wiki.libravatar.org/running_your_own/
// the time-to-live (cache expiry) should be set to at least 1 day.
@@ -82,27 +86,28 @@ func New() *Libravatar {
secureServiceBase: `avatars-sec`,
nameCache: make(map[cacheKey]cacheValue),
nameCacheDuration: 24 * time.Hour,
+ nameCacheMutex: &sync.Mutex{},
}
}
-// Set the hostname for fallbacks in case no avatar service is defined
-// for a domain
+// SetFallbackHost sets the hostname for fallbacks in case no avatar
+// service is defined for a domain
func (v *Libravatar) SetFallbackHost(host string) {
v.fallbackHost = host
}
-// Set the hostname for fallbacks in case no avatar service is defined
-// for a domain, when requiring secure domains
+// SetSecureFallbackHost sets the hostname for fallbacks in case no
+// avatar service is defined for a domain, when requiring secure domains
func (v *Libravatar) SetSecureFallbackHost(host string) {
v.secureFallbackHost = host
}
-// Set useHTTPS flag
+// SetUseHTTPS sets flag requesting use of https for fetching avatars
func (v *Libravatar) SetUseHTTPS(use bool) {
v.useHTTPS = use
}
-// Set Avatars image dimension (0 for default)
+// SetAvatarSize sets avatars image dimension (0 for default)
func (v *Libravatar) SetAvatarSize(size uint) {
v.size = size
}
@@ -150,8 +155,8 @@ func (v *Libravatar) process(email *mail.Address, openid *url.URL) (string, erro
res := fmt.Sprintf("%s/avatar/%s", URL, v.genHash(email, openid))
values := make(url.Values)
- if v.defUrl != "" {
- values.Add("d", v.defUrl)
+ if v.defURL != "" {
+ values.Add("d", v.defURL)
}
if v.size > 0 {
values.Add("s", fmt.Sprintf("%d", v.size))
@@ -181,7 +186,9 @@ func (v *Libravatar) baseURL(email *mail.Address, openid *url.URL) (string, erro
host := v.getDomain(email, openid)
key := cacheKey{service, host}
now := time.Now()
+ v.nameCacheMutex.Lock()
val, found := v.nameCache[key]
+ v.nameCacheMutex.Unlock()
if found && now.Sub(val.checkedAt) <= v.nameCacheDuration {
return protocol + val.target, nil
}
@@ -204,53 +211,55 @@ func (v *Libravatar) baseURL(email *mail.Address, openid *url.URL) (string, erro
}
var (
- total_weight uint16
- records []record
- top_priority = addrs[0].Priority
- top_record *net.SRV
+ totalWeight uint16
+ records []record
+ topPriority = addrs[0].Priority
+ topRecord *net.SRV
)
for _, rr := range addrs {
- if rr.Priority > top_priority {
+ if rr.Priority > topPriority {
continue
- } else if rr.Priority < top_priority {
+ } else if rr.Priority < topPriority {
// won't happen, because net sorts
// by priority, but just in case
- total_weight = 0
+ totalWeight = 0
records = nil
- top_priority = rr.Priority
+ topPriority = rr.Priority
}
- total_weight += rr.Weight
+ totalWeight += rr.Weight
if rr.Weight > 0 {
- records = append(records, record{rr, total_weight})
+ records = append(records, record{rr, totalWeight})
} else if rr.Weight == 0 {
- records = append([]record{record{srv: rr, weight: total_weight}}, records...)
+ records = append([]record{record{srv: rr, weight: totalWeight}}, records...)
}
}
if len(records) == 1 {
- top_record = records[0].srv
+ topRecord = records[0].srv
} else {
- randnum := uint16(rand.Intn(int(total_weight)))
+ randnum := uint16(rand.Intn(int(totalWeight)))
for _, rr := range records {
if rr.weight >= randnum {
- top_record = rr.srv
+ topRecord = rr.srv
break
}
}
}
- domain = fmt.Sprintf("%s:%d", top_record.Target, top_record.Port)
+ domain = fmt.Sprintf("%s:%d", topRecord.Target, topRecord.Port)
}
+ v.nameCacheMutex.Lock()
v.nameCache[key] = cacheValue{checkedAt: now, target: domain}
+ v.nameCacheMutex.Unlock()
return protocol + domain, nil
}
-// Return url of the avatar for the given email
+// FromEmail returns the url of the avatar for the given email
func (v *Libravatar) FromEmail(email string) (string, error) {
addr, err := mail.ParseAddress(email)
if err != nil {
@@ -265,12 +274,13 @@ func (v *Libravatar) FromEmail(email string) (string, error) {
return link, nil
}
-// Object-less call to DefaultLibravatar for an email adders
+// FromEmail is the object-less call to DefaultLibravatar for an email adders
func FromEmail(email string) (string, error) {
return DefaultLibravatar.FromEmail(email)
}
-// Return url of the avatar for the given url (typically for OpenID)
+// FromURL returns the url of the avatar for the given url (typically
+// for OpenID)
func (v *Libravatar) FromURL(openid string) (string, error) {
ourl, err := url.Parse(openid)
if err != nil {
@@ -291,7 +301,7 @@ func (v *Libravatar) FromURL(openid string) (string, error) {
return link, nil
}
-// Object-less call to DefaultLibravatar for a URL
+// FromURL is the object-less call to DefaultLibravatar for a URL
func FromURL(openid string) (string, error) {
return DefaultLibravatar.FromURL(openid)
}