summaryrefslogtreecommitdiff
path: root/vendor/github.com/dsoprea/go-iptc
diff options
context:
space:
mode:
authorLibravatar Terin Stock <terinjokes@gmail.com>2025-03-09 17:47:56 +0100
committerLibravatar Terin Stock <terinjokes@gmail.com>2025-03-10 01:59:49 +0100
commit3ac1ee16f377d31a0fb80c8dae28b6239ac4229e (patch)
treef61faa581feaaeaba2542b9f2b8234a590684413 /vendor/github.com/dsoprea/go-iptc
parent[chore] update URLs to forked source (diff)
downloadgotosocial-3ac1ee16f377d31a0fb80c8dae28b6239ac4229e.tar.xz
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/dsoprea/go-iptc')
-rw-r--r--vendor/github.com/dsoprea/go-iptc/.MODULE_ROOT0
-rw-r--r--vendor/github.com/dsoprea/go-iptc/LICENSE21
-rw-r--r--vendor/github.com/dsoprea/go-iptc/README.md3
-rw-r--r--vendor/github.com/dsoprea/go-iptc/standard.go99
-rw-r--r--vendor/github.com/dsoprea/go-iptc/tag.go277
-rw-r--r--vendor/github.com/dsoprea/go-iptc/testing_common.go70
-rw-r--r--vendor/github.com/dsoprea/go-iptc/utility.go25
7 files changed, 0 insertions, 495 deletions
diff --git a/vendor/github.com/dsoprea/go-iptc/.MODULE_ROOT b/vendor/github.com/dsoprea/go-iptc/.MODULE_ROOT
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/github.com/dsoprea/go-iptc/.MODULE_ROOT
+++ /dev/null
diff --git a/vendor/github.com/dsoprea/go-iptc/LICENSE b/vendor/github.com/dsoprea/go-iptc/LICENSE
deleted file mode 100644
index d92c04268..000000000
--- a/vendor/github.com/dsoprea/go-iptc/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Dustin Oprea
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/dsoprea/go-iptc/README.md b/vendor/github.com/dsoprea/go-iptc/README.md
deleted file mode 100644
index d28e03d0a..000000000
--- a/vendor/github.com/dsoprea/go-iptc/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Overview
-
-This project provides functionality to parse a series of IPTC records/datasets. It also provides name resolution, but other constraints/validation is not yet implemented (though there is structure present that can accommodate this when desired/required).
diff --git a/vendor/github.com/dsoprea/go-iptc/standard.go b/vendor/github.com/dsoprea/go-iptc/standard.go
deleted file mode 100644
index 41a043f02..000000000
--- a/vendor/github.com/dsoprea/go-iptc/standard.go
+++ /dev/null
@@ -1,99 +0,0 @@
-package iptc
-
-import (
- "errors"
-)
-
-type StreamTagInfo struct {
- Description string
-}
-
-var (
- standardTags = map[StreamTagKey]StreamTagInfo{
- StreamTagKey{1, 120}: StreamTagInfo{"ARM Identifier"},
-
- StreamTagKey{1, 122}: StreamTagInfo{"ARM Version"},
- StreamTagKey{2, 0}: StreamTagInfo{"Record Version"},
- StreamTagKey{2, 3}: StreamTagInfo{"Object Type Reference"},
- StreamTagKey{2, 4}: StreamTagInfo{"Object Attribute Reference"},
- StreamTagKey{2, 5}: StreamTagInfo{"Object Name"},
- StreamTagKey{2, 7}: StreamTagInfo{"Edit Status"},
- StreamTagKey{2, 8}: StreamTagInfo{"Editorial Update"},
- StreamTagKey{2, 10}: StreamTagInfo{"Urgency"},
- StreamTagKey{2, 12}: StreamTagInfo{"Subject Reference"},
- StreamTagKey{2, 15}: StreamTagInfo{"Category"},
- StreamTagKey{2, 20}: StreamTagInfo{"Supplemental Category"},
- StreamTagKey{2, 22}: StreamTagInfo{"Fixture Identifier"},
- StreamTagKey{2, 25}: StreamTagInfo{"Keywords"},
- StreamTagKey{2, 26}: StreamTagInfo{"Content Location Code"},
- StreamTagKey{2, 27}: StreamTagInfo{"Content Location Name"},
- StreamTagKey{2, 30}: StreamTagInfo{"Release Date"},
- StreamTagKey{2, 35}: StreamTagInfo{"Release Time"},
- StreamTagKey{2, 37}: StreamTagInfo{"Expiration Date"},
- StreamTagKey{2, 38}: StreamTagInfo{"Expiration Time"},
- StreamTagKey{2, 40}: StreamTagInfo{"Special Instructions"},
- StreamTagKey{2, 42}: StreamTagInfo{"Action Advised"},
- StreamTagKey{2, 45}: StreamTagInfo{"Reference Service"},
- StreamTagKey{2, 47}: StreamTagInfo{"Reference Date"},
- StreamTagKey{2, 50}: StreamTagInfo{"Reference Number"},
- StreamTagKey{2, 55}: StreamTagInfo{"Date Created"},
- StreamTagKey{2, 60}: StreamTagInfo{"Time Created"},
- StreamTagKey{2, 62}: StreamTagInfo{"Digital Creation Date"},
- StreamTagKey{2, 63}: StreamTagInfo{"Digital Creation Time"},
- StreamTagKey{2, 65}: StreamTagInfo{"Originating Program"},
- StreamTagKey{2, 70}: StreamTagInfo{"Program Version"},
- StreamTagKey{2, 75}: StreamTagInfo{"Object Cycle"},
- StreamTagKey{2, 80}: StreamTagInfo{"By-line"},
- StreamTagKey{2, 85}: StreamTagInfo{"By-line Title"},
- StreamTagKey{2, 90}: StreamTagInfo{"City"},
- StreamTagKey{2, 92}: StreamTagInfo{"Sublocation"},
- StreamTagKey{2, 95}: StreamTagInfo{"Province/State"},
- StreamTagKey{2, 100}: StreamTagInfo{"Country/Primary Location Code"},
- StreamTagKey{2, 101}: StreamTagInfo{"Country/Primary Location Name"},
- StreamTagKey{2, 103}: StreamTagInfo{"Original Transmission Reference"},
- StreamTagKey{2, 105}: StreamTagInfo{"Headline"},
- StreamTagKey{2, 110}: StreamTagInfo{"Credit"},
- StreamTagKey{2, 115}: StreamTagInfo{"Source"},
- StreamTagKey{2, 116}: StreamTagInfo{"Copyright Notice"},
- StreamTagKey{2, 118}: StreamTagInfo{"Contact"},
- StreamTagKey{2, 120}: StreamTagInfo{"Caption/Abstract"},
- StreamTagKey{2, 122}: StreamTagInfo{"Writer/Editor"},
- StreamTagKey{2, 125}: StreamTagInfo{"Rasterized Caption"},
- StreamTagKey{2, 130}: StreamTagInfo{"Image Type"},
- StreamTagKey{2, 131}: StreamTagInfo{"Image Orientation"},
- StreamTagKey{2, 135}: StreamTagInfo{"Language Identifier"},
- StreamTagKey{2, 150}: StreamTagInfo{"Audio Type"},
- StreamTagKey{2, 151}: StreamTagInfo{"Audio Sampling Rate"},
- StreamTagKey{2, 152}: StreamTagInfo{"Audio Sampling Resolution"},
- StreamTagKey{2, 153}: StreamTagInfo{"Audio Duration"},
- StreamTagKey{2, 154}: StreamTagInfo{"Audio Outcue"},
- StreamTagKey{2, 200}: StreamTagInfo{"ObjectData Preview File Format"},
- StreamTagKey{2, 201}: StreamTagInfo{"ObjectData Preview File Format Version"},
- StreamTagKey{2, 202}: StreamTagInfo{"ObjectData Preview Data"},
- StreamTagKey{7, 10}: StreamTagInfo{"Size Mode"},
- StreamTagKey{7, 20}: StreamTagInfo{"Max Subfile Size"},
- StreamTagKey{7, 90}: StreamTagInfo{"ObjectData Size Announced"},
- StreamTagKey{7, 95}: StreamTagInfo{"Maximum ObjectData Size"},
- StreamTagKey{8, 10}: StreamTagInfo{"Subfile"},
- StreamTagKey{9, 10}: StreamTagInfo{"Confirmed ObjectData Size"},
- }
-)
-
-var (
- // ErrTagNotStandard indicates that the given tag is not known among the
- // documented standard set.
- ErrTagNotStandard = errors.New("not a standard tag")
-)
-
-// GetTagInfo return the info for the given tag. Returns ErrTagNotStandard if
-// not known.
-func GetTagInfo(recordNumber, datasetNumber int) (sti StreamTagInfo, err error) {
- stk := StreamTagKey{uint8(recordNumber), uint8(datasetNumber)}
-
- sti, found := standardTags[stk]
- if found == false {
- return sti, ErrTagNotStandard
- }
-
- return sti, nil
-}
diff --git a/vendor/github.com/dsoprea/go-iptc/tag.go b/vendor/github.com/dsoprea/go-iptc/tag.go
deleted file mode 100644
index 18afbb897..000000000
--- a/vendor/github.com/dsoprea/go-iptc/tag.go
+++ /dev/null
@@ -1,277 +0,0 @@
-package iptc
-
-import (
- "errors"
- "fmt"
- "io"
- "strings"
- "unicode"
-
- "encoding/binary"
-
- "github.com/dsoprea/go-logging"
-)
-
-var (
- // TODO(dustin): We're still not sure if this is the right endianness. No search to IPTC or IIM seems to state one or the other.
-
- // DefaultEncoding is the standard encoding for the IPTC format.
- defaultEncoding = binary.BigEndian
-)
-
-var (
- // ErrInvalidTagMarker indicates that the tag can not be parsed because the
- // tag boundary marker is not the expected value.
- ErrInvalidTagMarker = errors.New("invalid tag marker")
-)
-
-// Tag describes one tag read from the stream.
-type Tag struct {
- recordNumber uint8
- datasetNumber uint8
- dataSize uint64
-}
-
-// String expresses state as a string.
-func (tag *Tag) String() string {
- return fmt.Sprintf(
- "Tag<DATASET=(%d:%d) DATA-SIZE=(%d)>",
- tag.recordNumber, tag.datasetNumber, tag.dataSize)
-}
-
-// DecodeTag parses one tag from the stream.
-func DecodeTag(r io.Reader) (tag Tag, err error) {
- defer func() {
- if state := recover(); state != nil {
- err = log.Wrap(state.(error))
- }
- }()
-
- tagMarker := uint8(0)
- err = binary.Read(r, defaultEncoding, &tagMarker)
- if err != nil {
- if err == io.EOF {
- return tag, err
- }
-
- log.Panic(err)
- }
-
- if tagMarker != 0x1c {
- return tag, ErrInvalidTagMarker
- }
-
- recordNumber := uint8(0)
- err = binary.Read(r, defaultEncoding, &recordNumber)
- log.PanicIf(err)
-
- datasetNumber := uint8(0)
- err = binary.Read(r, defaultEncoding, &datasetNumber)
- log.PanicIf(err)
-
- dataSize16Raw := uint16(0)
- err = binary.Read(r, defaultEncoding, &dataSize16Raw)
- log.PanicIf(err)
-
- var dataSize uint64
-
- if dataSize16Raw < 32768 {
- // We only had 16-bits (has the MSB set to (0)).
- dataSize = uint64(dataSize16Raw)
- } else {
- // This field is just the length of the length (has the MSB set to (1)).
-
- // Clear the MSB.
- lengthLength := dataSize16Raw & 32767
-
- if lengthLength == 4 {
- dataSize32Raw := uint32(0)
- err := binary.Read(r, defaultEncoding, &dataSize32Raw)
- log.PanicIf(err)
-
- dataSize = uint64(dataSize32Raw)
- } else if lengthLength == 8 {
- err := binary.Read(r, defaultEncoding, &dataSize)
- log.PanicIf(err)
- } else {
- // No specific sizes or limits are specified in the specification
- // so we need to impose our own limits in order to implement.
-
- log.Panicf("extended data-set tag size is not supported: (%d)", lengthLength)
- }
- }
-
- tag = Tag{
- recordNumber: recordNumber,
- datasetNumber: datasetNumber,
- dataSize: dataSize,
- }
-
- return tag, nil
-}
-
-// StreamTagKey is a convenience type that lets us key our index with a high-
-// level type.
-type StreamTagKey struct {
- // RecordNumber is the major classification of the dataset.
- RecordNumber uint8
-
- // DatasetNumber is the minor classification of the dataset.
- DatasetNumber uint8
-}
-
-// String returns a descriptive string.
-func (stk StreamTagKey) String() string {
- return fmt.Sprintf("%d:%d", stk.RecordNumber, stk.DatasetNumber)
-}
-
-// Data is a convenience wrapper around a byte-slice.
-type TagData []byte
-
-// IsPrintable returns true if all characters are printable.
-func (tg TagData) IsPrintable() bool {
- for _, b := range tg {
- r := rune(b)
-
- // Newline characters aren't considered printable.
- if r == 0x0d || r == 0x0a {
- continue
- }
-
- if unicode.IsGraphic(r) == false || unicode.IsPrint(r) == false {
- return false
- }
- }
-
- return true
-}
-
-// String returns a descriptive string. If the data doesn't include any non-
-// printable characters, it will include the value itself.
-func (tg TagData) String() string {
- if tg.IsPrintable() == true {
- return string(tg)
- } else {
- return fmt.Sprintf("BINARY<(%d) bytes>", len(tg))
- }
-}
-
-// ParsedTags is the complete, unordered set of tags parsed from the stream.
-type ParsedTags map[StreamTagKey][]TagData
-
-// ParseStream parses a serial sequence of tags and tag data out of the stream.
-func ParseStream(r io.Reader) (tags map[StreamTagKey][]TagData, err error) {
- defer func() {
- if state := recover(); state != nil {
- err = log.Wrap(state.(error))
- }
- }()
-
- tags = make(ParsedTags)
-
- for {
- tag, err := DecodeTag(r)
- if err != nil {
- if err == io.EOF {
- break
- }
-
- log.Panic(err)
- }
-
- raw := make([]byte, tag.dataSize)
-
- _, err = io.ReadFull(r, raw)
- log.PanicIf(err)
-
- data := TagData(raw)
-
- stk := StreamTagKey{
- RecordNumber: tag.recordNumber,
- DatasetNumber: tag.datasetNumber,
- }
-
- if existing, found := tags[stk]; found == true {
- tags[stk] = append(existing, data)
- } else {
- tags[stk] = []TagData{data}
- }
- }
-
- return tags, nil
-}
-
-// GetSimpleDictionaryFromParsedTags returns a dictionary of tag names to tag
-// values, where all values are strings and any tag that had a non-printable
-// value is omitted. We will also only return the first value, therefore
-// dropping any follow-up values for repeatable tags. This will ignore non-
-// standard tags. This will trim whitespace from the ends of strings.
-//
-// This is a convenience function for quickly displaying only the summary IPTC
-// metadata that a user might actually be interested in at first glance.
-func GetSimpleDictionaryFromParsedTags(pt ParsedTags) (distilled map[string]string) {
- distilled = make(map[string]string)
-
- for stk, dataSlice := range pt {
- sti, err := GetTagInfo(int(stk.RecordNumber), int(stk.DatasetNumber))
- if err != nil {
- if err == ErrTagNotStandard {
- continue
- } else {
- log.Panic(err)
- }
- }
-
- data := dataSlice[0]
-
- if data.IsPrintable() == false {
- continue
- }
-
- // TODO(dustin): Trim leading whitespace, too.
- distilled[sti.Description] = strings.Trim(string(data), "\r\n")
- }
-
- return distilled
-}
-
-// GetDictionaryFromParsedTags returns all tags. It will keep non-printable
-// values, though will not print a placeholder instead. This will keep non-
-// standard tags (and print the fully-qualified dataset ID rather than the
-// name). It will keep repeated values (with the counter value appended to the
-// end).
-func GetDictionaryFromParsedTags(pt ParsedTags) (distilled map[string]string) {
- distilled = make(map[string]string)
- for stk, dataSlice := range pt {
- var keyPhrase string
-
- sti, err := GetTagInfo(int(stk.RecordNumber), int(stk.DatasetNumber))
- if err != nil {
- if err == ErrTagNotStandard {
- keyPhrase = fmt.Sprintf("%s (not a standard tag)", stk.String())
- } else {
- log.Panic(err)
- }
- } else {
- keyPhrase = sti.Description
- }
-
- for i, data := range dataSlice {
- currentKeyPhrase := keyPhrase
- if len(dataSlice) > 1 {
- currentKeyPhrase = fmt.Sprintf("%s (%d)", currentKeyPhrase, i+1)
- }
-
- var presentable string
- if data.IsPrintable() == false {
- presentable = fmt.Sprintf("[BINARY] %s", DumpBytesToString(data))
- } else {
- presentable = string(data)
- }
-
- distilled[currentKeyPhrase] = presentable
- }
- }
-
- return distilled
-}
diff --git a/vendor/github.com/dsoprea/go-iptc/testing_common.go b/vendor/github.com/dsoprea/go-iptc/testing_common.go
deleted file mode 100644
index bb5903fa1..000000000
--- a/vendor/github.com/dsoprea/go-iptc/testing_common.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package iptc
-
-import (
- "os"
- "path"
-
- "github.com/dsoprea/go-logging"
-)
-
-var (
- testDataRelFilepath = "iptc.data"
-)
-
-var (
- moduleRootPath = ""
- assetsPath = ""
-)
-
-func GetModuleRootPath() string {
- if moduleRootPath == "" {
- moduleRootPath = os.Getenv("IPTC_MODULE_ROOT_PATH")
- if moduleRootPath != "" {
- return moduleRootPath
- }
-
- currentWd, err := os.Getwd()
- log.PanicIf(err)
-
- currentPath := currentWd
- visited := make([]string, 0)
-
- for {
- tryStampFilepath := path.Join(currentPath, ".MODULE_ROOT")
-
- _, err := os.Stat(tryStampFilepath)
- if err != nil && os.IsNotExist(err) != true {
- log.Panic(err)
- } else if err == nil {
- break
- }
-
- visited = append(visited, tryStampFilepath)
-
- currentPath = path.Dir(currentPath)
- if currentPath == "/" {
- log.Panicf("could not find module-root: %v", visited)
- }
- }
-
- moduleRootPath = currentPath
- }
-
- return moduleRootPath
-}
-
-func GetTestAssetsPath() string {
- if assetsPath == "" {
- moduleRootPath := GetModuleRootPath()
- assetsPath = path.Join(moduleRootPath, "assets")
- }
-
- return assetsPath
-}
-
-func GetTestDataFilepath() string {
- assetsPath := GetTestAssetsPath()
- filepath := path.Join(assetsPath, testDataRelFilepath)
-
- return filepath
-}
diff --git a/vendor/github.com/dsoprea/go-iptc/utility.go b/vendor/github.com/dsoprea/go-iptc/utility.go
deleted file mode 100644
index 5a4a10ad3..000000000
--- a/vendor/github.com/dsoprea/go-iptc/utility.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package iptc
-
-import (
- "bytes"
- "fmt"
-
- "github.com/dsoprea/go-logging"
-)
-
-// DumpBytesToString returns a stringified list of hex-encoded bytes.
-func DumpBytesToString(data []byte) string {
- b := new(bytes.Buffer)
-
- for i, x := range data {
- _, err := b.WriteString(fmt.Sprintf("%02x", x))
- log.PanicIf(err)
-
- if i < len(data)-1 {
- _, err := b.WriteRune(' ')
- log.PanicIf(err)
- }
- }
-
- return b.String()
-}