Skip to content

Commit

Permalink
Add TXT and RTF Parser
Browse files Browse the repository at this point in the history
  • Loading branch information
Vytek committed Sep 3, 2023
1 parent b38970f commit 256970d
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 7 deletions.
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ go 1.21.0

require github.com/gabriel-vasile/mimetype v1.4.2

require github.com/EndFirstCorp/peekingReader v0.0.0-20171012052444-257fb6f1a1a6 // indirect

require (
github.com/h2non/filetype v1.1.3
github.com/lu4p/cat v0.1.5
golang.org/x/net v0.8.0 // indirect
)
5 changes: 5 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
github.com/EndFirstCorp/peekingReader v0.0.0-20171012052444-257fb6f1a1a6 h1:t27CGFMv8DwGwqRPEa2VNof5I/aZwO6q2gfJhN8q0U4=
github.com/EndFirstCorp/peekingReader v0.0.0-20171012052444-257fb6f1a1a6/go.mod h1:zpqkXxDsVfEIUZEWvT9yAo8OmRvSlRrcYQ3Zs8sSubA=
github.com/gabriel-vasile/mimetype v1.1.1/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
github.com/h2non/filetype v1.1.3 h1:FKkx9QbD7HR/zjK1Ia5XiBsq9zdLi5Kf3zGyFTAFkGg=
github.com/h2non/filetype v1.1.3/go.mod h1:319b3zT68BvV+WRj7cwy856M2ehB3HqNOt6sy1HndBY=
github.com/lu4p/cat v0.1.5 h1:s51Bp/ns3u6n+hjjL2F77ySY6j/GD5SJG/t6Ok4Y1S0=
github.com/lu4p/cat v0.1.5/go.mod h1:G3YRyjSvBipqMBRZ2uLf1oRL3/eGGmuZf96m95Y4jRQ=
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
40 changes: 33 additions & 7 deletions opencrucible.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,48 @@ import (

"github.com/gabriel-vasile/mimetype"
"github.com/h2non/filetype"
"github.com/lu4p/cat"
)

func DetectFileTypeMIME(FileToDetect []byte) (string, string, error) {
// If no FileToDetect was given, return an error with a message.
if len(FileToDetect) == 0 {
return "", "", errors.New("file to detect is empty")
// Version exposes the current package version.
const Version = "0.0.1"

//Detects

func DetectFileTypeMIME(StreamToDetect []byte) (string, string, error) {
// If no StreamToDetect was given, return an error with a message.
if len(StreamToDetect) == 0 {
return "", "", errors.New("stream to parse is empty")
}
mtype, err := mimetype.DetectReader(bytes.NewReader(FileToDetect))
mtype, err := mimetype.DetectReader(bytes.NewReader(StreamToDetect))
return mtype.String(), mtype.Extension(), err
}

func DetectFileType(FileToDetect []byte) (string, string, error) {
kind, _ := filetype.Match(FileToDetect)
func DetectFileType(StreamToDetect []byte) (string, string, error) {
kind, _ := filetype.Match(StreamToDetect)
if kind == filetype.Unknown {
return "", "", errors.New("unknown file type")
} else {
return kind.MIME.Value, kind.Extension, nil
}
}

//Parsers

func TXTParseToString(StreamToParse []byte) (string, error) {
// If no StreamToDetect was given, return an error with a message.
if len(StreamToParse) == 0 {
return "", errors.New("stream to parse is empty")
}
txt, err := cat.FromBytes(StreamToParse)
return txt, err
}

func RTFParseToString(StreamToParse []byte) (string, error) {
// If no StreamToDetect was given, return an error with a message.
if len(StreamToParse) == 0 {
return "", errors.New("stream to parse is empty")
}
rtf, err := cat.FromBytes(StreamToParse)
return rtf, err
}

0 comments on commit 256970d

Please sign in to comment.