checkpoint(untested): should now be able to attach media to statuses from file
This commit is contained in:
parent
70d543132b
commit
348d7ee00d
2 changed files with 78 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
||||||
package executor
|
package executor
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
||||||
|
@ -67,6 +68,71 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
sensitive bool
|
sensitive bool
|
||||||
)
|
)
|
||||||
|
|
||||||
|
attachmentIDs := []string(c.attachmentIDs)
|
||||||
|
|
||||||
|
if !c.mediaFiles.Empty() {
|
||||||
|
descriptionsExists := false
|
||||||
|
focusValuesExists := false
|
||||||
|
expectedLength := len(c.mediaFiles)
|
||||||
|
mediaDescriptions := make([]string, expectedLength)
|
||||||
|
|
||||||
|
if !c.mediaDescriptions.Empty() {
|
||||||
|
descriptionsExists = true
|
||||||
|
|
||||||
|
if !c.mediaDescriptions.ExpectedLength(expectedLength) {
|
||||||
|
return errors.New("the number of media descriptions does not match the number of media files")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !c.mediaFocusValues.Empty() {
|
||||||
|
focusValuesExists = true
|
||||||
|
|
||||||
|
if !c.mediaFocusValues.ExpectedLength(expectedLength) {
|
||||||
|
return errors.New("the number of media focus values does not match the number of media files")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if descriptionsExists {
|
||||||
|
for ind := 0; ind < expectedLength; ind++ {
|
||||||
|
content, err := utilities.ReadContents(c.mediaDescriptions[ind])
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("unable to read the contents from %s: %w", c.mediaDescriptions[ind], err)
|
||||||
|
}
|
||||||
|
|
||||||
|
mediaDescriptions[ind] = content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ind := 0; ind < expectedLength; ind++ {
|
||||||
|
var (
|
||||||
|
mediaFile string
|
||||||
|
description string
|
||||||
|
focus string
|
||||||
|
)
|
||||||
|
|
||||||
|
mediaFile = c.mediaFiles[ind]
|
||||||
|
|
||||||
|
if descriptionsExists {
|
||||||
|
description = mediaDescriptions[ind]
|
||||||
|
}
|
||||||
|
|
||||||
|
if focusValuesExists {
|
||||||
|
focus = c.mediaFocusValues[ind]
|
||||||
|
}
|
||||||
|
|
||||||
|
attachment, err := gtsClient.CreateMediaAttachment(
|
||||||
|
mediaFile,
|
||||||
|
description,
|
||||||
|
focus,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("unable to create the media attachment for %s: %w", mediaFile, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
attachmentIDs = append(attachmentIDs, attachment.ID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case c.content != "":
|
case c.content != "":
|
||||||
content = c.content
|
content = c.content
|
||||||
|
@ -76,7 +142,7 @@ func (c *CreateExecutor) createStatus(gtsClient *client.Client) error {
|
||||||
return fmt.Errorf("unable to get the status contents from %q: %w", c.fromFile, err)
|
return fmt.Errorf("unable to get the status contents from %q: %w", c.fromFile, err)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if c.attachmentIDs.Empty() {
|
if len(attachmentIDs) == 0 {
|
||||||
// TODO: revisit this error type
|
// TODO: revisit this error type
|
||||||
return EmptyContentError{
|
return EmptyContentError{
|
||||||
ResourceType: resourceStatus,
|
ResourceType: resourceStatus,
|
||||||
|
|
|
@ -5,8 +5,19 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const filePrefix string = "file@"
|
||||||
|
|
||||||
|
func ReadContents(text string) (string, error) {
|
||||||
|
if !strings.HasPrefix(text, filePrefix) {
|
||||||
|
return text, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return ReadFile(strings.TrimPrefix(text, filePrefix))
|
||||||
|
}
|
||||||
|
|
||||||
func ReadFile(path string) (string, error) {
|
func ReadFile(path string) (string, error) {
|
||||||
file, err := os.Open(path)
|
file, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue