-
Notifications
You must be signed in to change notification settings - Fork 0
/
defs.go
76 lines (60 loc) · 2.94 KB
/
defs.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
package searchbot
import (
"sync"
"net/http"
"github.com/luisfurquim/masterbot"
"github.com/luisfurquim/stonelizard"
"golang.org/x/tools/container/intsets"
)
type TaxonomyTreeT struct {
Rune rune
Id int // In the root, this is actually the next available id
Next []*TaxonomyTreeT
}
// Provider is a search operation. Bots may offer more than 1 provider
type ProviderT struct {
Bot *masterbot.BotClientT
BotId string
Path string // Restful path of the service
HttpMethod string // GET, POST, PUT, DELETE, etc.
Operation stonelizard.SwaggerOperationT // Service specification details
Requires *intsets.Sparse // Input parameters (set of Taxonomy entries)
Provides *intsets.Sparse // Return values (set of Taxonomy entries)
}
type ResponseFieldT struct {
Value interface{}
Source string
DtUpd string
}
type SearchBotT struct {
// defines the root of this service, and its meta data.
root stonelizard.Void `root:"/searchbot/" consumes:"application/json" produces:"application/json" allowGzip:"true" enableCORS:"true"`
// defines global information about the service
info stonelizard.Void `title:"SearchBot" description:"Wrapper robot for aggregation of search bots" tos:"Free to use under the terms of MPL2.0" version:"0.1"`
contact stonelizard.Void `contact:"Luis Otávio de Colla Furquim" url:"http://www.prrs.mpf.mp.br" email:"vuco@mpf.mp.br"`
license stonelizard.Void `license:"MPL2.0" url:"https://www.mozilla.org/en-US/MPL/2.0/"`
// extDoc stonelizard.Void `url:""`
// end point for querying the wrapper
search map[string][]ResponseFieldT `method:"GET" path:"/search" header:"X-Login,X-Password,X-Trackid" query:"searchBy,searchFor" ok:"Query succesful" X-Login:"Login name" X-Password:"User's password" X-Trackid:"Unique ID/request, used for log debug" searchBy:"Key-Value pairs of input parameters, key names must follow the taxonomy" searchFor:"List of fields to retrieve, field names must follow the taxonomy"`
// end point for dumping the taxonomy
taxonomyDump []string `method:"GET" path:"/taxonomy" header:"X-Trackid" X-Trackid:"Unique ID/request, used for log debug" ok:"Query succesful"`
sync.RWMutex
Providers []ProviderT
Taxonomy TaxonomyTreeT // List of all known data provided/required by the bots
ByProvision map[int]*intsets.Sparse // Index of bots by which data they provide
ByRequirement map[int]*intsets.Sparse // Index of bots by which data they require
Config *masterbot.ConfigT
HttpsSearchClient *http.Client
}
type BotClientsT masterbot.BotClientsT
/*
type BotClientT interface {
SetConfig(io.Reader) error
Ping() error
Auth(user, pw string) error
Restart() error
Stop() error
ListResources() ([]ResourceT,error)
Query(qry QueryT) (interface{},error)
}
*/