summaryrefslogtreecommitdiff
path: root/vendor/github.com/dsoprea/go-photoshop-info-format
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-08-12 21:03:24 +0200
committerLibravatar GitHub <noreply@github.com>2021-08-12 21:03:24 +0200
commit98263a7de64269898a2f81207e38943b5c8e8653 (patch)
tree743c90f109a6c5d27832d1dcef2388d939f0f77a /vendor/github.com/dsoprea/go-photoshop-info-format
parentText duplication fix (#137) (diff)
downloadgotosocial-98263a7de64269898a2f81207e38943b5c8e8653.tar.xz
Grand test fixup (#138)
* start fixing up tests * fix up tests + automate with drone * fiddle with linting * messing about with drone.yml * some more fiddling * hmmm * add cache * add vendor directory * verbose * ci updates * update some little things * update sig
Diffstat (limited to 'vendor/github.com/dsoprea/go-photoshop-info-format')
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/.MODULE_ROOT0
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/.travis.yml14
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/LICENSE21
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/README.md8
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/go.mod5
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/go.sum10
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/info.go119
-rw-r--r--vendor/github.com/dsoprea/go-photoshop-info-format/testing_common.go73
8 files changed, 250 insertions, 0 deletions
diff --git a/vendor/github.com/dsoprea/go-photoshop-info-format/.MODULE_ROOT b/vendor/github.com/dsoprea/go-photoshop-info-format/.MODULE_ROOT
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/.MODULE_ROOT
diff --git a/vendor/github.com/dsoprea/go-photoshop-info-format/.travis.yml b/vendor/github.com/dsoprea/go-photoshop-info-format/.travis.yml
new file mode 100644
index 000000000..710e46b39
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/.travis.yml
@@ -0,0 +1,14 @@
+language: go
+go:
+ - master
+ - stable
+ - "1.13"
+ - "1.12"
+env:
+ - GO111MODULE=on
+install:
+ - go get -t ./...
+ - go get github.com/mattn/goveralls
+script:
+ - go test -v ./...
+ - goveralls -v -service=travis-ci
diff --git a/vendor/github.com/dsoprea/go-photoshop-info-format/LICENSE b/vendor/github.com/dsoprea/go-photoshop-info-format/LICENSE
new file mode 100644
index 000000000..d92c04268
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/LICENSE
@@ -0,0 +1,21 @@
+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-photoshop-info-format/README.md b/vendor/github.com/dsoprea/go-photoshop-info-format/README.md
new file mode 100644
index 000000000..abbfca67a
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/README.md
@@ -0,0 +1,8 @@
+[![Build Status](https://travis-ci.org/dsoprea/go-photoshop-info-format.svg?branch=master)](https://travis-ci.org/dsoprea/go-photoshop-info-format)
+[![Coverage Status](https://coveralls.io/repos/github/dsoprea/go-photoshop-info-format/badge.svg?branch=master)](https://coveralls.io/github/dsoprea/go-photoshop-info-format?branch=master)
+[![Go Report Card](https://goreportcard.com/badge/github.com/dsoprea/go-photoshop-info-format)](https://goreportcard.com/report/github.com/dsoprea/go-photoshop-info-format)
+[![GoDoc](https://godoc.org/github.com/dsoprea/go-photoshop-info-format?status.svg)](https://godoc.org/github.com/dsoprea/go-photoshop-info-format)
+
+# Overview
+
+This is a minimal Photoshop format implementation to allow IPTC data to be extracted from a JPEG image. This project primarily services [go-jpeg-image-structure](https://github.com/dsoprea/go-jpeg-image-structure).
diff --git a/vendor/github.com/dsoprea/go-photoshop-info-format/go.mod b/vendor/github.com/dsoprea/go-photoshop-info-format/go.mod
new file mode 100644
index 000000000..02736b552
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/go.mod
@@ -0,0 +1,5 @@
+module github.com/dsoprea/go-photoshop-info-format
+
+go 1.13
+
+require github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d
diff --git a/vendor/github.com/dsoprea/go-photoshop-info-format/go.sum b/vendor/github.com/dsoprea/go-photoshop-info-format/go.sum
new file mode 100644
index 000000000..9d20e12fd
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/go.sum
@@ -0,0 +1,10 @@
+github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d h1:F/7L5wr/fP/SKeO5HuMlNEX9Ipyx2MbH2rV9G4zJRpk=
+github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d/go.mod h1:7I+3Pe2o/YSU88W0hWlm9S22W7XI1JFNJ86U0zPKMf8=
+github.com/go-errors/errors v1.0.2 h1:xMxH9j2fNg/L4hLn/4y3M0IUsn0M6Wbu/Uh9QlOfBh4=
+github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5 h1:WQ8q63x+f/zpC8Ac1s9wLElVoHhm32p6tudrU72n1QA=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
diff --git a/vendor/github.com/dsoprea/go-photoshop-info-format/info.go b/vendor/github.com/dsoprea/go-photoshop-info-format/info.go
new file mode 100644
index 000000000..7f17fa6c0
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/info.go
@@ -0,0 +1,119 @@
+package photoshopinfo
+
+import (
+ "fmt"
+ "io"
+
+ "encoding/binary"
+
+ "github.com/dsoprea/go-logging"
+)
+
+var (
+ defaultByteOrder = binary.BigEndian
+)
+
+// Photoshop30InfoRecord is the data for one parsed Photoshop-info record.
+type Photoshop30InfoRecord struct {
+ // RecordType is the record-type.
+ RecordType string
+
+ // ImageResourceId is the image resource-ID.
+ ImageResourceId uint16
+
+ // Name is the name of the record. It is optional and will be an empty-
+ // string if not present.
+ Name string
+
+ // Data is the raw record data.
+ Data []byte
+}
+
+// String returns a descriptive string.
+func (pir Photoshop30InfoRecord) String() string {
+ return fmt.Sprintf("RECORD-TYPE=[%s] IMAGE-RESOURCE-ID=[0x%04x] NAME=[%s] DATA-SIZE=(%d)", pir.RecordType, pir.ImageResourceId, pir.Name, len(pir.Data))
+}
+
+// ReadPhotoshop30InfoRecord parses a single photoshop-info record.
+func ReadPhotoshop30InfoRecord(r io.Reader) (pir Photoshop30InfoRecord, err error) {
+ defer func() {
+ if state := recover(); state != nil {
+ err = log.Wrap(state.(error))
+ }
+ }()
+
+ recordType := make([]byte, 4)
+ _, err = io.ReadFull(r, recordType)
+ if err != nil {
+ if err == io.EOF {
+ return pir, err
+ }
+
+ log.Panic(err)
+ }
+
+ // TODO(dustin): Move BigEndian to constant/config.
+
+ irId := uint16(0)
+ err = binary.Read(r, defaultByteOrder, &irId)
+ log.PanicIf(err)
+
+ nameSize := uint8(0)
+ err = binary.Read(r, defaultByteOrder, &nameSize)
+ log.PanicIf(err)
+
+ // Add an extra byte if the two length+data size is odd to make the total
+ // bytes read even.
+ doAddPadding := (1+nameSize)%2 == 1
+ if doAddPadding == true {
+ nameSize++
+ }
+
+ name := make([]byte, nameSize)
+ _, err = io.ReadFull(r, name)
+ log.PanicIf(err)
+
+ // If the last byte is padding, truncate it.
+ if doAddPadding == true {
+ name = name[:nameSize-1]
+ }
+
+ dataSize := uint32(0)
+ err = binary.Read(r, defaultByteOrder, &dataSize)
+ log.PanicIf(err)
+
+ data := make([]byte, dataSize+dataSize%2)
+ _, err = io.ReadFull(r, data)
+ log.PanicIf(err)
+
+ data = data[:dataSize]
+
+ pir = Photoshop30InfoRecord{
+ RecordType: string(recordType),
+ ImageResourceId: irId,
+ Name: string(name),
+ Data: data,
+ }
+
+ return pir, nil
+}
+
+// ReadPhotoshop30Info parses a sequence of photoship-info records from the stream.
+func ReadPhotoshop30Info(r io.Reader) (pirIndex map[uint16]Photoshop30InfoRecord, err error) {
+ pirIndex = make(map[uint16]Photoshop30InfoRecord)
+
+ for {
+ pir, err := ReadPhotoshop30InfoRecord(r)
+ if err != nil {
+ if err == io.EOF {
+ break
+ }
+
+ log.Panic(err)
+ }
+
+ pirIndex[pir.ImageResourceId] = pir
+ }
+
+ return pirIndex, nil
+}
diff --git a/vendor/github.com/dsoprea/go-photoshop-info-format/testing_common.go b/vendor/github.com/dsoprea/go-photoshop-info-format/testing_common.go
new file mode 100644
index 000000000..681b117ec
--- /dev/null
+++ b/vendor/github.com/dsoprea/go-photoshop-info-format/testing_common.go
@@ -0,0 +1,73 @@
+package photoshopinfo
+
+import (
+ "os"
+ "path"
+
+ "github.com/dsoprea/go-logging"
+)
+
+var (
+ testDataRelFilepath = "photoshop.data"
+)
+
+var (
+ moduleRootPath = ""
+ assetsPath = ""
+)
+
+// GetModuleRootPath returns the root-path of the module.
+func GetModuleRootPath() string {
+ if moduleRootPath == "" {
+ moduleRootPath = os.Getenv("PHOTOSHOPINFO_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
+}
+
+// GetTestAssetsPath returns the path of the test-assets.
+func GetTestAssetsPath() string {
+ if assetsPath == "" {
+ moduleRootPath := GetModuleRootPath()
+ assetsPath = path.Join(moduleRootPath, "assets")
+ }
+
+ return assetsPath
+}
+
+// GetTestDataFilepath returns the file-path of the common test-data.
+func GetTestDataFilepath() string {
+ assetsPath := GetTestAssetsPath()
+ filepath := path.Join(assetsPath, testDataRelFilepath)
+
+ return filepath
+}