本文整理匯總了Golang中cf/errors.NewWithError函數的典型用法代碼示例。如果您正苦於以下問題:Golang NewWithError函數的具體用法?Golang NewWithError怎麽用?Golang NewWithError使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了NewWithError函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: uploadBits
func (repo CloudControllerApplicationBitsRepository) uploadBits(appGuid string, zipFile *os.File, presentResourcesJson []byte) (apiErr 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.NewWithError("Error creating tmp file: %s", err)
return
}
boundary, err := repo.writeUploadBody(zipFile, requestFile, presentResourcesJson)
if err != nil {
apiErr = errors.NewWithError("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: Request
func (repo CloudControllerCurlRepository) Request(method, path, headerString, body string) (resHeaders, resBody string, err error) {
url := fmt.Sprintf("%s/%s", repo.config.ApiEndpoint(), strings.TrimLeft(path, "/"))
req, err := repo.gateway.NewRequest(method, url, repo.config.AccessToken(), strings.NewReader(body))
if err != nil {
return
}
err = mergeHeaders(req.HttpReq.Header, headerString)
if err != nil {
err = errors.NewWithError("Error parsing headers", err)
return
}
res, err := repo.gateway.PerformRequestForResponse(req)
if _, ok := err.(errors.HttpError); ok {
err = nil
}
if err != nil {
return
}
headerBytes, _ := httputil.DumpResponse(res, false)
resHeaders = string(headerBytes)
bytes, err := ioutil.ReadAll(res.Body)
if err != nil {
err = errors.NewWithError("Error reading response", err)
}
resBody = string(bytes)
return
}
示例3: UploadApp
func (repo CloudControllerApplicationBitsRepository) UploadApp(appGuid string, appDir string, cb func(path string, zipSize, fileCount uint64)) (apiErr error) {
fileutils.TempDir("apps", func(uploadDir string, err error) {
if err != nil {
apiErr = err
return
}
var presentFiles []resources.AppFileResource
repo.sourceDir(appDir, func(sourceDir string, sourceErr error) {
if sourceErr != nil {
err = sourceErr
return
}
presentFiles, err = repo.copyUploadableFiles(sourceDir, uploadDir)
})
if err != nil {
apiErr = err
return
}
fileutils.TempFile("uploads", func(zipFile *os.File, err error) {
if err != nil {
apiErr = err
return
}
zipFileSize := uint64(0)
zipFileCount := uint64(0)
err = repo.zipper.Zip(uploadDir, zipFile)
switch err := err.(type) {
case nil:
stat, err := zipFile.Stat()
if err != nil {
apiErr = errors.NewWithError("Error zipping application", err)
return
}
zipFileSize = uint64(stat.Size())
zipFileCount = app_files.CountFiles(uploadDir)
case *errors.EmptyDirError:
zipFile = nil
default:
apiErr = errors.NewWithError("Error zipping application", err)
return
}
cb(appDir, zipFileSize, zipFileCount)
apiErr = repo.uploadBits(appGuid, zipFile, presentFiles)
if apiErr != nil {
return
}
})
})
return
}
示例4: UploadBuildpack
func (repo CloudControllerBuildpackBitsRepository) UploadBuildpack(buildpack models.Buildpack, buildpackLocation string) (apiErr error) {
fileutils.TempFile("buildpack-upload", func(zipFileToUpload *os.File, err error) {
if err != nil {
apiErr = errors.NewWithError("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.NewWithError("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.NewWithError("Couldn't open buildpack file", err)
return
}
err = normalizeBuildpackArchive(specifiedFile, zipFileToUpload)
}
}
if err != nil {
apiErr = errors.NewWithError("Couldn't write zip file", err)
return
}
apiErr = repo.uploadBits(buildpack, zipFileToUpload, buildpackFileName)
})
return
}
示例5: UploadApp
func (repo CloudControllerApplicationBitsRepository) UploadApp(appGuid string, appDir string, cb func(path string, zipSize, fileCount uint64)) (apiErr error) {
fileutils.TempDir("apps", func(uploadDir string, err error) {
if err != nil {
apiErr = err
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 = err
return
}
fileutils.TempFile("uploads", func(zipFile *os.File, err error) {
if err != nil {
apiErr = err
return
}
err = repo.zipper.Zip(uploadDir, zipFile)
if err != nil {
apiErr = errors.NewWithError("Error zipping application", err)
return
}
stat, err := zipFile.Stat()
if err != nil {
apiErr = errors.NewWithError("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
}
示例6: ListPaginatedResources
func (gateway Gateway) ListPaginatedResources(target string,
path string,
resource interface{},
cb func(interface{}) bool) (apiErr error) {
for path != "" {
pagination := NewPaginatedResources(resource)
apiErr = gateway.GetResource(fmt.Sprintf("%s%s", target, path), &pagination)
if apiErr != nil {
return
}
resources, err := pagination.Resources()
if err != nil {
return errors.NewWithError("Error parsing JSON", err)
}
for _, resource := range resources {
if !cb(resource) {
return
}
}
path = pagination.NextURL
}
return
}
示例7: WrapNetworkErrors
func WrapNetworkErrors(host string, err error) error {
var innerErr error
switch typedErr := err.(type) {
case *url.Error:
innerErr = typedErr.Err
case *websocket.DialError:
innerErr = typedErr.Err
}
if innerErr != nil {
switch typedErr := innerErr.(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, "")
case *net.OpError:
return typedErr.Err
}
}
return errors.NewWithError("Error performing request", err)
}
示例8: NewRequest
func (gateway Gateway) NewRequest(method, path, accessToken string, body io.ReadSeeker) (req *Request, apiErr error) {
if body != nil {
body.Seek(0, 0)
}
request, err := http.NewRequest(method, path, body)
if err != nil {
apiErr = errors.NewWithError("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
}
示例9: Update
func (repo CloudControllerBuildpackRepository) Update(buildpack models.Buildpack) (updatedBuildpack models.Buildpack, apiErr error) {
path := fmt.Sprintf("%s%s/%s", repo.config.ApiEndpoint(), buildpacks_path, buildpack.Guid)
entity := resources.BuildpackEntity{
Name: buildpack.Name,
Position: buildpack.Position,
Enabled: buildpack.Enabled,
Key: "",
Filename: "",
Locked: buildpack.Locked,
}
body, err := json.Marshal(entity)
if err != nil {
apiErr = errors.NewWithError("Could not serialize updates.", err)
return
}
resource := new(resources.BuildpackResource)
apiErr = repo.gateway.UpdateResource(path, bytes.NewReader(body), resource)
if apiErr != nil {
return
}
updatedBuildpack = resource.ToFields()
return
}
示例10: getFilesToUpload
func (repo CloudControllerApplicationBitsRepository) getFilesToUpload(allAppFiles []models.AppFileFields) (appFilesToUpload []models.AppFileFields, presentResourcesJson []byte, apiErr 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.NewWithError("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.NewWithError("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
}
示例11: PerformPollingRequestForJSONResponse
func (gateway Gateway) PerformPollingRequestForJSONResponse(request *Request, response interface{}, timeout time.Duration) (headers http.Header, apiErr 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.NewWithError("Invalid JSON response from server", err)
return
}
asyncResponse := &AsyncResponse{}
err = json.Unmarshal(bytes, &asyncResponse)
if err != nil {
apiErr = errors.NewWithError("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
}
示例12: getAuthToken
func (uaa UAAAuthenticationRepository) getAuthToken(data url.Values) 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.NewWithError("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.NewWithError("auth request failed", err)
}
// TODO: get the actual status code
if response.Error.Code != "" {
return errors.NewHttpError(0, response.Error.Code, response.Error.Description)
}
uaa.config.SetAccessToken(fmt.Sprintf("%s %s", response.TokenType, response.AccessToken))
uaa.config.SetRefreshToken(response.RefreshToken)
return nil
}
示例13: wrapSSLErrorInternal
func wrapSSLErrorInternal(host string, err error) 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.NewWithError("Error performing request", err)
}
}
示例14: WrapSSLErrors
func WrapSSLErrors(host string, err error) 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.NewWithError("Error performing request", err)
}
示例15: performRequestForResponseBytes
func (gateway Gateway) performRequestForResponseBytes(request *Request) (bytes []byte, headers http.Header, rawResponse *http.Response, apiErr error) {
rawResponse, apiErr = gateway.doRequestHandlingAuth(request)
if apiErr != nil {
return
}
bytes, err := ioutil.ReadAll(rawResponse.Body)
if err != nil {
apiErr = errors.NewWithError("Error reading response", err)
}
headers = rawResponse.Header
return
}