Skip to content

Latest commit

 

History

History
237 lines (179 loc) · 6.45 KB

utils.md

File metadata and controls

237 lines (179 loc) · 6.45 KB

utils


    import "github.com/c2fo/vfs/v6/utils"

Error Constants

const (
	// ErrBadAbsFilePath constant is returned when a file path is not absolute
	ErrBadAbsFilePath = "absolute file path is invalid - must include leading slash and may not include trailing slash"
	// ErrBadRelFilePath constant is returned when a file path is not relative
	ErrBadRelFilePath = "relative file path is invalid - may not include leading or trailing slashes"
	// ErrBadAbsLocationPath constant is returned when a file path is not absolute
	ErrBadAbsLocationPath = "absolute location path is invalid - must include leading and trailing slashes"
	// ErrBadRelLocationPath constant is returned when a file path is not relative
	ErrBadRelLocationPath = "relative location path is invalid - may not include leading slash but must include trailing slash"
	// TouchCopyMinBufferSize min buffer size used in TouchCopyBuffered in bytes
	ErrBadPrefix = "prefix is invalid - may not include leading or trailing slashes and may not be empty"
	// TouchCopyMinBufferSize min buffer size used in TouchCopyBuffered in bytes
	TouchCopyMinBufferSize = 262144
)

func EnsureLeadingSlash

func EnsureLeadingSlash(dir string) string

EnsureLeadingSlash is like EnsureTrailingSlash except that it adds the leading slash if needed.

func EnsureTrailingSlash

func EnsureTrailingSlash(dir string) string

EnsureTrailingSlash is like AddTrailingSlash but will only ever use / since it's use for web uri's, never a Windows OS path.

func GetFileURI

func GetFileURI(f vfs.File) string

GetFileURI returns a File URI

func GetLocationURI

func GetLocationURI(l vfs.Location) string

GetLocationURI returns a Location URI

func PathToURI

func PathToURI(p string) (string, error)

PathToURI takes a relative or absolute path and returns an OS URI.

  • We assume non-scheme path is an OS File or Location.
  • We assume volume(URI authority) is empty.
  • We assume relative paths are relative to the pwd (program's working directory)
  • We assume an empty path is equal to the root path: "/"
original path becomes URI
/absolute/path/to/file.txt file:///absolute/path/to/file.txt
/some/absolute/path/ file:///absolute/path/
relative/path/to/file.txt file:///absolute/path/with/relative/path/to/file.txt
relative/path/ file:///absolute/path/with/relative/path/

func RemoveLeadingSlash

func RemoveLeadingSlash(path string) string

RemoveLeadingSlash removes leading slash, if any

func RemoveTrailingSlash

func RemoveTrailingSlash(path string) string

RemoveTrailingSlash removes trailing slash, if any

func TouchCopy

func TouchCopy(writer io.Writer, reader io.Reader) error

TouchCopy is a wrapper around io.Copy which ensures that even empty source files (reader) will get written as an empty file. It guarantees a Write() call on the target file. Deprecated: Use TouchCopyBuffer Instead

func TouchCopyBuffered

func TouchCopyBuffered(writer io.Writer, reader io.Reader, bufferSize int) error

TouchCopyBuffered is a wrapper around io.CopyBuffer which ensures that even empty source files (reader) will get written as an empty file. It guarantees a Write() call on the target file. bufferSize is in bytes and if is less than TouchCopyMinBufferSize will result in a buffer of size TouchCopyMinBufferSize bytes. If bufferSize is > TouchCopyMinBufferSize it will result in a buffer of size bufferSize bytes

func UpdateLastModifiedByMoving

func UpdateLastModifiedByMoving(file vfs.File) error

UpdateLastModifiedByMoving is used by some backends' Touch() method when a file already exists.

func ValidateAbsoluteFilePath

func ValidateAbsoluteFilePath(name string) error

ValidateAbsoluteFilePath ensures that a file path has a leading slash but not a trailing slash

func ValidateAbsoluteLocationPath

func ValidateAbsoluteLocationPath(name string) error

ValidateAbsoluteLocationPath ensure that a file path has both leading and trailing slashes

func ValidatePrefix

func ValidatePrefix(prefix string) error

ValidatePrefix ensures that a prefix path has neither leading nor trailing slashes may not be empty but unlike relative file path, may be simply "."

func ValidateRelativeFilePath

func ValidateRelativeFilePath(name string) error

ValidateRelativeFilePath ensures that a file path has neither leading nor trailing slashes

func ValidateRelativeLocationPath

func ValidateRelativeLocationPath(name string) error

ValidateRelativeLocationPath ensure that a file path has no leading slash but has a trailing slash

type Authority

type Authority struct {
}

Authority represents host, port and userinfo (user/pass) in a URI

func NewAuthority

func NewAuthority(authority string) (Authority, error)

NewAuthority initializes Authority struct by parsing authority string.

func (Authority) Host

func (a Authority) Host() string

Host returns the host portion of an authority

func (Authority) HostPortStr

func (a Authority) HostPortStr() string

HostPortStr returns a concatenated string of host and port from authority, separated by a colon, ie "host.com:1234"

func (Authority) Port

func (a Authority) Port() uint16

Port returns the port portion of an authority

func (Authority) String

func (a Authority) String() string

String() returns a string representation of authority. It does not include password per https://tools.ietf.org/html/rfc3986#section-3.2.1

Applications should not render as clear text any data after the first colon (":") character found within a userinfo
subcomponent unless the data after the colon is the empty string (indicating no password).

func (Authority) UserInfo

func (a Authority) UserInfo() UserInfo

UserInfo returns the userinfo section of authority. userinfo is username and password(deprecated).

type UserInfo

type UserInfo struct {
}

UserInfo represents user/pass portion of a URI

func (UserInfo) Password

func (u UserInfo) Password() string

Password returns the password of a URI UserInfo. May be an empty string.

func (UserInfo) Username

func (u UserInfo) Username() string

Username returns the username of a URI UserInfo. May be an empty string.