github.com/louisevanderlith/droxolite@v1.20.2/drx/common.go (about)

     1  package drx
     2  
     3  import (
     4  	"crypto/md5"
     5  	"encoding/json"
     6  	"fmt"
     7  	"github.com/gorilla/mux"
     8  	"net/http"
     9  	"strconv"
    10  	"strings"
    11  )
    12  
    13  //JSONBody will bind JSON body to container
    14  func JSONBody(r *http.Request, container interface{}) error {
    15  	decoder := json.NewDecoder(r.Body)
    16  	return decoder.Decode(container)
    17  }
    18  
    19  //FindParam will return named path parameter value
    20  func FindParam(r *http.Request, name string) string {
    21  	vars := mux.Vars(r)
    22  	return vars[name]
    23  }
    24  
    25  //FindQueryParam returns the First requested querystring parameter
    26  func FindQueryParam(r *http.Request, name string) string {
    27  	results, ok := r.URL.Query()[name]
    28  
    29  	if !ok {
    30  		return ""
    31  	}
    32  
    33  	return results[0]
    34  }
    35  
    36  //GetPageData will attempt to parse the request Url for page sizes.
    37  func GetPageData(r *http.Request) (page, pageSize int) {
    38  	pageData := FindParam(r, "pagesize")
    39  	return ParsePageData(pageData)
    40  }
    41  
    42  //turns /B5 into page 2. size 5
    43  func ParsePageData(pageData string) (int, int) {
    44  	defaultPage := 1
    45  	defaultSize := 10
    46  
    47  	if len(pageData) < 2 {
    48  		return defaultPage, defaultSize
    49  	}
    50  
    51  	pChar := []rune(pageData[:1])
    52  
    53  	if len(pChar) != 1 {
    54  		return defaultPage, defaultSize
    55  	}
    56  
    57  	page := int(pChar[0]) % 32
    58  	pageSize, err := strconv.Atoi(pageData[1:])
    59  
    60  	if err != nil {
    61  		return defaultPage, defaultSize
    62  	}
    63  
    64  	return page, pageSize
    65  }
    66  
    67  func GravatarHash(email string) string {
    68  	if len(email) == 0 {
    69  		return ""
    70  	}
    71  
    72  	gravatar := md5.Sum([]byte(strings.ToLower(strings.Trim(email, " "))))
    73  
    74  	return fmt.Sprintf("%x", gravatar)
    75  }