package jsonlog

import (
	"encoding/json"
	"fmt"
	"io"
	"time"

	log "github.com/Sirupsen/logrus"
)

type JSONLog struct {
	Log     string    `json:"log,omitempty"`
	Stream  string    `json:"stream,omitempty"`
	Created time.Time `json:"time"`
}

func (jl *JSONLog) Format(format string) (string, error) {
	if format == "" {
		return jl.Log, nil
	}
	if format == "json" {
		m, err := json.Marshal(jl)
		return string(m), err
	}
	return fmt.Sprintf("[%s] %s", jl.Created.Format(format), jl.Log), nil
}

func (jl *JSONLog) Reset() {
	jl.Log = ""
	jl.Stream = ""
	jl.Created = time.Time{}
}

func WriteLog(src io.Reader, dst io.Writer, format string) error {
	dec := json.NewDecoder(src)
	l := &JSONLog{}
	for {
		if err := dec.Decode(l); err == io.EOF {
			return nil
		} else if err != nil {
			log.Printf("Error streaming logs: %s", err)
			return err
		}
		line, err := l.Format(format)
		if err != nil {
			return err
		}
		if _, err := io.WriteString(dst, line); err != nil {
			return err
		}
		l.Reset()
	}
}
