func (gateway Gateway) waitForJob(jobUrl, accessToken string, timeout time.Duration) (apiErr errors.Error) { startTime := time.Now() for true { if time.Since(startTime) > timeout { apiErr = errors.NewErrorWithMessage("Error: timed out waiting for async job '%s' to finish", jobUrl) return } var request *Request request, apiErr = gateway.NewRequest("GET", jobUrl, accessToken, nil) response := &JobResponse{} _, apiErr = gateway.PerformRequestForJSONResponse(request, response) if apiErr != nil { return } switch response.Entity.Status { case JOB_FINISHED: return case JOB_FAILED: apiErr = errors.NewError("Job failed", JOB_FAILED) return } accessToken = request.HttpReq.Header.Get("Authorization") time.Sleep(gateway.PollingThrottle) } return }
func (repo *FakeOrgRepository) Create(name string) (apiErr errors.Error) { if repo.CreateOrgExists { apiErr = errors.NewError("Space already exists", cf.ORG_EXISTS) return } repo.CreateName = name return }
func (repo *FakeBuildpackRepository) Create(name string, position *int, enabled *bool, locked *bool) (createdBuildpack models.Buildpack, apiErr errors.Error) { if repo.CreateBuildpackExists { return repo.CreateBuildpack, errors.NewError("Buildpack already exists", cf.BUILDPACK_EXISTS) } repo.CreateBuildpack = models.Buildpack{Name: name, Position: position, Enabled: enabled, Locked: locked} return repo.CreateBuildpack, repo.CreateApiResponse }
func (repo *FakeServiceBindingRepo) Create(instanceGuid, appGuid string) (apiErr errors.Error) { repo.CreateServiceInstanceGuid = instanceGuid repo.CreateApplicationGuid = appGuid if repo.CreateErrorCode != "" { apiErr = errors.NewError("Error binding service", repo.CreateErrorCode) } return }
func (repo *FakeAppSummaryRepo) GetSummary(appGuid string) (summary models.AppSummary, apiErr errors.Error) { repo.GetSummaryAppGuid = appGuid summary = repo.GetSummarySummary if repo.GetSummaryErrorCode != "" { apiErr = errors.NewError("Error", repo.GetSummaryErrorCode) } return }
func (repo *FakeUserRepository) Create(username, password string) (apiErr errors.Error) { repo.CreateUserUsername = username repo.CreateUserPassword = password if repo.CreateUserExists { apiErr = errors.NewError("User already exists", cf.USER_EXISTS) } return }
func (repo *FakeSpaceRepository) Create(name string, orgGuid string) (space models.Space, apiErr errors.Error) { if repo.CreateSpaceExists { apiErr = errors.NewError("Space already exists", cf.SPACE_EXISTS) return } repo.CreateSpaceName = name repo.CreateSpaceOrgGuid = orgGuid space = repo.CreateSpaceSpace return }
func (repo *FakeAppInstancesRepo) GetInstances(appGuid string) (instances []models.AppInstanceFields, apiErr errors.Error) { repo.GetInstancesAppGuid = appGuid time.Sleep(1 * time.Millisecond) //needed for Windows only, otherwise it thinks error codes are not assigned if len(repo.GetInstancesResponses) > 0 { instances = repo.GetInstancesResponses[0] repo.GetInstancesResponses = repo.GetInstancesResponses[1:] } if len(repo.GetInstancesErrorCodes) > 0 { errorCode := repo.GetInstancesErrorCodes[0] repo.GetInstancesErrorCodes = repo.GetInstancesErrorCodes[1:] if errorCode != "" { apiErr = errors.NewError("Error staging app", errorCode) } } return }
func (uaa UAAAuthenticationRepository) getAuthToken(data url.Values) errors.Error { type uaaErrorResponse struct { Code string `json:"error"` Description string `json:"error_description"` } type AuthenticationResponse struct { AccessToken string `json:"access_token"` TokenType string `json:"token_type"` RefreshToken string `json:"refresh_token"` Error uaaErrorResponse `json:"error"` } path := fmt.Sprintf("%s/oauth/token", uaa.config.AuthenticationEndpoint()) request, err := uaa.gateway.NewRequest("POST", path, "Basic "+base64.StdEncoding.EncodeToString([]byte("cf:")), strings.NewReader(data.Encode())) if err != nil { return errors.NewErrorWithError("Failed to start oauth request", err) } request.HttpReq.Header.Set("Content-Type", "application/x-www-form-urlencoded") response := new(AuthenticationResponse) _, err = uaa.gateway.PerformRequestForJSONResponse(request, &response) switch err.(type) { case nil: case errors.HttpError: return err default: return errors.NewErrorWithError("auth request failed", err) } if response.Error.Code != "" { return errors.NewError("Authentication Server error: "+response.Error.Description, response.Error.Code) } uaa.config.SetAccessToken(fmt.Sprintf("%s %s", response.TokenType, response.AccessToken)) uaa.config.SetRefreshToken(response.RefreshToken) return nil }