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 ( 169bb3...d84165 )
by Amir
01:27
created

memcached/memcached.go   A

Size/Duplication

Total Lines 115
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 23
eloc 77
dl 0
loc 115
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A memcached.incrHandler 0 17 3
A memcached.deleteHandler 0 19 5
A memcached.setHandler 0 11 2
A memcached.flushAllHandler 0 5 1
A memcached.getHandler 0 12 3
A memcached.versionHandler 0 3 1
B memcached.Serve 0 25 8
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
//Serve start memcached server
12
func Serve(host string, gerdu cache.UnImplementedCache) {
13
	mockServer := mc.NewServer(host)
14
	mockServer.RegisterFunc("get", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
15
		return getHandler(ctx, req, res, gerdu)
16
	})
17
	mockServer.RegisterFunc("gets", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
18
		return getHandler(ctx, req, res, gerdu)
19
	})
20
	mockServer.RegisterFunc("set", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
21
		return setHandler(ctx, req, res, gerdu)
22
	})
23
	mockServer.RegisterFunc("delete", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
24
		return deleteHandler(ctx, req, res, gerdu)
25
26
	})
27
	mockServer.RegisterFunc("incr", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
28
		return incrHandler(ctx, req, res, gerdu)
29
	})
30
	mockServer.RegisterFunc("flush_all", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
31
		return flushAllHandler(ctx, req, res, gerdu)
32
	})
33
	mockServer.RegisterFunc("version", func(ctx context.Context, req *mc.Request, res *mc.Response) error {
34
		return versionHandler(ctx, req, res, gerdu)
35
	})
36
	mockServer.Start()
37
}
38
39
func getHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
40
	for _, key := range req.Keys {
41
		value, ok := gerdu.Get(key)
42
		if ok {
43
44
			log.Printf("Memcached RETRIEVED Key: %s Value: %s\n", key, value)
45
		}
46
		res.Values = append(res.Values, mc.Value{Key: key, Flags: "0", Data: []byte(value)})
47
	}
48
49
	res.Response = mc.RespEnd
50
	return nil
51
}
52
53
func setHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
54
	key := req.Key
55
	value := req.Data
56
	created := gerdu.Put(key, string(value))
57
	if !created {
58
		log.Printf("Memcached UPDATE Key: %s Value: %s\n", key, value)
59
	} else {
60
		log.Printf("Memcached INSERT Key: %s Value: %s\n", key, value)
61
	}
62
	res.Response = mc.RespStored
63
	return nil
64
}
65
66
func deleteHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
67
	count := 0
68
	for _, key := range req.Keys {
69
		if _, exists := gerdu.Get(key); exists {
70
			ok := gerdu.Delete(key)
71
			if ok {
72
				log.Printf("Memcached DELETE Key: %s\n", key)
73
			}
74
			count++
75
		} else {
76
			log.Printf("Memcached DELETE Key not found: %s\n", key)
77
		}
78
	}
79
	if count > 0 {
80
		res.Response = mc.RespDeleted
81
	} else {
82
		res.Response = mc.RespNotFound
83
	}
84
	return nil
85
}
86
87
func incrHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
88
	key := req.Key
89
	increment := req.Value
90
	var base int64
91
	if value, exists := gerdu.Get(key); exists {
92
		var err error
93
		base, err = strconv.ParseInt(value, 10, 64)
94
		if err != nil {
95
			return err
96
		}
97
	}
98
99
	value := strconv.FormatInt(base+increment, 10)
100
	gerdu.Put(key, value)
101
102
	res.Response = value
103
	return nil
104
}
105
106
func flushAllHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
107
108
	log.Fatalln("Memcached not implemented flush all")
109
	res.Response = mc.RespOK
110
	return nil
111
}
112
113
func versionHandler(ctx context.Context, req *mc.Request, res *mc.Response, gerdu cache.UnImplementedCache) error {
114
	res.Response = "Gerdu VERSION 0.1"
115
	return nil
116
}
117