mirror of
				https://github.com/mickael-kerjean/filestash.git
				synced 2025-10-30 09:37:55 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package common
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"encoding/json"
 | |
| 	"sync"
 | |
| )
 | |
| 
 | |
| func NewBool(t bool) *bool {
 | |
| 	return &t
 | |
| }
 | |
| 
 | |
| func NewString(t string) *string {
 | |
| 	if t == "" {
 | |
| 		return nil
 | |
| 	}
 | |
| 	return &t
 | |
| }
 | |
| 
 | |
| func NewInt(t int) *int {
 | |
| 	return &t
 | |
| }
 | |
| 
 | |
| func NewBoolFromInterface(val interface{}) bool {
 | |
| 	switch val.(type) {
 | |
| 	case bool: return val.(bool)
 | |
| 	default: return false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func NewInt64pFromInterface(val interface{}) *int64 {
 | |
| 	switch val.(type) {
 | |
| 	case int64:
 | |
| 		v := val.(int64)
 | |
| 		return &v
 | |
| 	case float64:
 | |
| 		v := int64(val.(float64))
 | |
| 		return &v
 | |
| 	default: return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func NewStringpFromInterface(val interface{}) *string {
 | |
| 	switch val.(type) {
 | |
| 	case string:
 | |
| 		v := val.(string)
 | |
| 		return &v
 | |
| 	default: return nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func NewStringFromInterface(val interface{}) string {
 | |
| 	switch val.(type) {
 | |
| 	case string:
 | |
| 		v := val.(string)
 | |
| 		return v
 | |
| 	default: return ""
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func PrettyPrint(json_dirty []byte) []byte {
 | |
| 	var json_pretty bytes.Buffer
 | |
| 	error := json.Indent(&json_pretty, json_dirty, "", "    ")
 | |
| 	if error != nil {
 | |
| 		return json_dirty
 | |
| 	}
 | |
| 	json_pretty.Write([]byte("\n"))
 | |
| 	return json_pretty.Bytes()
 | |
| }
 | |
| 
 | |
| type SafeMapStringString struct {
 | |
| 	sync.RWMutex
 | |
| 	internal map[string]string
 | |
| }
 | |
| 
 | |
| func NewSafeMapStringString() SafeMapStringString {
 | |
| 	return SafeMapStringString{
 | |
| 		internal: make(map[string]string),
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func(this SafeMapStringString) Set(key string, value string) {
 | |
| 	this.Lock()
 | |
| 	this.internal[key] = value
 | |
| 	this.Unlock()
 | |
| }
 | |
| 
 | |
| func(this SafeMapStringString) Gets(keys ...string) []string{
 | |
| 	this.RLock()
 | |
| 	res := make([]string, len(keys))
 | |
|     for i, key := range keys {
 | |
| 		res[i] = this.internal[key]
 | |
|     }
 | |
| 	this.RUnlock()
 | |
| 	return res
 | |
| }
 | 
