Documentation
¶
Overview ¶
Package uploadclient contains functions for uploading one file to different types of service.
Index ¶
Examples ¶
Constants ¶
View Source
const (
// ErrAuthorizationFailed used at uploader
ErrAuthorizationFailed
)
Variables ¶
This section is empty.
Functions ¶
func SendAFile ¶
func SendAFile(ctx context.Context, where *ConnectConfig, fullfilename string, jar *cookiejar.Jar, bsha1 []byte) error
SendAFile sends file to a service Upload. jar holds cookies from server http.Responses and use them in http.Requests
Example ¶
package main import ( "context" "crypto/sha1" "io" "net/http/cookiejar" "os" "time" "github.com/zavla/upload/uploadclient" "golang.org/x/net/publicsuffix" ) func main() { // a jar to hold our cookies jar, _ := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) // specify where to connect config := uploadclient.ConnectConfig{ ToURL: "https://127.0.0.1:64000/upload/testuser", Password: "testuser", //PasswordHash: string, // you better to use a hash of a password Username: "testuser", InsecureSkipVerify: true, // skips certificates chain test, don't use 'true' in production, of course use a CAPool! //CApool: *x509.CertPool, // a root CA public certificate that signed a service's certificate } // use context to have a cancel of a long running upload process ctx, callmetofreeresources := context.WithDeadline( context.Background(), time.Now().Add(time.Second*10), ) defer callmetofreeresources() const filename = "./testdata/testfile.txt" // compute sha1 sha1file := sha1get(filename) err := uploadclient.SendAFile(ctx, &config, filename, jar, sha1file) if err != nil { println(err.Error()) return } println("Normal OK:") } func sha1get(filename string) []byte { f, err := os.Open(filename) if err != nil { println(err) return nil } defer f.Close() sha1 := sha1.New() io.Copy(sha1, f) return sha1.Sum(nil) }
Output: Normal OK:
Types ¶
type ConnectConfig ¶
type ConnectConfig struct { // ToURL hold a connection URL to a service ToURL string Password string // TODO(zavla): check the cyrillic passwords // OR you may specify a hash PasswordHash string // one may already store a hash of password Username string // Certs is used in TLSConfig for the client to identify itself. Certs []tls.Certificate // CApool holds your CA certs that this connection will use to verify its peer. CApool *x509.CertPool // for the client to check the servers certificates // InsecureSkipVerify is used in x509.TLSConfig to skip chain verification. // Do not use in production InsecureSkipVerify bool // DontUseFileAttribute allows scheme where there are two services that recieves the same files simultaniously. // But one service is a master. DontUseFileAttribute bool }
ConnectConfig holds connection parameters: URL and username etc..
Click to show internal directories.
Click to hide internal directories.