Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
Untitled diff
생성일
7년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
59 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
79 행
복사
66 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
83 행
복사
package api
package api
import (
import (
복사
복사됨
복사
복사됨
"github.com/
grafana/grafana/pkg/api/dtos"
"github.com/
torkelo
/grafana
-pro
/pkg/bus"
"github.com
/grafana
/grafana
/pkg/bus"
"github.com/
torkelo
/grafana
-pro
/pkg/
middleware
"
"github.com/
grafana
/grafana
/pkg/
components/apikeygen
"
m
"github.com/
torkelo
/grafana
-pro
/pkg/models"
"github.com/
grafana
/grafana
/pkg/models"
"
github.com/torkelo/grafana-pro/pkg/util
"
"
time
"
)
)
복사
복사됨
복사
복사됨
func GetA
PI
Keys(c *
models.ReqContext) Response
{
func GetA
pi
Keys(c *
middleware.Context)
{
query :=
models
.GetApiKeysQuery{
OrgId
: c.
OrgId
}
query :=
m
.GetApiKeysQuery{
AccountId
: c.
AccountId
}
if err := bus.Dispatch(&query); err != nil {
if err := bus.Dispatch(&query); err != nil {
복사
복사됨
복사
복사됨
return Error
(500, "Failed to list api keys", err)
c.JsonApiErr
(500, "Failed to list api keys", err)
return
}
}
복사
복사됨
복사
복사됨
result := make([]*
models
.ApiKeyDTO, len(query.Result))
result := make([]*
m
.ApiKeyDTO, len(query.Result))
for i, t := range query.Result {
for i, t := range query.Result {
복사
복사됨
복사
복사됨
var expiration *time.Time = nil
result[i] = &
m
.ApiKeyDTO{
if t.Expires != nil {
Id:
t.Id,
v := time.Unix(*t.Expires, 0)
Name:
t.Name,
expiration = &v
Role:
t.Role,
}
Key: t.Key
,
result[i] = &
models
.ApiKeyDTO{
Id:
t.Id,
Name:
t.Name,
Role:
t.Role,
Expiration: expiration
,
}
}
}
}
복사
복사됨
복사
복사됨
c.
JSON(200, result)
return
JSON(200, result)
}
}
복사
복사됨
복사
복사됨
func DeleteA
PI
Key(c *
models.ReqContext) Response
{
func DeleteA
pi
Key(c *
middleware.Context)
{
id := c.ParamsInt64(":id")
id := c.ParamsInt64(":id")
복사
복사됨
복사
복사됨
cmd := &
models
.DeleteApiKeyCommand{Id: id,
OrgId
: c.
OrgId
}
cmd := &
m
.DeleteApiKeyCommand{Id: id,
AccountId
: c.
AccountId
}
err := bus.Dispatch(cmd)
err := bus.Dispatch(cmd)
if err != nil {
if err != nil {
복사
복사됨
복사
복사됨
return Error
(500, "Failed to delete API key", err)
c.JsonApiErr
(500, "Failed to delete API key", err)
return
}
}
복사
복사됨
복사
복사됨
return Success
("API key deleted")
c.JsonOK
("API key deleted")
}
}
복사
복사됨
복사
복사됨
func
(hs *HTTPServer)
AddA
PI
Key(c *
models.ReqContext
, cmd
models
.AddApiKeyCommand)
Response
{
func
AddA
pi
Key(c *
middleware.Context
, cmd
m
.AddApiKeyCommand)
{
if !cmd.Role.IsValid() {
if !cmd.Role.IsValid() {
복사
복사됨
복사
복사됨
return Error
(400, "Invalid role specified", nil)
c.JsonApiErr
(400, "Invalid role specified", nil)
return
}
}
복사
복사됨
복사
복사됨
if hs.Cfg.ApiKeyMaxSecondsToLive != -1 {
cmd.AccountId = c.AccountId
if cmd.SecondsToLive == 0 {
cmd.Key =
util.GetRandomString(64)
return Error(400, "Number of seconds before expiration should be set", nil)
}
if cmd.SecondsToLive > hs.Cfg.ApiKeyMaxSecondsToLive {
return Error(400, "Number of seconds before expiration is greater than the global limit", nil)
}
}
cmd.OrgId = c.OrgId
newKeyInfo := apikeygen.New(cmd.OrgId, cmd.Name)
cmd.Key =
newKeyInfo.HashedKey
if err := bus.Dispatch(&cmd); err != nil {
if err := bus.Dispatch(&cmd); err != nil {
복사
복사됨
복사
복사됨
if err == models.ErrInvalidApiKeyExpiration {
c.JsonApiErr
(500, "Failed to add API key", err)
return Error(400, err.Error(), nil)
return
}
return Error
(500, "Failed to add API key", err)
}
}
복사
복사됨
복사
복사됨
result := &
dtos.NewApiKeyResult{
result := &
m.ApiKeyDTO{
Id: cmd.Result.Id,
Name: cmd.Result.Name,
Name: cmd.Result.Name,
복사
복사됨
복사
복사됨
Key:
newKeyInfo.ClientSecret
}
Role: cmd.Result.Role,
Key:
cmd.Result.Key,
}
복사
복사됨
복사
복사됨
return
JSON(200, result)
c.
JSON(200, result)
}
func UpdateApiKey(c *middleware.Context, cmd m.UpdateApiKeyCommand) {
if !cmd.Role.IsValid() {
c.JsonApiErr(400, "Invalid role specified", nil)
return
}
cmd.AccountId = c.AccountId
err := bus.Dispatch(&cmd)
if err != nil {
c.JsonApiErr(500, "Failed to update api key", err)
return
}
c.JsonOK("API key updated")
}
}
저장된 비교 결과
원본
파일 열기
package api import ( "github.com/grafana/grafana/pkg/api/dtos" "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/components/apikeygen" "github.com/grafana/grafana/pkg/models" "time" ) func GetAPIKeys(c *models.ReqContext) Response { query := models.GetApiKeysQuery{OrgId: c.OrgId} if err := bus.Dispatch(&query); err != nil { return Error(500, "Failed to list api keys", err) } result := make([]*models.ApiKeyDTO, len(query.Result)) for i, t := range query.Result { var expiration *time.Time = nil if t.Expires != nil { v := time.Unix(*t.Expires, 0) expiration = &v } result[i] = &models.ApiKeyDTO{ Id: t.Id, Name: t.Name, Role: t.Role, Expiration: expiration, } } return JSON(200, result) } func DeleteAPIKey(c *models.ReqContext) Response { id := c.ParamsInt64(":id") cmd := &models.DeleteApiKeyCommand{Id: id, OrgId: c.OrgId} err := bus.Dispatch(cmd) if err != nil { return Error(500, "Failed to delete API key", err) } return Success("API key deleted") } func (hs *HTTPServer) AddAPIKey(c *models.ReqContext, cmd models.AddApiKeyCommand) Response { if !cmd.Role.IsValid() { return Error(400, "Invalid role specified", nil) } if hs.Cfg.ApiKeyMaxSecondsToLive != -1 { if cmd.SecondsToLive == 0 { return Error(400, "Number of seconds before expiration should be set", nil) } if cmd.SecondsToLive > hs.Cfg.ApiKeyMaxSecondsToLive { return Error(400, "Number of seconds before expiration is greater than the global limit", nil) } } cmd.OrgId = c.OrgId newKeyInfo := apikeygen.New(cmd.OrgId, cmd.Name) cmd.Key = newKeyInfo.HashedKey if err := bus.Dispatch(&cmd); err != nil { if err == models.ErrInvalidApiKeyExpiration { return Error(400, err.Error(), nil) } return Error(500, "Failed to add API key", err) } result := &dtos.NewApiKeyResult{ Name: cmd.Result.Name, Key: newKeyInfo.ClientSecret} return JSON(200, result) }
수정본
파일 열기
package api import ( "github.com/torkelo/grafana-pro/pkg/bus" "github.com/torkelo/grafana-pro/pkg/middleware" m "github.com/torkelo/grafana-pro/pkg/models" "github.com/torkelo/grafana-pro/pkg/util" ) func GetApiKeys(c *middleware.Context) { query := m.GetApiKeysQuery{AccountId: c.AccountId} if err := bus.Dispatch(&query); err != nil { c.JsonApiErr(500, "Failed to list api keys", err) return } result := make([]*m.ApiKeyDTO, len(query.Result)) for i, t := range query.Result { result[i] = &m.ApiKeyDTO{ Id: t.Id, Name: t.Name, Role: t.Role, Key: t.Key, } } c.JSON(200, result) } func DeleteApiKey(c *middleware.Context) { id := c.ParamsInt64(":id") cmd := &m.DeleteApiKeyCommand{Id: id, AccountId: c.AccountId} err := bus.Dispatch(cmd) if err != nil { c.JsonApiErr(500, "Failed to delete API key", err) return } c.JsonOK("API key deleted") } func AddApiKey(c *middleware.Context, cmd m.AddApiKeyCommand) { if !cmd.Role.IsValid() { c.JsonApiErr(400, "Invalid role specified", nil) return } cmd.AccountId = c.AccountId cmd.Key = util.GetRandomString(64) if err := bus.Dispatch(&cmd); err != nil { c.JsonApiErr(500, "Failed to add API key", err) return } result := &m.ApiKeyDTO{ Id: cmd.Result.Id, Name: cmd.Result.Name, Role: cmd.Result.Role, Key: cmd.Result.Key, } c.JSON(200, result) } func UpdateApiKey(c *middleware.Context, cmd m.UpdateApiKeyCommand) { if !cmd.Role.IsValid() { c.JsonApiErr(400, "Invalid role specified", nil) return } cmd.AccountId = c.AccountId err := bus.Dispatch(&cmd) if err != nil { c.JsonApiErr(500, "Failed to update api key", err) return } c.JsonOK("API key updated") }
비교하기