mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-06 20:47:49 +00:00
59 lines
1.0 KiB
Go
59 lines
1.0 KiB
Go
// Copyright 2023 Princess B33f Heavy Industries / Dave Shanley
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package index
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
Local RefType = iota
|
|
File
|
|
HTTP
|
|
)
|
|
|
|
type RefType int
|
|
|
|
type ExtractedRef struct {
|
|
Location string
|
|
Type RefType
|
|
}
|
|
|
|
// GetFile returns the file path of the reference.
|
|
func (r *ExtractedRef) GetFile() string {
|
|
switch r.Type {
|
|
case File, HTTP:
|
|
location := strings.Split(r.Location, "#/")
|
|
return location[0]
|
|
default:
|
|
return r.Location
|
|
}
|
|
}
|
|
|
|
// GetReference returns the reference path of the reference.
|
|
func (r *ExtractedRef) GetReference() string {
|
|
switch r.Type {
|
|
case File, HTTP:
|
|
location := strings.Split(r.Location, "#/")
|
|
return fmt.Sprintf("#/%s", location[1])
|
|
default:
|
|
return r.Location
|
|
}
|
|
}
|
|
|
|
// ExtractFileType returns the file extension of the reference.
|
|
func ExtractFileType(ref string) FileExtension {
|
|
if strings.HasSuffix(ref, ".yaml") {
|
|
return YAML
|
|
}
|
|
if strings.HasSuffix(ref, ".yml") {
|
|
return YAML
|
|
}
|
|
if strings.HasSuffix(ref, ".json") {
|
|
return JSON
|
|
}
|
|
return UNSUPPORTED
|
|
}
|