Compare commits

..

12 Commits

12 changed files with 69 additions and 184 deletions
-5
View File
@@ -1,5 +0,0 @@
# HTTP Settings
PORT=8080
# App Settings
STORAGE_PATH=/path/to/files
+3 -4
View File
@@ -9,16 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- v1.1 German Translation -
### Changed ### Changed
- Use frontmatter title & description in each language version template -
### Removed ### Removed
- Trademark sign previously shown after the project description in version -
0.3.0
## [0.0.0] - 2000-01-01 ## [0.0.0] - 2000-01-01
+3
View File
@@ -9,3 +9,6 @@ vet: fmt
build: vet build: vet
go build -o drogobox internal/app/main.go go build -o drogobox internal/app/main.go
test:
go test ./tests/...
-5
View File
@@ -1,5 +0,0 @@
*
!.gitignore
!notes.md
!readme.txt
!subfolder/totally-ai-generated.jpg
-73
View File
@@ -1,73 +0,0 @@
# Retinere patiere
## Nisi animavit pectore vulnus
Lorem markdownum capillos pavefactaque quis serpens, atro qui odit tamen. Dolens
Hippotadaeque vina Parthenopeia tolle, et omne diva **te iter laetior** crater
in pretium ipsi per una? Ignes fatetur. Digitos Iovemque mei reverti iterque:
*flumina eheu*, in nullo caelum, bifores delicuit. Dereptis adventare grandaevus
gentes.
Committe vites telluris suos coloris genu illum invidiosa nomenque litus
coacervatos perque: et templa [sorores ignari](#ultima-nullum) eunti hastam.
Possit recusem cecidit templorum credere flavescere poterit ferrum. Nulla sucos
captae caligine Alcyonae incumbere aere, tendebat paternos lunam.
## Ultima nullum
Senserat densumque cannas oppositoque inpune et metu premunt placidis eiusdem.
Protegit huic taedas qui Rhexenore, est `frozenToslink` tale unda Aethionque
infra per Procris coloque Iliacas `meta_subnet_configuration` idque conscia
constituis.
rateArpSmm = driverPpm;
if (482710) {
bar(-3);
}
command += host(port_sram_certificate(newbie_device, 4) + memory_click,
multiprocessing - 3);
troubleshooting_queue_bar.subdirectory += bespoke(1);
modeToggle(wrap);
## Noctes longa querellae inire
Tyranni profecit missus animum Agenorides referre montes, se his cupiunt ferro,
capillis ille. Dare mei pars, per [bimatrem rogat](#retinere-patiere) tradita
aquae est foedera riget grata.
hardCertificateHandle.clob = 5;
websiteCdfsFile(spool(pppoe), arp_kbps, architecture_media_dma);
if (4) {
keyboard.dvi_bcc += syntaxFacebookSimm;
skyscraperTableHost = 1;
ppc /= password.webDeviceLanguage.card(snow, gamma);
}
cybersquatterHost = commercialSimmTiger.file_address(radcabGuiSli,
formatBasicAffiliate, compilerIeeeCharacter) +
virtualizationPanelEnd;
if (adware + ivr_font_protector(3) + mebibyte(end, developmentMatrix)) {
text_video(dos_output);
runtimeHoneypotAta(-1, 83 - delete);
megabyteGigo /= banner_sync_integrated;
}
[Plurima non altae](#se-altos-aquila-intima) subiectis, gloria vidit circumdata
videt commissaque atque, harundine. Bisque tellusque modo humilem veteres,
magnis: secus deos pectora fumantis, ius. Qui matre reminiscor exclamat, ruinas
prima ense munusque occidit, densa dilecta sit, poplite. Est memini, mixtaeque
et possent ignibus, nam limen Circes, tangentiaque amici. Suppressis timorem
omnibus.
## Se altos aquila intima
Quod aenea hastae [Hecaben](#se-altos-aquila-intima) onerosa,
[vos](#retinere-patiere) quae pars certa tacuit caelumque, nascitur non vigili
officium harenosae. Nec et monte multi umbra dona alii [lemnius contactu
ferendo](#ultima-nullum). Laetus visa iubemur favilla? Egisse mente nunc herbis
Abas `searchRay`, confiteorque maris, sedens stupuit, Cycnum.
- Diversa montanum
- Solus pueroque
- Umbras et materque siccis Phocus in quoque
- Ipsae dotatissima nomine auras intellege dubie dignus
- Nec tamen
-1
View File
@@ -1 +0,0 @@
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life One day however a small line of blind text by the name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox advised her not to do so, because there were thousands of bad Commas, wild Question Marks and devious Semikoli, but the Little Blind Text didnt listen. She packed her seven versalia, put her initial into the belt and made herself on the way. When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

+2 -4
View File
@@ -1,5 +1,3 @@
module drogobox.com/drogobox module drogobox.com/drogobox-server
go 1.25.9 go 1.26.3
require github.com/joho/godotenv v1.5.1 // indirect
-2
View File
@@ -1,2 +0,0 @@
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
-90
View File
@@ -1,90 +0,0 @@
package main
import (
"fmt"
"log"
"os"
"path/filepath"
"time"
"github.com/joho/godotenv"
)
func resolveFileStorePath(fileStorePath string) {
err := os.MkdirAll(fileStorePath, os.ModePerm)
if err != nil {
log.Fatal(err)
}
}
type StoredFileNode struct {
Name string `json:"name"` // full file name with extension
Path string `json:"path"` // path to file
Size int64 `json:"size"` // byte size of file
Extension string `json:"extension"` // the file name extension
MimeType string `json:"mime_type"` // mime type regarless of extension
Permissions string `json:"permissions"` // UNIX permissions
IsFolder bool `json:"is_folder"` // directory flag
Modified time.Time `json:"modified_at"` // last modification date
}
func readFilesFromFileStorePath(fileStorePath string) {
files, err := os.ReadDir(fileStorePath)
if err != nil {
log.Fatal(err)
}
shownNodes := []StoredFileNode{}
for _, file := range files {
fullPath := filepath.Join(fileStorePath, file.Name())
fileStat, err := os.Stat(fullPath)
if err != nil {
log.Fatal(err)
}
fmt.Println(fileStat.Size())
fileInfo, err := file.Info() // This returns an os.FileInfo
if err != nil {
continue
}
// generate new StoredFileNode
newNode := StoredFileNode{
Name: file.Name(),
Path: fileStorePath,
Size: fileStat.Size(),
Extension: "--",
MimeType: "--",
Permissions: "--",
IsFolder: false,
Modified: fileInfo.ModTime(),
}
if file.IsDir() {
newNode.IsFolder = true
}
shownNodes = append(shownNodes, newNode)
}
fmt.Println(shownNodes)
}
func main() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
port := os.Getenv("PORT")
fileStorePath := os.Getenv("STORAGE_PATH")
resolveFileStorePath(fileStorePath)
fmt.Printf("in the future I will listen on port: %s\n", port)
fmt.Printf("Reading files from: %s\n", fileStorePath)
readFilesFromFileStorePath(fileStorePath)
}
+38
View File
@@ -0,0 +1,38 @@
package storage
import (
"io"
"os"
)
type LocalStorage struct {
BaseDir string
}
func (s *LocalStorage) UploadFile(dirPath string, filename string, data io.Reader) error {
//
}
func (s *LocalStorage) ListFiles(dirPath string) ([]FileNode, error) {
//
}
func (s *LocalStorage) ReadFile(filePath string) (*os.File, error) {
//
}
func (s *LocalStorage) WriteFile(dirPath string, filename string, data io.Reader) (int, error) {
// this is explicitly for writing text files that aren't being uploaded
}
func (s *LocalStorage) DeleteFile(filePath string) error {
//
}
func (s *LocalStorage) DeleteDirectory(dirPath string) error {
//
}
func (s *LocalStorage) DeleteDirectoryRecursive(dirPath string) error {
//
}
+23
View File
@@ -0,0 +1,23 @@
package storage
import (
"io"
"os"
)
type Storage interface {
UploadFile(dirPath string, filename string, data io.Reader) error
ListFiles(dirPath string) ([]FileNode, error)
ReadFile(filePath string) (*os.File, error)
WriteFile(dirPath string, filename string, data io.Reader) (int, error)
DeleteFile(filePath string) error
DeleteDirectory(dirPath string) error
DeleteDirectoryRecursive(dirPath string) error
}
type FileNode struct {
RelativeBasePath string
FileName string
IsDirectory bool
FileSize uint64
}