go-tg-screenshot-bot

Форк
0
89 строк · 2.7 Кб
1
package dbus
2

3
import (
4
	"strconv"
5
	"strings"
6
)
7

8
// MatchOption specifies option for dbus routing match rule. Options can be constructed with WithMatch* helpers.
9
// For full list of available options consult
10
// https://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-routing-match-rules
11
type MatchOption struct {
12
	key   string
13
	value string
14
}
15

16
func formatMatchOptions(options []MatchOption) string {
17
	items := make([]string, 0, len(options))
18
	for _, option := range options {
19
		items = append(items, option.key+"='"+option.value+"'")
20
	}
21
	return strings.Join(items, ",")
22
}
23

24
// WithMatchOption creates match option with given key and value
25
func WithMatchOption(key, value string) MatchOption {
26
	return MatchOption{key, value}
27
}
28

29
// doesn't make sense to export this option because clients can only
30
// subscribe to messages with signal type.
31
func withMatchType(typ string) MatchOption {
32
	return WithMatchOption("type", typ)
33
}
34

35
// WithMatchSender sets sender match option.
36
func WithMatchSender(sender string) MatchOption {
37
	return WithMatchOption("sender", sender)
38
}
39

40
// WithMatchSender sets interface match option.
41
func WithMatchInterface(iface string) MatchOption {
42
	return WithMatchOption("interface", iface)
43
}
44

45
// WithMatchMember sets member match option.
46
func WithMatchMember(member string) MatchOption {
47
	return WithMatchOption("member", member)
48
}
49

50
// WithMatchObjectPath creates match option that filters events based on given path
51
func WithMatchObjectPath(path ObjectPath) MatchOption {
52
	return WithMatchOption("path", string(path))
53
}
54

55
// WithMatchPathNamespace sets path_namespace match option.
56
func WithMatchPathNamespace(namespace ObjectPath) MatchOption {
57
	return WithMatchOption("path_namespace", string(namespace))
58
}
59

60
// WithMatchDestination sets destination match option.
61
func WithMatchDestination(destination string) MatchOption {
62
	return WithMatchOption("destination", destination)
63
}
64

65
// WithMatchArg sets argN match option, range of N is 0 to 63.
66
func WithMatchArg(argIdx int, value string) MatchOption {
67
	if argIdx < 0 || argIdx > 63 {
68
		panic("range of argument index is 0 to 63")
69
	}
70
	return WithMatchOption("arg"+strconv.Itoa(argIdx), value)
71
}
72

73
// WithMatchArgPath sets argN path match option, range of N is 0 to 63.
74
func WithMatchArgPath(argIdx int, path string) MatchOption {
75
	if argIdx < 0 || argIdx > 63 {
76
		panic("range of argument index is 0 to 63")
77
	}
78
	return WithMatchOption("arg"+strconv.Itoa(argIdx)+"path", path)
79
}
80

81
// WithMatchArg0Namespace sets arg0namespace match option.
82
func WithMatchArg0Namespace(arg0Namespace string) MatchOption {
83
	return WithMatchOption("arg0namespace", arg0Namespace)
84
}
85

86
// WithMatchEavesdrop sets eavesdrop match option.
87
func WithMatchEavesdrop(eavesdrop bool) MatchOption {
88
	return WithMatchOption("eavesdrop", strconv.FormatBool(eavesdrop))
89
}
90

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.