• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang errors.Wrap函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/dropbox/godropbox/errors.Wrap函数的典型用法代码示例。如果您正苦于以下问题:Golang Wrap函数的具体用法?Golang Wrap怎么用?Golang Wrap使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了Wrap函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: send

func (s *fileSender) send(entry *logrus.Entry) (err error) {
	msg, err := entry.String()
	if err != nil {
		return
	}

	file, err := os.OpenFile(utils.GetLogPath(),
		os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0666)
	if err != nil {
		err = &WriteError{
			errors.Wrap(err, "logger: Failed to open log file"),
		}
		return
	}
	defer file.Close()

	_, err = file.WriteString(msg)
	if err != nil {
		err = &WriteError{
			errors.Wrap(err, "logger: Failed to write to log file"),
		}
		return
	}

	return
}
开发者ID:pathcode,项目名称:pritunl-client-electron,代码行数:26,代码来源:file.go


示例2: CreateImage

// Writes an image to a file. The extension of the file is used to determine the
// encoding method.
func CreateImage(i image.Image, file string) error {
	ext := filepath.Ext(file)
	m := mime.TypeByExtension(ext)

	switch m {
	case "image/jpeg", "image/png", "image/tiff":
	default:
		return errors.Newf("unsupported extension/mime type: %s %s", ext, m)
	}

	f, err := os.Create(file)
	if err != nil {
		return errors.Wrap(err, "could not create file")
	}
	defer f.Close()

	switch m {
	case "image/jpeg":
		err = jpeg.Encode(f, i, &jpeg.Options{Quality: 98})
	case "image/png":
		err = png.Encode(f, i)
	case "image/tiff":
		err = tiff.Encode(f, i, &tiff.Options{Compression: tiff.Deflate, Predictor: true})
	default:
		panic("unreachable")
	}
	if err != nil {
		return errors.Wrap(err, "could not encode image")
	}

	return nil
}
开发者ID:rdwilliamson,项目名称:snippets,代码行数:34,代码来源:image.go


示例3: Authorize

func (s *Saml) Authorize(state, respEncoded string) (
	data *UserData, err error) {

	resp, err := saml.ParseEncodedResponse(respEncoded)
	if err != nil {
		err = &SamlError{
			errors.Wrap(err, "saml: Failed to parse response"),
		}
		return
	}

	err = resp.Validate(&s.provider)
	if err != nil {
		err = &SamlError{
			errors.Wrap(err, "saml: Failed to validate response"),
		}
		return
	}

	data = &UserData{
		Username:  resp.GetAttribute("username"),
		Email:     resp.GetAttribute("email"),
		Org:       resp.GetAttribute("org"),
		Secondary: resp.GetAttribute("secondary"),
	}

	if data.Username == "" {
		data.Username = resp.Assertion.Subject.NameID.Value
	}

	return
}
开发者ID:postfix,项目名称:pritunl-auth,代码行数:32,代码来源:saml.go


示例4: GetJson

func (c *Oauth2Client) GetJson(url string, resp interface{}) (err error) {
	httpResp, err := c.client.Get(url)
	if err != nil {
		err = &errortypes.UnknownError{
			errors.Wrap(err, "oauth.oauth2: Unknown api error"),
		}
		return
	}
	defer httpResp.Body.Close()

	body, err := ioutil.ReadAll(httpResp.Body)
	if err != nil {
		err = &errortypes.UnknownError{
			errors.Wrap(err, "oauth.oauth2: Unknown parse error"),
		}
		return
	}

	err = json.Unmarshal(body, resp)
	if err != nil {
		err = &errortypes.UnknownError{
			errors.Wrap(err, "oauth.oauth2: Unknown parse error"),
		}
		return
	}

	return
}
开发者ID:postfix,项目名称:pritunl-auth,代码行数:28,代码来源:oauth2.go


示例5: GetLocalIPs

// This returns the list of local ip addresses which other hosts can connect
// to (NOTE: Loopback ip is ignored).
// Also resolves Hostname to an address and adds it to the list too, so
// IPs from /etc/hosts can work too.
func GetLocalIPs() ([]*net.IP, error) {
	hostname, err := os.Hostname()
	if err != nil {
		return nil, errors.Wrap(err, "Failed to lookup hostname")
	}
	// Resolves IP Address from Hostname, this way overrides in /etc/hosts
	// can work too for IP resolution.
	ipInfo, err := net.ResolveIPAddr("ip4", hostname)
	if err != nil {
		return nil, errors.Wrap(err, "Failed to resolve ip")
	}
	ips := []*net.IP{&ipInfo.IP}

	// TODO(zviad): Is rest of the code really necessary?
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		return nil, errors.Wrap(err, "Failed to get interface addresses.")
	}
	for _, addr := range addrs {
		ipnet, ok := addr.(*net.IPNet)
		if !ok {
			continue
		}

		if ipnet.IP.IsLoopback() {
			continue
		}

		ips = append(ips, &ipnet.IP)
	}
	return ips, nil
}
开发者ID:Charlesdong,项目名称:godropbox,代码行数:36,代码来源:ip.go


示例6: Page

func Page(q PageQuery) (*PageResponse, error) {

	if q.ID == 0 {
		return nil, errors.New("a page id is required")
	}

	resp, err := http.Get(q.urlString())
	if err != nil {
		return nil, errors.Wrap(err, "could not get http response")
	}
	defer resp.Body.Close()

	if resp.StatusCode != 200 {
		return nil, errors.Wrapf(errors.New(resp.Status), "StatusCode: %d; URL: %s", resp.StatusCode, q.urlString())
	}

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, errors.Wrap(err, "could not read http response body")
	}

	var response PageResponse
	if err := json.Unmarshal(body, &response); err != nil {
		return nil, errors.Wrap(err, "could not unmarshal http response")
	}

	return &response, nil

}
开发者ID:heindl,项目名称:eol,代码行数:29,代码来源:pages.go


示例7: Do

// Performs the HTTP request using our HTTP client
func (pool *SimplePool) Do(req *http.Request) (resp *http.Response, err error) {
	conn, err := pool.Get()
	if err != nil {
		return nil, errors.Wrap(err, err.Error())
	}

	if pool.params.UseSSL {
		req.URL.Scheme = "https"
	} else {
		req.URL.Scheme = "http"
	}
	if pool.params.HostHeader != nil {
		req.URL.Host = *pool.params.HostHeader
	} else {
		req.URL.Host = pool.addr
	}

	resp, err = conn.Do(req)
	if err != nil {
		if urlErr, ok := err.(*url.Error); ok &&
			strings.HasPrefix(urlErr.Err.Error(), dialErrorMsgPrefix) {
			err = DialError{errors.Wrap(err, "SimplePool: Dial Error")}
		} else {
			err = errors.Wrap(err, err.Error())
		}
	}
	return
}
开发者ID:Charlesdong,项目名称:godropbox,代码行数:29,代码来源:simple_pool.go


示例8: clean

func clean() (err error) {
	paths := []string{
		filepath.Join(pathSep, "usr", "local", "bin", "pritunl-openvpn"),
		filepath.Join(pathSep, "private", "var", "db", "receipts",
			"com.pritunl.pkg.Pritunl.bom"),
		filepath.Join(pathSep, "private", "var", "db", "receipts",
			"com.pritunl.pkg.Pritunl.plist"),
		filepath.Join(pathSep, "private", "tmp", "pritunl"),
		filepath.Join(pathSep, "Applications", "Pritunl.app"),
		filepath.Join(pathSep, "Library", "LaunchAgents",
			"com.pritunl.client.plist"),
	}

	homesPath := filepath.Join(pathSep, "Users")
	homes, err := ioutil.ReadDir(homesPath)
	if err != nil {
		err = &ParseError{
			errors.Wrap(err, "autoclean: Failed to read home directories"),
		}
		return
	}

	for _, home := range homes {
		if !home.IsDir() {
			continue
		}

		paths = append(paths, filepath.Join(homesPath, home.Name(),
			"Library", "Application Support", "pritunl"))
		paths = append(paths, filepath.Join(homesPath, home.Name(),
			"Library", "Caches", "pritunl"))
		paths = append(paths, filepath.Join(homesPath, home.Name(),
			"Library", "Preferences", "com.electron.pritunl.plist"))
	}

	paths = append(paths, filepath.Join(pathSep, "usr", "local",
		"bin", "pritunl-service"))
	paths = append(paths, filepath.Join(pathSep, "Library", "LaunchDaemons",
		"com.pritunl.service.plist"))

	for _, path := range paths {
		if len(path) < 20 {
			panic("autoclean: Bad path " + path)
		}

		err = os.RemoveAll(path)
		if err != nil {
			err = &RemoveError{
				errors.Wrap(err, "autoclean: Failed to remove file"),
			}
		}
	}

	return
}
开发者ID:pathcode,项目名称:pritunl-client-electron,代码行数:55,代码来源:autoclean.go


示例9: Get

// Checks out an HTTP connection from an instance pool, favoring less loaded instances.
func (pool *LoadBalancedPool) Get() (*http.Client, error) {
	_, instance, _, err := pool.getInstance()
	if err != nil {
		return nil, errors.Wrap(err, "can't get HTTP connection")
	}
	conn, err := instance.Get()
	if err != nil {
		return nil, errors.Wrap(err, "couldn't Get from LoadBalancedPool")
	}
	return conn, err
}
开发者ID:Charlesdong,项目名称:godropbox,代码行数:12,代码来源:load_balanced_pool.go


示例10: fetchAndWriteStationData

func (q *StationQuery) fetchAndWriteStationData(offset int) (stationCount int, err error) {

	u := fmt.Sprintf("%s/cdo-web/api/v2/stations?limit=%d&datasetid=GHCND&offset=%d", BaseURL, StationPageLimit, offset)

	body, err := request(u, q.APITokens)
	if err != nil {
		return 0, err
	}

	db, err := bolt.Open(q.CachePath, 0600, nil)
	if err != nil {
		return 0, errors.Wrap(err, "could not open station cache")
	}
	defer db.Close()

	//		if !NorthAmerica.Contains(geo.NewPoint(r.Latitude, r.Longitude)) {
	//			fmt.Println("IS NOT CONTAINED IN NORTH AMERICA")
	//			continue
	//		}

	var response stationAPI
	if err := json.Unmarshal(body, &response); err != nil {
		return 0, errors.Wrap(err, "could not unmarshal response")
	}

	if err := db.Update(func(tx *bolt.Tx) error {

		bucket, err := tx.CreateBucketIfNotExists([]byte("stations"))
		if err != nil {
			return err
		}

		for _, r := range response.Results {

			value, err := json.Marshal(r)
			if err != nil {
				return errors.Wrap(err, "could not marshal station value")
			}

			if err := bucket.Put([]byte(r.ID), value); err != nil {
				return err
			}

		}

		return nil

	}); err != nil {
		return 0, errors.Wrap(err, "could not update station collection")
	}
	return response.Meta.ResultSet.Count, nil

}
开发者ID:heindl,项目名称:raincollector,代码行数:53,代码来源:stations.go


示例11: OpenImage

// Opens and decodes (see image.Decode) an image file.
func OpenImage(file string) (image.Image, error) {
	f, err := os.Open(file)
	if err != nil {
		return nil, errors.Wrap(err, "could not open file")
	}
	defer f.Close()
	i, _, err := image.Decode(f)
	if err != nil {
		return nil, errors.Wrap(err, "could not decode image")
	}
	return i, nil
}
开发者ID:rdwilliamson,项目名称:snippets,代码行数:13,代码来源:image.go


示例12: request

func (s *SearchQuery) request(page int) error {

	select {
	case <-s.tmb.Dying():
		return nil
	default:
	}

	resp, err := http.Get(s.url(page))
	if err != nil {
		return errors.Wrap(err, "could not get http response")
	}
	defer resp.Body.Close()

	if resp.StatusCode != 200 {
		return errors.Wrapf(errors.New(resp.Status), "StatusCode: %d; URL: %s", resp.StatusCode, s.url(page))
	}

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return errors.Wrap(err, "could not read http response body")
	}
	var response results
	if err := json.Unmarshal(body, &response); err != nil {
		return errors.Wrap(err, "could not unmarshal http response")
	}

	for i := range response.Results {
		s.ch <- response.Results[i]
	}
	if page > 1 {
		return nil
	}

	// If this the first page, schedule the remaining requests
	totalRequests := math.Ceil(response.TotalResults / response.ItemsPerPage)
	var wg sync.WaitGroup
	for i := 2; i <= int(totalRequests); i++ {
		func(count int) {
			wg.Add(1)
			go s.tmb.Go(func() error {
				defer wg.Done()
				return s.request(count)
			})
		}(i)
	}
	wg.Wait()
	return nil
}
开发者ID:heindl,项目名称:eol,代码行数:49,代码来源:search.go


示例13: PublicKeyFile

func PublicKeyFile(file string) (auth ssh.AuthMethod, err error) {
	buffer, err := ioutil.ReadFile(file)
	if err != nil {
		err = errors.Wrap(err, "")
		return
	}

	key, err := ssh.ParsePrivateKey(buffer)
	if err != nil {
		err = errors.Wrap(err, "")
		return
	}

	return ssh.PublicKeys(key), nil
}
开发者ID:pushcampus,项目名称:go-sail,代码行数:15,代码来源:main.go


示例14: Stat

// See Client interface for documentation.
func (c *ShardedClient) Stat(statsKey string) StatResponse {
	statEntries := make(map[int](map[string]string))

	var err error
	for shard, conn := range c.manager.GetAllShards() {
		response := c.statHelper(shard, conn, statsKey)
		if response.Error() != nil {
			if err == nil {
				err = response.Error()
			} else {
				err = errors.Wrap(response.Error(), err.Error())
			}
		}

		for shardId, entries := range response.Entries() {
			statEntries[shardId] = entries
		}
	}

	if err != nil {
		return NewStatErrorResponse(err, statEntries)
	}

	return NewStatResponse(StatusNoError, statEntries)
}
开发者ID:pasin30055,项目名称:godropbox,代码行数:26,代码来源:sharded_client.go


示例15: countCache

func (q *StationQuery) countCache() (count int, err error) {

	db, err := bolt.Open(q.CachePath, 0600, nil)
	if err != nil {
		return 0, errors.Wrap(err, "could not open station cache")
	}
	defer db.Close()

	if err := db.View(func(tx *bolt.Tx) error {

		b := tx.Bucket([]byte("stations"))
		if b == nil {
			return ErrStationCacheEmpty
		}

		c := b.Cursor()

		for k, _ := c.First(); k != nil; k, _ = c.Next() {
			count++
		}

		return nil

	}); err != nil {
		return 0, err
	}

	return count, nil

}
开发者ID:heindl,项目名称:raincollector,代码行数:30,代码来源:stations.go


示例16: Do

// Issues an HTTP request, distributing more load to relatively unloaded instances.
func (pool *LoadBalancedPool) Do(req *http.Request) (*http.Response, error) {
	for i := 0; ; i++ {
		idx, instance, err := pool.getInstance()
		if err != nil {
			return nil, errors.Wrap(err, "can't get HTTP connection")
		}

		resp, err := instance.Do(req)
		if err != nil || resp.StatusCode == 500 {
			// 500s are also treated as service being down momentarily,
			// note that even if all servers get marked down LBPool continues
			// to send requests in round robin manner, thus this provides extra
			// protection when service may still be up but have higher rate of
			// 500s for whatever reason.
			pool.markInstanceDown(idx, instance, time.Now().Add(markDownDuration).Unix())
		}
		if err != nil {
			if _, ok := err.(DialError); !ok {
				return resp, err
			}

			if (i + 1) < connectionAttempts {
				continue
			}
		}
		return resp, err
	}
}
开发者ID:4578395263256,项目名称:godropbox,代码行数:29,代码来源:load_balanced_pool.go


示例17: SerializeSql

func (c *inExpression) SerializeSql(out *bytes.Buffer) error {
	if c.err != nil {
		return errors.Wrap(c.err, "Invalid IN expression")
	}

	if c.lhs == nil {
		return errors.Newf(
			"lhs of in expression is nil.  Generated sql: %s",
			out.String())
	}

	// We'll serialize the lhs even if we don't need it to ensure no error
	buf := &bytes.Buffer{}

	err := c.lhs.SerializeSql(buf)
	if err != nil {
		return err
	}

	if c.rhs == nil {
		out.WriteString("FALSE")
		return nil
	}

	out.WriteString(buf.String())
	out.WriteString(" IN ")

	err = c.rhs.SerializeSql(out)
	if err != nil {
		return err
	}

	return nil
}
开发者ID:4578395263256,项目名称:godropbox,代码行数:34,代码来源:expression.go


示例18: Authorize

func (o *Oauth2) Authorize(db *database.Database, state, code string) (
	acct *account.Account, tokn *Token, err error) {

	coll := db.Tokens()
	tokn = &Token{}

	err = coll.FindOneId(state, tokn)
	if err != nil {
		err = database.ParseError(err)
		return
	}

	accessTokn, err := o.conf.Exchange(oauth2.NoContext, code)
	if err != nil {
		err = &errortypes.UnknownError{
			errors.Wrap(err, "oauth.oauth2: Unknown api error"),
		}
		return
	}

	acct = &account.Account{
		Type:          o.Type,
		Oauth2AccTokn: accessTokn.AccessToken,
		Oauth2RefTokn: accessTokn.RefreshToken,
		Oauth2Exp:     accessTokn.Expiry,
	}

	return
}
开发者ID:postfix,项目名称:pritunl-auth,代码行数:29,代码来源:oauth2.go


示例19: Version

// See Client interface for documentation.
func (c *ShardedClient) Version() VersionResponse {
	shardConns := c.manager.GetAllShards()

	var err error
	versions := make(map[int]string)
	for shard, conn := range shardConns {
		response := c.versionHelper(shard, conn)
		if response.Error() != nil {
			if err == nil {
				err = response.Error()
			} else {
				err = errors.Wrap(response.Error(), err.Error())
			}
			continue
		}

		for shardId, versionString := range response.Versions() {
			versions[shardId] = versionString
		}
	}

	if err != nil {
		return NewVersionErrorResponse(err, versions)
	}

	return NewVersionResponse(StatusNoError, versions)
}
开发者ID:pasin30055,项目名称:godropbox,代码行数:28,代码来源:sharded_client.go


示例20: ImportProfiles

func ImportProfiles() (prfls []*Profile, err error) {
	path := getPath()

	exists, err := utils.Exists(path)
	if err != nil {
		return
	}

	if !exists {
		return
	}
	prfls = []*Profile{}

	data, err := utils.Read(path)
	if err != nil {
		return
	}

	err = json.Unmarshal([]byte(data), &prfls)
	if err != nil {
		err = errortypes.ParseError{
			errors.Wrap(err, "profile: Failed to parse profiles"),
		}
		return
	}

	return
}
开发者ID:pritunl,项目名称:pritunl-link,代码行数:28,代码来源:utils.go



注:本文中的github.com/dropbox/godropbox/errors.Wrap函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang errors.Wrapf函数代码示例发布时间:2022-05-23
下一篇:
Golang errors.Newf函数代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap