now using latest version of unoconv, allowing to specify paper size and orientation + updating go client (#24)

This commit is contained in:
Julien Neuhart
2018-12-12 16:16:35 +01:00
committed by GitHub
parent 1ef21c6ed6
commit c6f6a87499
19 changed files with 466 additions and 308 deletions

View File

@@ -3,29 +3,40 @@ package gotenberg
import (
"fmt"
"path/filepath"
"strconv"
)
// OfficeRequest facilitates Office documents
// conversion with the Gotenberg API.
type OfficeRequest struct {
FilePaths []string
Options *OfficeOptions
filePaths []string
values map[string]string
}
// OfficeOptions gathers all options
// for Office documents conversion
// with the Gotenberg API.
type OfficeOptions struct {
WebHookURL string
}
func (office *OfficeRequest) validate() error {
for _, fpath := range office.FilePaths {
// NewOfficeRequest create OfficeRequest.
func NewOfficeRequest(fpaths []string) (*OfficeRequest, error) {
for _, fpath := range fpaths {
if !fileExists(fpath) {
return fmt.Errorf("%s: office file does not exist", fpath)
return nil, fmt.Errorf("%s: file does not exist", fpath)
}
}
return nil
return &OfficeRequest{filePaths: fpaths, values: make(map[string]string)}, nil
}
// SetWebhookURL sets webhookURL form field.
func (office *OfficeRequest) SetWebhookURL(webhookURL string) {
office.values[webhookURL] = webhookURL
}
// SetPaperSize sets paperWidth and paperHeight form fields.
func (office *OfficeRequest) SetPaperSize(size [2]float64) {
office.values[paperWidth] = fmt.Sprintf("%f", size[0])
office.values[paperHeight] = fmt.Sprintf("%f", size[1])
}
// SetLandscape sets landscape form field.
func (office *OfficeRequest) SetLandscape(isLandscape bool) {
office.values[landscape] = strconv.FormatBool(isLandscape)
}
func (office *OfficeRequest) getPostURL() string {
@@ -33,17 +44,12 @@ func (office *OfficeRequest) getPostURL() string {
}
func (office *OfficeRequest) getFormValues() map[string]string {
if office.Options == nil {
office.Options = &OfficeOptions{}
}
values := make(map[string]string)
values[webhookURL] = office.Options.WebHookURL
return values
return office.values
}
func (office *OfficeRequest) getFormFiles() map[string]string {
files := make(map[string]string)
for _, fpath := range office.FilePaths {
for _, fpath := range office.filePaths {
files[filepath.Base(fpath)] = fpath
}
return files
@@ -52,4 +58,5 @@ func (office *OfficeRequest) getFormFiles() map[string]string {
// Compile-time checks to ensure type implements desired interfaces.
var (
_ = Request(new(OfficeRequest))
_ = UnoconvRequest(new(OfficeRequest))
)