conf

package
v0.0.0-...-0fe5c75 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2019 License: AGPL-3.0 Imports: 7 Imported by: 0

README

creamy-transcode/conf

Parse human-readable configuration files into machine-readable objects.

Usage

package main

import (
	"encoding/json"
	"fmt"
	"log"
	"os"

	"github.com/AlbinoDrought/creamy-transcode/conf"
)

func main() {
	someResourceID := 5678
	s3Key := "some-s3-key"
	s3Secret := "some-s3-secret"
	s3Bucket := "some-s3-bucket"

	confText := fmt.Sprintf(`
	# sample valid creamy-transcode conf file
	var resource_id = %+v

	var s3_key = %+v
	var s3_secret = %+v
	var s3_bucket = %+v

	var base_s3 = s3://$s3_key:$s3_secret@$s3_bucket/videos/$resource_id/transcode

	set source = https://creamy-videos.internal.albinodrought.com/static/videos/24/video
	set webhook = https://creamy-videos.internal.albinodrought.com/api/video/$resource_id/transcoded, metadata=true

	-> webm = $base_s3/video.webm
	-> mp4 = $base_s3/video.mp4
	-> mp4:720p = $base_s3/video_720p.mp4, if=$source_width >= 1280

	# thumbnails
	-> jpg:300x = $base_s3/thumbnail_small_#num#.jpg, number=6
	-> jpg:160x = $base_s3/sprite.jpg, every=5, sprite=yes, vtt=yes
	`, someResourceID, s3Key, s3Secret, s3Bucket)

	parsed, err := conf.ParseString(confText)
	if err != nil {
		log.Fatal(err)
	}

	jsonForHumans, _ := json.MarshalIndent(parsed, "", "  ")
	log.Printf("%+v\n", string(jsonForHumans))

	// alternatively, to parse directly from a file

	// dump generated conf to disk for example
	file, err := os.Create("streamable_video_webvtt.conf")
	if err != nil {
		log.Fatal(err)
	}

	file.WriteString(confText)
	file.Close()

	// read conf from disk
	file, err = os.Open("streamable_video_webvtt.conf")
	defer file.Close()

	parsed, err = conf.Parse(file)
	if err != nil {
		log.Fatal(err)
	}

	jsonForHumans, _ = json.MarshalIndent(parsed, "", "  ")
	log.Printf("%+v\n", string(jsonForHumans))
}

// output:
/*
{
  "SourceURL": "https://creamy-videos.internal.albinodrought.com/static/videos/24/video",
  "WebhookURL": "https://creamy-videos.internal.albinodrought.com/api/video/5678/transcoded, metadata=true",
  "Outputs": {
    "jpg:160x": "s3://some-s3-key:some-s3-secret@some-s3-bucket/videos/5678/transcode/sprite.jpg, every=5, sprite=yes, vtt=yes",
    "jpg:300x": "s3://some-s3-key:some-s3-secret@some-s3-bucket/videos/5678/transcode/thumbnail_small_#num#.jpg, number=6",
    "mp4": "s3://some-s3-key:some-s3-secret@some-s3-bucket/videos/5678/transcode/video.mp4",
    "mp4:720p": "s3://some-s3-key:some-s3-secret@some-s3-bucket/videos/5678/transcode/video_720p.mp4, if=$source_width >= 1280",
    "webm": "s3://some-s3-key:some-s3-secret@some-s3-bucket/videos/5678/transcode/video.webm"
  }
}
*/

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ParsedConf

type ParsedConf struct {
	SourceURL  string
	WebhookURL string
	Outputs    map[string]ParsedOutput
}

func Parse

func Parse(reader io.Reader) (ParsedConf, error)

Parse a configuration file stream into a configuration file

func ParseString

func ParseString(input string) (ParsedConf, error)

ParseString parses a configuration file string into a configuration file

type ParsedOutput

type ParsedOutput struct {
	URL     string
	Options map[string]string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL