-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathservice.go
55 lines (45 loc) · 1005 Bytes
/
service.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
package goat
import (
"encoding/xml"
"fmt"
"log"
"net/http"
"github.com/justwatchcom/goat/wsdl"
)
type Webservice struct {
services map[string]*wsdl.Definitions
Client *http.Client
header map[string]interface{}
}
func NewWebservice(c *http.Client, header map[string]interface{}) Webservice {
if c == nil {
c = http.DefaultClient
}
return Webservice{
services: map[string]*wsdl.Definitions{},
Client: c,
header: header,
}
}
func (self *Webservice) AddServices(urls ...string) (err error) {
for _, u := range urls {
var resp *http.Response
resp, err = http.Get(u)
if err != nil {
return
}
defer resp.Body.Close()
s := new(wsdl.Definitions)
err = xml.NewDecoder(resp.Body).Decode(s)
if err != nil {
return
}
if s.Service.Name == "" {
err = fmt.Errorf("invalid service name '%s' for url '%s'", s.Service.Name, u)
return
}
self.services[s.Service.Name] = s
log.Printf("adding service '%s' from '%s'", s.Service.Name, u)
}
return
}