2016-07-07 18:54:16 -07:00
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
2016-10-17 14:07:05 -07:00
// This software (Documize Community Edition) is licensed under
2016-07-07 18:54:16 -07:00
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
2016-10-17 14:07:05 -07:00
// by contacting <sales@documize.com>.
2016-07-07 18:54:16 -07:00
//
// https://documize.com
package apidocumizecom
import (
"bytes"
2017-06-06 19:00:35 -04:00
"crypto/tls"
2016-07-07 18:54:16 -07:00
"encoding/json"
"fmt"
"net/http"
"path/filepath"
2016-07-20 15:58:37 +01:00
api "github.com/documize/community/core/convapi"
2016-07-07 18:54:16 -07:00
"golang.org/x/net/context"
)
// Msword type provides a peg to hang the Convert method on.
type Msword struct { }
2017-05-17 07:22:18 +01:00
// Convert converts a file into the Documize format.
2016-07-07 18:54:16 -07:00
func ( file * Msword ) Convert ( r api . DocumentConversionRequest , reply * api . DocumentConversionResponse ) error {
byts , err := json . Marshal ( r )
if err != nil {
return err
}
base := filepath . Base ( r . Filename )
fmt . Println ( "Starting conversion of document: " , base )
2017-06-06 19:00:35 -04:00
var transport = & http . Transport {
TLSClientConfig : & tls . Config {
InsecureSkipVerify : true , // TODO should be glick.InsecureSkipVerifyTLS (from -insecure flag) but get error: x509: certificate signed by unknown authority
} }
2016-07-07 18:54:16 -07:00
2017-06-06 19:00:35 -04:00
client := & http . Client { Transport : transport }
2016-10-17 14:07:05 -07:00
2017-06-06 19:00:35 -04:00
resp , err := client . Post ( r . ServiceEndpoint + "/api/word" , "application/json" , bytes . NewReader ( byts ) )
2016-07-07 18:54:16 -07:00
if err != nil {
return err
}
defer func ( ) {
if e := resp . Body . Close ( ) ; e != nil {
fmt . Println ( "resp.Body.Close error: " + e . Error ( ) )
}
} ( )
fmt . Println ( "Finished converting document: " , base )
dec := json . NewDecoder ( resp . Body )
err = dec . Decode ( reply )
return err
}
// MSwordConvert provides the standard interface for conversion of a MS-Word document.
// All the function does is return a pointer to api.DocumentConversionResponse with
// PagesHTML set to the given (*api.DocumentConversionRequest).Filedata converted by the Documize server.
func MSwordConvert ( ctx context . Context , in interface { } ) ( interface { } , error ) {
var msw Msword
dcr := in . ( * api . DocumentConversionRequest )
rep := new ( api . DocumentConversionResponse )
err := msw . Convert ( * dcr , rep )
return rep , err
}