本文整理匯總了Golang中cf/errors.NewErrorWithError函數的典型用法代碼示例。如果您正苦於以下問題:Golang NewErrorWithError函數的具體用法?Golang NewErrorWithError怎麽用?Golang NewErrorWithError使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了NewErrorWithError函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: uploadBits
func (repo CloudControllerApplicationBitsRepository) uploadBits(appGuid string, zipFile *os.File, presentResourcesJson []byte) (apiErr errors.Error) {
url := fmt.Sprintf("%s/v2/apps/%s/bits", repo.config.ApiEndpoint(), appGuid)
fileutils.TempFile("requests", func(requestFile *os.File, err error) {
if err != nil {
apiErr = errors.NewErrorWithError("Error creating tmp file: %s", err)
return
}
boundary, err := repo.writeUploadBody(zipFile, requestFile, presentResourcesJson)
if err != nil {
apiErr = errors.NewErrorWithError("Error writing to tmp file: %s", err)
return
}
var request *net.Request
request, apiErr = repo.gateway.NewRequest("PUT", url, repo.config.AccessToken(), requestFile)
if apiErr != nil {
return
}
contentType := fmt.Sprintf("multipart/form-data; boundary=%s", boundary)
request.HttpReq.Header.Set("Content-Type", contentType)
response := &Resource{}
_, apiErr = repo.gateway.PerformPollingRequestForJSONResponse(request, response, 5*time.Minute)
if apiErr != nil {
return
}
})
return
}
示例2: UploadBuildpack
func (repo CloudControllerBuildpackBitsRepository) UploadBuildpack(buildpack models.Buildpack, buildpackLocation string) (apiErr errors.Error) {
fileutils.TempFile("buildpack-upload", func(zipFileToUpload *os.File, err error) {
if err != nil {
apiErr = errors.NewErrorWithError("Couldn't create temp file for upload", err)
return
}
var buildpackFileName string
if isWebURL(buildpackLocation) {
buildpackFileName = path.Base(buildpackLocation)
repo.downloadBuildpack(buildpackLocation, func(downloadFile *os.File, downloadErr error) {
if downloadErr != nil {
err = downloadErr
return
}
err = normalizeBuildpackArchive(downloadFile, zipFileToUpload)
})
} else {
buildpackFileName = filepath.Base(buildpackLocation)
stats, err := os.Stat(buildpackLocation)
if err != nil {
apiErr = errors.NewErrorWithError("Error opening buildpack file", err)
return
}
if stats.IsDir() {
err = repo.zipper.Zip(buildpackLocation, zipFileToUpload)
} else {
specifiedFile, err := os.Open(buildpackLocation)
if err != nil {
apiErr = errors.NewErrorWithError("Couldn't open buildpack file", err)
return
}
err = normalizeBuildpackArchive(specifiedFile, zipFileToUpload)
}
}
if err != nil {
apiErr = errors.NewErrorWithError("Couldn't write zip file", err)
return
}
apiErr = repo.uploadBits(buildpack, zipFileToUpload, buildpackFileName)
})
return
}
示例3: UploadApp
func (repo CloudControllerApplicationBitsRepository) UploadApp(appGuid string, appDir string, cb func(path string, zipSize, fileCount uint64)) (apiErr errors.Error) {
fileutils.TempDir("apps", func(uploadDir string, err error) {
if err != nil {
apiErr = errors.NewErrorWithMessage(err.Error())
return
}
var presentResourcesJson []byte
repo.sourceDir(appDir, func(sourceDir string, sourceErr error) {
if sourceErr != nil {
err = sourceErr
return
}
presentResourcesJson, err = repo.copyUploadableFiles(sourceDir, uploadDir)
})
if err != nil {
apiErr = errors.NewErrorWithMessage("%s", err)
return
}
fileutils.TempFile("uploads", func(zipFile *os.File, err error) {
if err != nil {
apiErr = errors.NewErrorWithMessage("%s", err.Error())
return
}
err = repo.zipper.Zip(uploadDir, zipFile)
if err != nil {
apiErr = errors.NewErrorWithError("Error zipping application", err)
return
}
stat, err := zipFile.Stat()
if err != nil {
apiErr = errors.NewErrorWithError("Error zipping application", err)
return
}
cb(appDir, uint64(stat.Size()), app_files.CountFiles(uploadDir))
apiErr = repo.uploadBits(appGuid, zipFile, presentResourcesJson)
if apiErr != nil {
return
}
})
})
return
}
示例4: ListPaginatedResources
func (gateway Gateway) ListPaginatedResources(target string,
accessToken string,
path string,
resource interface{},
cb func(interface{}) bool) (apiErr errors.Error) {
for path != "" {
pagination := NewPaginatedResources(resource)
apiErr = gateway.GetResource(fmt.Sprintf("%s%s", target, path), accessToken, &pagination)
if apiErr != nil {
return
}
resources, err := pagination.Resources()
if err != nil {
return errors.NewErrorWithError("Error parsing JSON", err)
}
for _, resource := range resources {
if !cb(resource) {
return
}
}
path = pagination.NextURL
}
return
}
示例5: NewRequest
func (gateway Gateway) NewRequest(method, path, accessToken string, body io.ReadSeeker) (req *Request, apiErr errors.Error) {
if body != nil {
body.Seek(0, 0)
}
request, err := http.NewRequest(method, path, body)
if err != nil {
apiErr = errors.NewErrorWithError("Error building request", err)
return
}
if accessToken != "" {
request.Header.Set("Authorization", accessToken)
}
request.Header.Set("accept", "application/json")
request.Header.Set("content-type", "application/json")
request.Header.Set("User-Agent", "go-cli "+cf.Version+" / "+runtime.GOOS)
if body != nil {
switch v := body.(type) {
case *os.File:
fileStats, err := v.Stat()
if err != nil {
break
}
request.ContentLength = fileStats.Size()
}
}
req = &Request{HttpReq: request, SeekableBody: body}
return
}
示例6: getFilesToUpload
func (repo CloudControllerApplicationBitsRepository) getFilesToUpload(allAppFiles []models.AppFileFields) (appFilesToUpload []models.AppFileFields, presentResourcesJson []byte, apiErr errors.Error) {
appFilesRequest := []AppFileResource{}
for _, file := range allAppFiles {
appFilesRequest = append(appFilesRequest, AppFileResource{
Path: file.Path,
Sha1: file.Sha1,
Size: file.Size,
})
}
allAppFilesJson, err := json.Marshal(appFilesRequest)
if err != nil {
apiErr = errors.NewErrorWithError("Failed to create json for resource_match request", err)
return
}
path := fmt.Sprintf("%s/v2/resource_match", repo.config.ApiEndpoint())
req, apiErr := repo.gateway.NewRequest("PUT", path, repo.config.AccessToken(), bytes.NewReader(allAppFilesJson))
if apiErr != nil {
return
}
presentResourcesJson, _, _, apiErr = repo.gateway.PerformRequestForResponseBytes(req)
fileResource := []AppFileResource{}
err = json.Unmarshal(presentResourcesJson, &fileResource)
if err != nil {
apiErr = errors.NewErrorWithError("Failed to unmarshal json response from resource_match request", err)
return
}
appFilesToUpload = make([]models.AppFileFields, len(allAppFiles))
copy(appFilesToUpload, allAppFiles)
for _, file := range fileResource {
appFile := models.AppFileFields{
Path: file.Path,
Sha1: file.Sha1,
Size: file.Size,
}
appFilesToUpload = repo.deleteAppFile(appFilesToUpload, appFile)
}
return
}
示例7: PerformPollingRequestForJSONResponse
func (gateway Gateway) PerformPollingRequestForJSONResponse(request *Request, response interface{}, timeout time.Duration) (headers http.Header, apiErr errors.Error) {
query := request.HttpReq.URL.Query()
query.Add("async", "true")
request.HttpReq.URL.RawQuery = query.Encode()
bytes, headers, rawResponse, apiErr := gateway.PerformRequestForResponseBytes(request)
if apiErr != nil {
return
}
if rawResponse.StatusCode > 203 || strings.TrimSpace(string(bytes)) == "" {
return
}
err := json.Unmarshal(bytes, &response)
if err != nil {
apiErr = errors.NewErrorWithError("Invalid JSON response from server", err)
return
}
asyncResponse := &AsyncResponse{}
err = json.Unmarshal(bytes, &asyncResponse)
if err != nil {
apiErr = errors.NewErrorWithError("Invalid async response from server", err)
return
}
jobUrl := asyncResponse.Metadata.Url
if jobUrl == "" {
return
}
if !strings.Contains(jobUrl, "/jobs/") {
return
}
jobUrl = fmt.Sprintf("%s://%s%s", request.HttpReq.URL.Scheme, request.HttpReq.URL.Host, asyncResponse.Metadata.Url)
apiErr = gateway.waitForJob(jobUrl, request.HttpReq.Header.Get("Authorization"), timeout)
return
}
示例8: wrapSSLErrorInternal
func wrapSSLErrorInternal(host string, err error) errors.Error {
switch err.(type) {
case x509.UnknownAuthorityError:
return errors.NewInvalidSSLCert(host, "unknown authority")
case x509.HostnameError:
return errors.NewInvalidSSLCert(host, "not valid for the requested host")
case x509.CertificateInvalidError:
return errors.NewInvalidSSLCert(host, "")
default:
return errors.NewErrorWithError("Error performing request", err)
}
}
示例9: getAuthToken
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
}
示例10: WrapSSLErrors
func WrapSSLErrors(host string, err error) errors.Error {
urlError, ok := err.(*url.Error)
if ok {
return wrapSSLErrorInternal(host, urlError.Err)
}
websocketError, ok := err.(*websocket.DialError)
if ok {
return wrapSSLErrorInternal(host, websocketError.Err)
}
return errors.NewErrorWithError("Error performing request", err)
}
示例11: PerformRequestForResponseBytes
func (gateway Gateway) PerformRequestForResponseBytes(request *Request) (bytes []byte, headers http.Header, rawResponse *http.Response, apiErr errors.Error) {
rawResponse, apiErr = gateway.doRequestHandlingAuth(request)
if apiErr != nil {
return
}
bytes, err := ioutil.ReadAll(rawResponse.Body)
if err != nil {
apiErr = errors.NewErrorWithError("Error reading response", err)
}
headers = rawResponse.Header
return
}
示例12: wrapSSLErrors
func wrapSSLErrors(host string, err error) errors.Error {
urlError, ok := err.(*url.Error)
if ok {
switch urlError.Err.(type) {
case x509.UnknownAuthorityError:
return errors.NewInvalidSSLCert(host, "unknown authority")
case x509.HostnameError:
return errors.NewInvalidSSLCert(host, "not valid for the requested host")
case x509.CertificateInvalidError:
return errors.NewInvalidSSLCert(host, "")
}
}
return errors.NewErrorWithError("Error performing request", err)
}
示例13: Request
func (repo CloudControllerCurlRepository) Request(method, path, headerString, body string) (resHeaders, resBody string, apiErr errors.Error) {
url := fmt.Sprintf("%s/%s", repo.config.ApiEndpoint(), strings.TrimLeft(path, "/"))
req, apiErr := repo.gateway.NewRequest(method, url, repo.config.AccessToken(), strings.NewReader(body))
if apiErr != nil {
return
}
err := mergeHeaders(req.HttpReq.Header, headerString)
if err != nil {
apiErr = errors.NewErrorWithError("Error parsing headers", err)
return
}
res, apiErr := repo.gateway.PerformRequestForResponse(req)
if apiErr != nil {
if httpErr, ok := apiErr.(errors.HttpError); ok {
resHeaders = httpErr.Headers()
resBody = httpErr.Body()
apiErr = nil
}
return
}
headerBytes, _ := httputil.DumpResponse(res, false)
resHeaders = string(headerBytes)
bytes, err := ioutil.ReadAll(res.Body)
if err != nil {
apiErr = errors.NewErrorWithError("Error reading response", err)
}
resBody = string(bytes)
return
}
示例14: PerformRequestForJSONResponse
func (gateway Gateway) PerformRequestForJSONResponse(request *Request, response interface{}) (headers http.Header, apiErr errors.Error) {
bytes, headers, rawResponse, apiErr := gateway.PerformRequestForResponseBytes(request)
if apiErr != nil {
return
}
if rawResponse.StatusCode > 203 || strings.TrimSpace(string(bytes)) == "" {
return
}
err := json.Unmarshal(bytes, &response)
if err != nil {
apiErr = errors.NewErrorWithError("Invalid JSON response from server", err)
}
return
}
示例15: Update
func (repo CloudControllerApplicationRepository) Update(appGuid string, params models.AppParams) (updatedApp models.Application, apiErr errors.Error) {
data, err := repo.formatAppJSON(params)
if err != nil {
apiErr = errors.NewErrorWithError("Failed to marshal JSON", err)
return
}
path := fmt.Sprintf("%s/v2/apps/%s?inline-relations-depth=1", repo.config.ApiEndpoint(), appGuid)
resource := new(ApplicationResource)
apiErr = repo.gateway.UpdateResourceForResponse(path, repo.config.AccessToken(), strings.NewReader(data), resource)
if apiErr != nil {
return
}
updatedApp = resource.ToModel()
return
}