github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/actor/pushaction/actor.go (about)

     1  // Package pushaction contains the business logic for orchestrating a V2 app
     2  // push.
     3  package pushaction
     4  
     5  import (
     6  	"regexp"
     7  
     8  	"code.cloudfoundry.org/cli/util/randomword"
     9  )
    10  
    11  // Warnings is a list of warnings returned back from the cloud controller
    12  type Warnings []string
    13  
    14  // Actor handles all business logic for Cloud Controller v2 operations.
    15  type Actor struct {
    16  	SharedActor   SharedActor
    17  	V2Actor       V2Actor
    18  	WordGenerator RandomWordGenerator
    19  
    20  	startWithProtocol *regexp.Regexp
    21  	urlValidator      *regexp.Regexp
    22  }
    23  
    24  const ProtocolRegexp = "^https?://|^tcp://"
    25  const URLRegexp = "^(?:https?://|tcp://)?(?:(?:[\\w-]+\\.)|(?:[*]\\.))+\\w+(?:\\:\\d+)?(?:/.*)*(?:\\.\\w+)?$"
    26  
    27  // NewActor returns a new actor.
    28  func NewActor(v2Actor V2Actor, sharedActor SharedActor) *Actor {
    29  	return &Actor{
    30  		SharedActor:   sharedActor,
    31  		V2Actor:       v2Actor,
    32  		WordGenerator: new(randomword.Generator),
    33  
    34  		startWithProtocol: regexp.MustCompile(ProtocolRegexp),
    35  		urlValidator:      regexp.MustCompile(URLRegexp),
    36  	}
    37  }