This repository has been archived by the owner on Feb 5, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vkgroups.go
106 lines (90 loc) · 2.17 KB
/
vkgroups.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package main
import (
"github.com/dimonchik0036/NSUBot/news"
"sort"
"strings"
"sync"
)
type ByID []*news.Site
func (a ByID) Len() int { return len(a) }
func (a ByID) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByID) Less(i, j int) bool { return a[i].ID < a[j].ID }
var vkGroupSites struct {
Mux sync.RWMutex
Groups []*news.Site
}
func initVkSites() {
GlobalSites.Mux.RLock()
defer GlobalSites.Mux.RUnlock()
var groups []*news.Site
for key, site := range GlobalSites.Sites {
if strings.HasPrefix(key, news.VkHref) {
groups = append(groups, site.Site)
}
}
sort.Sort(ByID(groups))
vkGroupSites.Mux.Lock()
defer vkGroupSites.Mux.Unlock()
vkGroupSites.Groups = groups
}
func vkGroupProcessing(key string, data string) string {
switch key {
case "add":
return addVkGroup(data)
case "del":
return delVkGroup(data)
default:
return "Неизвестная команда"
}
}
func addVkGroup(data string) string {
args := strings.SplitN(data, " ", 2)
if len(args) < 2 {
return "Недостаточно аргументов"
}
site := Site{
Site: news.NewVkSite(int64(len(vkGroupSites.Groups)), strings.ToLower(args[0]), args[1]),
}
_, err := site.Site.Update(2)
if err != nil {
return "Домен не найден"
}
vkGroupSites.Mux.Lock()
defer vkGroupSites.Mux.Unlock()
for _, s := range vkGroupSites.Groups {
if s.OptionalURL == args[0] {
return "Уже существует"
}
}
vkGroupSites.Groups = append(vkGroupSites.Groups, site.Site)
GlobalSites.AddSite(&site)
return "Успешно"
}
func delVkGroup(data string) string {
data = strings.ToLower(data)
vkGroupSites.Mux.Lock()
defer vkGroupSites.Mux.Unlock()
var index int
var groups []*news.Site
var flag bool
for _, site := range vkGroupSites.Groups {
if site.OptionalURL == data {
GlobalSites.DelSite(site.URL)
flag = true
break
}
groups = append(groups, site)
index++
}
if !flag {
return "Группа не найдена"
}
if index+1 < len(vkGroupSites.Groups) {
for _, site := range vkGroupSites.Groups[index+1:] {
site.ID--
groups = append(groups, site)
}
}
vkGroupSites.Groups = groups
return "Успешно"
}