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

Golang erro.Wrap函数代码示例

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

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



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

示例1: rotateFile

func rotateFile(path string, num int) error {
	var n int

	for n = 1; n < num; n++ {
		_, err := os.Stat(path + "." + strconv.Itoa(n))
		if err == nil {
			continue
		} else if os.IsNotExist(err) {
			break
		} else {
			return erro.Wrap(err)
		}
	}
	n--

	// .{n} が残す中で一番最後。

	// .{i} を .{i+1} に。
	for ; n > 0; n-- {
		from := path + "." + strconv.Itoa(n)
		to := path + "." + strconv.Itoa(n+1)
		if err := os.Rename(from, to); err != nil {
			return erro.Wrap(err)
		}
	}

	// 最新版 を .1 に。
	if err := os.Rename(path, path+".1"); err != nil {
		return erro.Wrap(err)
	}

	return nil
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:33,代码来源:rotate.go


示例2: flushCore

func (core *fluentdCoreHandler) flushCore(writeSize int) {
	for retry := false; ; retry = true {
		if core.conn == nil {
			var err error
			core.conn, err = net.Dial("tcp", core.addr)
			if err != nil {
				// 接続出来なければ諦める。
				fmt.Fprintln(os.Stderr, erro.Wrap(err))
				return
			}
			core.buff.setSink(core.conn)
		}

		// 接続はある。

		err := core.buff.flushIfNeeded(writeSize)
		if err == nil {
			// 書き込み成功。
			return
		}

		// 書き込み失敗。
		// 接続が古くてサーバー側に切断されていたとか。

		fmt.Fprintln(os.Stderr, erro.Wrap(err))
		core.conn.Close()
		core.conn = nil

		if retry {
			// 接続しなおしても書き込めないなら諦める。
			return
		}
	}
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:34,代码来源:fluentd.go


示例3: parseCodeToken

func parseCodeToken(raw []byte) (*codeToken, error) {
	base, err := jwt.Parse(raw)
	if err != nil {
		return nil, erro.Wrap(err)
	}
	var buff struct {
		Idp      string            `json:"iss"`
		Cod      string            `json:"sub"`
		Aud      audience.Audience `json:"aud"`
		FrTa     string            `json:"from_client"`
		AcntTag  string            `json:"user_tag"`
		AcntTags strset.Set        `json:"user_tags"`
		RefHash  string            `json:"ref_hash"`
	}
	if err := json.Unmarshal(base.RawBody(), &buff); err != nil {
		return nil, erro.Wrap(err)
	} else if buff.Idp == "" {
		return nil, erro.New("no ID provider ID")
	} else if buff.Cod == "" {
		return nil, erro.New("no code")
	} else if len(buff.Aud) == 0 {
		return nil, erro.New("no audience")
	}

	return &codeToken{
		base:     base,
		idp:      buff.Idp,
		cod:      buff.Cod,
		aud:      buff.Aud,
		frTa:     buff.FrTa,
		acntTag:  buff.AcntTag,
		acntTags: buff.AcntTags,
		refHash:  buff.RefHash,
	}, nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:35,代码来源:code_token.go


示例4: newTestSingleRequestWithParams

func newTestSingleRequestWithParams(hndl *handler, idp idpdb.Element, params map[string]interface{}) (*http.Request, error) {
	r, err := http.NewRequest("GET", "http://localhost/coop", nil)
	if err != nil {
		return nil, erro.Wrap(err)
	}

	codTok := jwt.New()
	codTok.SetHeader("alg", test_idpSigAlg)
	codTok.SetClaim("iss", idp.Id())
	codTok.SetClaim("sub", test_cod)
	codTok.SetClaim("aud", audience.New(hndl.selfId))
	codTok.SetClaim("from_client", test_frTa.Id())
	codTok.SetClaim("user_tag", test_acntTag)
	codTok.SetClaim("user_tags", []string{test_subAcnt1Tag})
	for k, v := range params {
		codTok.SetClaim(k, v)
	}
	if err := codTok.Sign(idp.Keys()); err != nil {
		return nil, erro.Wrap(err)
	}
	data, err := codTok.Encode()
	if err != nil {
		return nil, erro.Wrap(err)
	}
	r.Header.Set("X-Edo-Code-Tokens", string(data))

	return r, nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:28,代码来源:values_test.go


示例5: setupKeyDb

func setupKeyDb(path string, keys []jwk.Key) (dir string, err error) {
	dir, err = ioutil.TempDir(filepath.Dir(path), filepath.Base(path))
	for i, key := range keys {
		if data, err := json.Marshal(key.ToMap()); err != nil {
			return "", erro.Wrap(err)
		} else if ioutil.WriteFile(filepath.Join(dir, strconv.Itoa(i)+".json"), data, 0644); err != nil {
			return "", erro.Wrap(err)
		}
	}
	return dir, nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:11,代码来源:main_test.go


示例6: NewFileHandlerUsing

func NewFileHandlerUsing(path string, fmter Formatter) (Handler, error) {
	if err := os.MkdirAll(filepath.Dir(path), dirPerm); err != nil {
		return nil, erro.Wrap(err)
	}
	// file の Close はプログラムの終処理任せ。
	sink, err := os.OpenFile(path, os.O_RDWR|os.O_APPEND|os.O_CREATE, filePerm)
	if err != nil {
		return nil, erro.Wrap(err)
	}
	return NewCloseHandlerUsing(sink, fmter), nil
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:11,代码来源:simple.go


示例7: Unlock

// 解放する。
func (lock *Locker) Unlock() error {
	file := (*os.File)(lock)
	if err := syscall.Flock(int(file.Fd()), syscall.LOCK_UN); err != nil {
		return erro.Wrap(err)
	}
	if err := file.Close(); err != nil {
		return erro.Wrap(err)
	}

	return nil
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:12,代码来源:lock_linux.go


示例8: newTestMainIdpResponseWithParams

func newTestMainIdpResponseWithParams(hndl *handler, idp idpdb.Element, params, idsTokParams map[string]interface{}) (status int, header http.Header, body []byte, err error) {
	now := time.Now()

	idsTok := jwt.New()
	idsTok.SetHeader("alg", test_idpSigAlg)
	idsTok.SetClaim("iss", idp.Id())
	idsTok.SetClaim("sub", test_frTa.Id())
	idsTok.SetClaim("aud", audience.New(hndl.selfId))
	idsTok.SetClaim("exp", now.Add(time.Minute).Unix())
	idsTok.SetClaim("iat", now.Unix())
	idsTok.SetClaim("ids", map[string]map[string]interface{}{
		test_acntTag: {
			"sub":   test_acntId,
			"email": test_acntEmail,
		},
		test_subAcnt1Tag: {
			"sub":   test_subAcnt1Id,
			"email": test_subAcnt1Email,
		},
	})
	for k, v := range idsTokParams {
		idsTok.SetClaim(k, v)
	}
	if err := idsTok.Sign(idp.Keys()); err != nil {
		return 0, nil, nil, erro.Wrap(err)
	}
	data, err := idsTok.Encode()
	if err != nil {
		return 0, nil, nil, erro.Wrap(err)
	}

	m := map[string]interface{}{
		"access_token": test_tok,
		"token_type":   "Bearer",
		"expires_in":   1234,
		"scope":        "openid email",
		"ids_token":    string(data),
	}
	for k, v := range params {
		if v == nil {
			delete(m, k)
		} else {
			m[k] = v
		}
	}
	body, err = json.Marshal(m)
	if err != nil {
		return 0, nil, nil, erro.Wrap(err)
	}

	return http.StatusOK, http.Header{"Content-Type": {"application/json"}}, body, nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:52,代码来源:values_test.go


示例9: testFilePath

func testFilePath() (path string, err error) {
	file, err := ioutil.TempFile("", "test_")
	if err != nil {
		return "", erro.Wrap(err)
	}
	if err := file.Close(); err != nil {
		return "", erro.Wrap(err)
	}
	if err := os.Remove(file.Name()); err != nil {
		return "", erro.Wrap(err)
	}
	return file.Name(), nil
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:13,代码来源:rotate_test.go


示例10: output

func (core *syslogCoreHandler) output(rec Record) {
	// {レベル} {ファイル名}:{行番号} {メッセージ}
	// 日時は syslog が付ける。
	msg := fmt.Sprintf("%."+strconv.Itoa(lvWidth)+"v %s:%d %s\n",
		rec.Level(), rec.File(), rec.Line(), rec.Message())

	for retry := false; ; retry = true {
		if core.base == nil {
			var err error
			core.base, err = syslog.Dial("", core.addr, syslog.LOG_INFO, core.tag)
			if err != nil {
				// 初期化出来なければ諦める。
				fmt.Fprintln(os.Stderr, erro.Wrap(err))
				fmt.Fprintln(os.Stderr, "Drop log: "+string(SimpleFormatter.Format(rec)))
				return
			}
		}

		// 初期化してある。

		var err error
		switch rec.Level() {
		case level.ERR:
			err = core.base.Err(msg)
		case level.WARN:
			err = core.base.Warning(msg)
		case level.INFO:
			err = core.base.Info(msg)
		case level.DEBUG:
			err = core.base.Debug(msg)
		}
		if err == nil {
			// 書き込み成功。
			return
		}

		// 書き込み失敗。
		// 初期化が古くてサーバー側で何か変わったとか。

		fmt.Fprintln(os.Stderr, erro.Wrap(err))
		core.base.Close()
		core.base = nil

		if retry {
			// 初期化しなおしても書き込めないなら諦める。
			fmt.Fprintln(os.Stderr, "Drop log: "+string(SimpleFormatter.Format(rec)))
			return
		}
	}
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:50,代码来源:syslog.go


示例11: flushCore

func (core *rotateCoreHandler) flushCore(writeSize int) {
	// ロックファイルをつくったほうが良いが、OS 依存なので止めとく。

	for {
		if core.file == nil {
			// ファイルを開く。
			if err := os.MkdirAll(filepath.Dir(core.path), dirPerm); err != nil {
				fmt.Fprintln(os.Stderr, erro.Wrap(err))
				return
			}

			var err error
			core.file, err = os.OpenFile(core.path, os.O_RDWR|os.O_APPEND|os.O_CREATE, filePerm)
			if err != nil {
				fmt.Fprintln(os.Stderr, erro.Wrap(err))
				return
			}

			if err := core.buff.setSink(core.file); err != nil {
				fmt.Fprintln(os.Stderr, erro.Wrap(err))
				return
			}
		}

		// ファイルを開いている。

		err := core.buff.flushIfNeeded(writeSize)
		switch err {
		case nil:
			// 書き込み成功。
			return
		case fileIsFull:
			// ローテートする。
			core.file.Close()
			core.file = nil
			if err := rotateFile(core.path, core.num); err != nil {
				fmt.Fprintln(os.Stderr, erro.Wrap(err))
				return
			}
			continue
		default:
			fmt.Fprintln(os.Stderr, erro.Wrap(err))
			core.file.Close()
			core.file = nil
			return
		}
	}
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:48,代码来源:rotate.go


示例12: Save

// 保存。
func (this *redisDb) Save(elem *Element, exp time.Time) error {
	conn := this.pool.Get()
	defer conn.Close()

	data, err := json.Marshal(elem)
	if err != nil {
		return erro.Wrap(err)
	}
	expIn := int64(exp.Sub(time.Now()) / time.Millisecond)

	if _, err := conn.Do("SET", this.tag+elem.Tag(), data, "PX", expIn); err != nil {
		return erro.Wrap(err)
	}

	return nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:17,代码来源:database_redis.go


示例13: parseCoopResponse

func parseCoopResponse(resp *http.Response) (*coopResponse, error) {
	if resp.StatusCode != http.StatusOK {
		return nil, erro.New("invalid state ", resp.StatusCode)
	} else if contType := resp.Header.Get(tagContent_type); contType != contTypeJson {
		return nil, erro.New("invalid content type " + contType)
	}

	var buff struct {
		Tok     string `json:"access_token"`
		TokType string `json:"token_type"`
		ExpIn   int    `json:"expires_in"`
		Scop    string `json:"scope"`
		IdsTok  string `json:"ids_token"`
	}
	if err := json.NewDecoder(resp.Body).Decode(&buff); err != nil {
		return nil, erro.Wrap(err)
	} else if buff.IdsTok == "" {
		return nil, erro.New("cannot get IDs token")
	}

	return &coopResponse{
		tok:     buff.Tok,
		tokType: buff.TokType,
		expIn:   time.Duration(buff.ExpIn) * time.Second,
		scop:    requtil.FormValueSet(buff.Scop),
		idsTok:  []byte(buff.IdsTok),
	}, nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:28,代码来源:response_coop.go


示例14: ServeHTTP

func (this *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	var logPref string

	// panic 対策。
	defer func() {
		if rcv := recover(); rcv != nil {
			w.Header().Set(tagX_edo_cooperation_error, fmt.Sprint(rcv))
			idperr.RespondJson(w, r, erro.New(rcv), logPref)
			return
		}
	}()

	if this.stopper != nil {
		this.stopper.Stop()
		defer this.stopper.Unstop()
	}

	logPref = server.ParseSender(r) + ": "

	server.LogRequest(level.DEBUG, r, this.debug, logPref)

	log.Info(logPref, "Received cooperation request")
	defer log.Info(logPref, "Handled cooperation request")

	if err := (&environment{this, logPref}).serve(w, r); err != nil {
		w.Header().Set(tagX_edo_cooperation_error, idperr.From(err).ErrorDescription())
		idperr.RespondJson(w, r, erro.Wrap(err), logPref)
		return
	}
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:30,代码来源:handler.go


示例15: setupIdpDb

func setupIdpDb(db, coll string, idps []idpdb.Element) error {
	conn := monPool.New()
	defer conn.Close()

	for _, idp := range idps {
		keys := []map[string]interface{}{}
		for _, key := range idp.Keys() {
			keys = append(keys, key.ToMap())
		}
		m := bson.M{
			"issuer":                    idp.Id(),
			"authorization_endpoint":    idp.AuthUri(),
			"token_endpoint":            idp.TokenUri(),
			"userinfo_endpoint":         idp.AccountUri(),
			"cooperation_from_endpoint": idp.CoopFromUri(),
			"cooperation_to_endpoint":   idp.CoopToUri(),
			"jwks": keys,
		}
		for k, v := range idp.Names() {
			if k == "" {
				m["issuer_name"] = v
			} else {
				m["issuer_name#"+k] = v
			}
		}
		if err := conn.DB(db).C(coll).Insert(m); err != nil {
			return erro.Wrap(err)
		}
	}
	return nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:31,代码来源:main_test.go


示例16: flush

func (buff *fileLogBuffer) flush() error {
	n := 0
	writeBuff := []byte{}
	for elem := buff.unwritten.Front(); elem != nil; elem = elem.Next() {
		log := elem.Value.([]byte)
		if curSize := buff.sinkSize + len(writeBuff); curSize > 0 && // サイズオーバーしても 1 個は必ず書く。
			curSize+len(log) > buff.limit {
			break
		}
		writeBuff = append(writeBuff, log...)
		n++
	}

	if _, err := buff.sink.Write(writeBuff); err != nil {
		return erro.Wrap(err)
	}

	buff.sinkSize += len(writeBuff)
	if n == buff.unwritten.Len() {
		// 全部書き出した。
		buff.unwritten.Init()
		buff.unwrittenSize = 0
		return nil
	}

	// n 個だけ書き出した。

	for i := 0; i < n; i++ {
		buff.unwritten.Remove(buff.unwritten.Front())
	}
	buff.unwrittenSize -= len(writeBuff)
	return fileIsFull
}
开发者ID:realglobe-Inc,项目名称:go-lib,代码行数:33,代码来源:rotate.go


示例17: HandleCallback

func (this *Page) HandleCallback(w http.ResponseWriter, r *http.Request) {
	var logPref string

	// panic 対策。
	defer func() {
		if rcv := recover(); rcv != nil {
			server.RespondErrorHtml(w, r, erro.New(rcv), this.errTmpl, logPref)
			return
		}
	}()

	if this.stopper != nil {
		this.stopper.Stop()
		defer this.stopper.Unstop()
	}

	sender := request.Parse(r, this.sessLabel)
	logPref = sender.String() + ": "

	server.LogRequest(level.DEBUG, r, this.debug, logPref)

	log.Info(logPref, "Received callback request")
	defer log.Info(logPref, "Handled callback request")

	if err := (&environment{this, logPref, sender.Session(), nil}).callbackServe(w, r); err != nil {
		server.RespondErrorHtml(w, r, erro.Wrap(err), this.errTmpl, logPref)
		return
	}
	return
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:30,代码来源:handler_callback.go


示例18: newTestIdProvider

func newTestIdProvider(keys []jwk.Key) (*testIdProvider, error) {
	base, err := test.NewHttpServer(time.Minute)
	if err != nil {
		return nil, erro.Wrap(err)
	}
	return &testIdProvider{base, keys}, nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:7,代码来源:handler_test.go


示例19: HandleAuth

// ユーザー認証開始。
func (this *Page) HandleAuth(w http.ResponseWriter, r *http.Request) {
	var logPref string

	// panic 対策。
	defer func() {
		if rcv := recover(); rcv != nil {
			server.RespondErrorHtml(w, r, erro.New(rcv), this.errTmpl, logPref)
			return
		}
	}()

	if this.stopper != nil {
		this.stopper.Stop()
		defer this.stopper.Unstop()
	}

	logPref = server.ParseSender(r) + ": "

	server.LogRequest(level.DEBUG, r, this.debug, logPref)

	log.Info(logPref, "Received authentication request")
	defer log.Info(logPref, "Handled authentication request")

	if err := (&environment{this, logPref, "", nil}).authServe(w, r); err != nil {
		server.RespondErrorHtml(w, r, erro.Wrap(err), this.errTmpl, logPref)
		return
	}
	return
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:30,代码来源:handler_auth.go


示例20: UnmarshalJSON

func (this *Element) UnmarshalJSON(data []byte) error {
	var buff struct {
		Id      string    `json:"id"`
		Inv     bool      `json:"invalid"`
		Exp     time.Time `json:"expires"`
		Path    string    `json:"path"`
		Idp     string    `json:"id_provider"`
		Ta      string    `json:"client_id"`
		RediUri string    `json:"redirect_uri"`
		Stat    string    `json:"state"`
		Nonc    string    `json:"nonce"`
		Date    time.Time `json:"date"`
	}
	if err := json.Unmarshal(data, &buff); err != nil {
		return erro.Wrap(err)
	}

	this.id = buff.Id
	this.inv = buff.Inv
	this.exp = buff.Exp
	this.path = buff.Path
	this.idp = buff.Idp
	this.ta = buff.Ta
	this.rediUri = buff.RediUri
	this.stat = buff.Stat
	this.nonc = buff.Nonc
	this.date = buff.Date
	return nil
}
开发者ID:realglobe-Inc,项目名称:edo-auth,代码行数:29,代码来源:element.go



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Golang atomic2.Int64类代码示例发布时间:2022-05-28
下一篇:
Golang idp.Element类代码示例发布时间:2022-05-28
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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