-
Notifications
You must be signed in to change notification settings - Fork 927
/
actor.go
39 lines (31 loc) · 1.05 KB
/
actor.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
// Package pushaction contains the business logic for orchestrating a V2 app
// push.
package pushaction
import (
"regexp"
"code.cloudfoundry.org/cli/util/randomword"
)
// Warnings is a list of warnings returned back from the cloud controller
type Warnings []string
// Actor handles all business logic for Cloud Controller v2 operations.
type Actor struct {
SharedActor SharedActor
V2Actor V2Actor
V3Actor V3Actor
WordGenerator RandomWordGenerator
startWithProtocol *regexp.Regexp
urlValidator *regexp.Regexp
}
const ProtocolRegexp = "^https?://|^tcp://"
const URLRegexp = "^(?:https?://|tcp://)?(?:(?:[\\w-]+\\.)|(?:[*]\\.))+\\w+(?:\\:\\d+)?(?:/.*)*(?:\\.\\w+)?$"
// NewActor returns a new actor.
func NewActor(v2Actor V2Actor, v3Actor V3Actor, sharedActor SharedActor) *Actor {
return &Actor{
SharedActor: sharedActor,
V2Actor: v2Actor,
V3Actor: v3Actor,
WordGenerator: new(randomword.Generator),
startWithProtocol: regexp.MustCompile(ProtocolRegexp),
urlValidator: regexp.MustCompile(URLRegexp),
}
}