github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/config/target_verifier/target_verifier.go (about) 1 package target_verifier 2 3 import ( 4 "github.com/cloudfoundry-incubator/ltc/receptor_client" 5 "github.com/cloudfoundry-incubator/receptor" 6 ) 7 8 //go:generate counterfeiter -o fake_target_verifier/fake_target_verifier.go . TargetVerifier 9 type TargetVerifier interface { 10 VerifyTarget(name string) (up bool, auth bool, err error) 11 } 12 13 func New(receptorClientCreator receptor_client.Creator) TargetVerifier { 14 return &targetVerifier{receptorClientCreator} 15 } 16 17 type targetVerifier struct { 18 receptorClientCreator receptor_client.Creator 19 } 20 21 func (t *targetVerifier) VerifyTarget(target string) (up, auth bool, err error) { 22 receptorClient := t.receptorClientCreator.CreateReceptorClient(target) 23 _, err = receptorClient.DesiredLRPs() 24 25 if err != nil { 26 receptorErr, ok := err.(receptor.Error) 27 28 if !ok { 29 return false, false, err 30 } 31 32 if receptorErr.Type == receptor.Unauthorized { 33 return true, false, nil 34 } else { 35 // TODO: poor interface for return values: "true, false, err" 36 return true, false, err 37 } 38 } 39 40 return true, true, nil 41 }