GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Test Setup Failed
Push — master ( 92bfe4...20f92c )
by Amir
01:20
created

memcached.getHandler   A

Complexity

Conditions 3

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 8
nop 4
dl 0
loc 12
rs 10
c 0
b 0
f 0
1
package memcached
2
3
import (
4
	"context"
5
	"github.com/arazmj/gerdu/cache"
6
	mc "github.com/arazmj/gomemcached"
7
	log "github.com/sirupsen/logrus"
8
	"strconv"
9
)
10
11
func MemcachedServe(host string, gerdu cache.UnImplementedCache) {
0 ignored issues
show
introduced by
exported function MemcachedServe should have comment or be unexported
Loading history...
introduced by
func name will be used as memcached.MemcachedServe by other packages, and that stutters; consider calling this Serve
Loading history...
12
	mockServer := mc.NewServer(host)
13
	mockServer.RegisterFunc("get", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
14
		return getHandler(ctx, req, res, gerdu)
15
	})
16
	mockServer.RegisterFunc("gets", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
17
		return getHandler(ctx, req, res, gerdu)
18
	})
19
	mockServer.RegisterFunc("set", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
20
		return setHandler(ctx, req, res, gerdu)
21
	})
22
	mockServer.RegisterFunc("delete", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
23
		return deleteHandler(ctx, req, res, gerdu)
24
25
	})
26
	mockServer.RegisterFunc("incr", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
27
		return incrHandler(ctx, req, res, gerdu)
28
	})
29
	mockServer.RegisterFunc("flush_all", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
30
		return flushAllHandler(ctx, req, res, gerdu)
31
	})
32
	mockServer.RegisterFunc("version", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
33
		return versionHandler(ctx, req, res, gerdu)
34
	})
35
	mockServer.Start()
36
}
37
38
func getHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
39
	for _, key := range req.Keys {
40
		value, ok := gerdu.Get(key)
41
		if ok {
42
43
			log.Printf("Memcached RETRIEVED Key: %s Value: %s\n", key, value)
44
		}
45
		res.Values = append(res.Values, mc.Value{Key: key, Flags: "0", Data: []byte(value)})
46
	}
47
48
	res.Response = mc.RespEnd
49
	return nil
50
}
51
52
func setHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
53
	key := req.Key
54
	value := req.Data
55
	created := gerdu.Put(key, string(value))
56
	if !created {
57
		log.Printf("Memcached UPDATE Key: %s Value: %s\n", key, value)
58
	} else {
59
		log.Printf("Memcached INSERT Key: %s Value: %s\n", key, value)
60
	}
61
	res.Response = mc.RespStored
62
	return nil
63
}
64
65
func deleteHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
66
	count := 0
67
	for _, key := range req.Keys {
68
		if _, exists := gerdu.Get(key); exists {
69
			ok := gerdu.Delete(key)
70
			if ok {
71
				log.Printf("Memcached DELETE Key: %s\n", key)
72
			}
73
			count++
74
		} else {
75
			log.Printf("Memcached DELETE Key not found: %s\n", key)
76
		}
77
	}
78
	if count > 0 {
79
		res.Response = mc.RespDeleted
80
	} else {
81
		res.Response = mc.RespNotFound
82
	}
83
	return nil
84
}
85
86
func incrHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
87
	key := req.Key
88
	increment := req.Value
89
	var base int64
90
	if value, exists := gerdu.Get(key); exists {
91
		var err error
92
		base, err = strconv.ParseInt(value, 10, 64)
93
		if err != nil {
94
			return err
95
		}
96
	}
97
98
	value := strconv.FormatInt(base+increment, 10)
99
	gerdu.Put(key, value)
100
101
	res.Response = value
102
	return nil
103
}
104
105
func flushAllHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
106
107
	log.Fatalln("Memcached not implemented flush all")
108
	res.Response = mc.RespOK
109
	return nil
110
}
111
112
func versionHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
113
	res.Response = "Gerdu VERSION 0.1"
114
	return nil
115
}
116