jx/internal/transport/httpfileinfo.go

37 lines
899 B
Go
Raw Normal View History

// Copyright 2024 Matthew Rich <matthewrich.conf@gmail.com>. All rights reserved.
package transport
import (
"io/fs"
"decl/internal/identifier"
"net/url"
"path/filepath"
"time"
)
type HTTPFileInfo struct {
URI identifier.ID
parsedURI *url.URL
ContentLength int64
LastModified time.Time
ContentType string
Collection bool
}
func NewHTTPFileInfo(uri string) (h *HTTPFileInfo) {
h = &HTTPFileInfo{ URI: identifier.ID(uri) }
h.parsedURI = h.URI.Parse()
if h.parsedURI == nil {
return nil
}
return
}
func (h *HTTPFileInfo) Size() int64 { return h.ContentLength }
func (h *HTTPFileInfo) Name() string { return filepath.Base(h.parsedURI.Path) }
func (h *HTTPFileInfo) Mode() fs.FileMode { return 0777 }
func (h *HTTPFileInfo) ModTime() time.Time { return h.LastModified }
func (h *HTTPFileInfo) IsDir() bool { return h.Collection }
func (h *HTTPFileInfo) Sys() any { return any(h) }