func getParamsFromPath()

in internal/service/parse.go [55:80]


func getParamsFromPath(r *http.Request, pathPrefix string) (*model.GetSecretParams, error) {
	params := &model.GetSecretParams{}
	secretPath := r.URL.Path
	if !strings.HasPrefix(secretPath, pathPrefix) || len(secretPath) <= len(pathPrefix) {
		return nil, errors.New("missing secret ID")
	}
	params.SecretID = secretPath[len(pathPrefix):]

	query := r.URL.Query()
	if val, exists := query[QueryParamsVersionId]; exists {
		params.VersionID = val[0]
	}
	// Compatible with vault format
	if val, exists := query[QueryParamsVersion]; exists {
		params.VersionID = val[0]
	}
	if val, exists := query[QueryParamsVersionStage]; exists {
		params.VersionStage = val[0]
	}
	for param := range query {
		if param != QueryParamsVersionId && param != QueryParamsVersion && param != QueryParamsVersionStage {
			return nil, fmt.Errorf("unknown parameter: %s", param)
		}
	}
	return params, nil
}