-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathcontract.go
76 lines (68 loc) · 1.79 KB
/
contract.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
package sdk
import (
"github.com/pkg/errors"
"github.com/viant/endly/model/location"
"github.com/viant/endly/service/system/exec"
"strings"
)
// SetRequest represents sdk set request
type SetRequest struct {
Sdk string //request sdk jdk, go
Version string //requested version
Env map[string]string
Target *location.Resource //target host
BaseLocation string
}
// Init initializes request
func (r *SetRequest) Init() error {
if r.Version == "" && strings.Contains(r.Sdk, ":") {
var fragments = strings.SplitN(r.Sdk, ":", 2)
r.Sdk = fragments[0]
r.Version = fragments[1]
}
if r.BaseLocation == "" {
r.BaseLocation = baseLocation
}
r.Target = exec.GetServiceTarget(r.Target)
return nil
}
// Validate checks if request if valid
func (r *SetRequest) Validate() error {
if r.Sdk == "" {
return errors.New("sdk was empty")
}
if r.Version == "" {
return errors.New("version was empty")
}
return nil
}
// NewSetRequest creates a new sdk request
func NewSetRequest(target *location.Resource, sdk string, version string, env map[string]string) *SetRequest {
if len(env) == 0 {
env = make(map[string]string)
}
return &SetRequest{
Target: target,
Sdk: sdk,
Version: version,
Env: env,
}
}
// NewSetRequestFromURL creates a new set request from URL
func NewSetRequestFromURL(URL string) (*SetRequest, error) {
var response = &SetRequest{}
resource := location.NewResource(URL)
return response, resource.Decode(response)
}
// SetResponse represents sdk response
type SetResponse struct {
SdkInfo *Info
}
// Info represents a system sdk
type Info struct {
Home string //sdk path
Build string //sdk build version
SessionID string //session id of target host
Sdk string //requested sdk
Version string //requested sdk version
}