All Projects → studio-b12 → Gowebdav

studio-b12 / Gowebdav

Licence: bsd-3-clause
A golang WebDAV client library and command line tool.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Gowebdav

Bt
BitTorrent library and client with DHT, magnet links, encryption and more
Stars: ✭ 2,011 (+1973.2%)
Mutual labels:  cli, library, client
Adrestia
APIs & SDK for interacting with Cardano.
Stars: ✭ 56 (-42.27%)
Mutual labels:  library, client
Graphql Zeus
GraphQL client and GraphQL code generator with GraphQL autocomplete library generation ⚡⚡⚡ for browser,nodejs and react native
Stars: ✭ 1,043 (+975.26%)
Mutual labels:  cli, client
Kit
Tools for developing, documenting, and testing React component libraries
Stars: ✭ 1,201 (+1138.14%)
Mutual labels:  cli, library
Bashmultitool
A library for bash shell program containing useful functions. Can be imported into scripts to create colourful and functional scripts and TUIs.
Stars: ✭ 27 (-72.16%)
Mutual labels:  cli, library
Mod Pbxproj
A python module to manipulate XCode projects
Stars: ✭ 959 (+888.66%)
Mutual labels:  cli, library
Instascrape
🚀 A fast and lightweight utility and Python library for downloading posts, stories, and highlights from Instagram.
Stars: ✭ 76 (-21.65%)
Mutual labels:  cli, library
Ws50 Sync
ws50-sync is a python based program which pulls air quality data from your Withings account and stores it directly in a Domoticz DB.
Stars: ✭ 8 (-91.75%)
Mutual labels:  cli, client
Crowdin Cli
A command-line client for the Crowdin API
Stars: ✭ 89 (-8.25%)
Mutual labels:  cli, client
Spider
A small dart library to generate Assets dart code from assets folder.
Stars: ✭ 90 (-7.22%)
Mutual labels:  cli, library
Angular Librarian
An Angular 2+ scaffolding setup for creating libraries
Stars: ✭ 92 (-5.15%)
Mutual labels:  cli, library
Vdirsyncer
📇 Synchronize calendars and contacts.
Stars: ✭ 872 (+798.97%)
Mutual labels:  cli, webdav
Tabulate
Table Maker for Modern C++
Stars: ✭ 862 (+788.66%)
Mutual labels:  cli, library
Mythra
Music retrieval CLI and API using rust
Stars: ✭ 37 (-61.86%)
Mutual labels:  cli, library
Gitter Api
[production-ready] Gitter API implementation for php 7.0+ allowing sync, async and streaming access.
Stars: ✭ 11 (-88.66%)
Mutual labels:  library, client
Webdav Fs
Node fs wrapper for WebDAV
Stars: ✭ 72 (-25.77%)
Mutual labels:  webdav, client
Matrix Commander
simple but convenient CLI-based Matrix client app for sending and receiving
Stars: ✭ 90 (-7.22%)
Mutual labels:  cli, client
Vlany
Linux LD_PRELOAD rootkit (x86 and x86_64 architectures)
Stars: ✭ 804 (+728.87%)
Mutual labels:  cli, library
M2x Python
AT&T M2X Python Library
Stars: ✭ 25 (-74.23%)
Mutual labels:  library, client
Graphql client
GraphQL Client.
Stars: ✭ 78 (-19.59%)
Mutual labels:  library, client

GoWebDAV

Build Status GoDoc Go Report Card

A golang WebDAV client library.

Main features

gowebdav library allows to perform following actions on the remote WebDAV server:

Usage

First of all you should create Client instance using NewClient() function:

root := "https://webdav.mydomain.me"
user := "user"
password := "password"

c := gowebdav.NewClient(root, user, password)

After you can use this Client to perform actions, described below.

NOTICE: we will not check errors in examples, to focus you on the gowebdav library's code, but you should do it in your code!

Create path on a WebDAV server

err := c.Mkdir("folder", 0644)

In case you want to create several folders you can use c.MkdirAll():

err := c.MkdirAll("folder/subfolder/subfolder2", 0644)

Get files list

files, _ := c.ReadDir("folder/subfolder")
for _, file := range files {
    //notice that [file] has os.FileInfo type
    fmt.Println(file.Name())
}

Download file to byte array

webdavFilePath := "folder/subfolder/file.txt"
localFilePath := "/tmp/webdav/file.txt"

bytes, _ := c.Read(webdavFilePath)
ioutil.WriteFile(localFilePath, bytes, 0644)

Download file via reader

Also you can use c.ReadStream() method:

webdavFilePath := "folder/subfolder/file.txt"
localFilePath := "/tmp/webdav/file.txt"

reader, _ := c.ReadStream(webdavFilePath)

file, _ := os.Create(localFilePath)
defer file.Close()

io.Copy(file, reader)

Upload file from byte array

webdavFilePath := "folder/subfolder/file.txt"
localFilePath := "/tmp/webdav/file.txt"

bytes, _ := ioutil.ReadFile(localFilePath)

c.Write(webdavFilePath, bytes, 0644)

Upload file via writer

webdavFilePath := "folder/subfolder/file.txt"
localFilePath := "/tmp/webdav/file.txt"

file, _ := os.Open(localFilePath)
defer file.Close()

c.WriteStream(webdavFilePath, file, 0644)

Get information about specified file/folder

webdavFilePath := "folder/subfolder/file.txt"

info := c.Stat(webdavFilePath)
//notice that [info] has os.FileInfo type
fmt.Println(info)

Move file to another location

oldPath := "folder/subfolder/file.txt"
newPath := "folder/subfolder/moved.txt"
isOverwrite := true

c.Rename(oldPath, newPath, isOverwrite)

Copy file to another location

oldPath := "folder/subfolder/file.txt"
newPath := "folder/subfolder/file-copy.txt"
isOverwrite := true

c.Copy(oldPath, newPath, isOverwrite)

Delete file

webdavFilePath := "folder/subfolder/file.txt"

c.Remove(webdavFilePath)

Links

More details about WebDAV server you can read from following resources:

NOTICE: RFC 2518 is obsoleted by RFC 4918 in June 2007

Contributing

All contributing are welcome. If you have any suggestions or find some bug - please create an Issue to let us make this project better. We appreciate your help!

License

This library is distributed under the BSD 3-Clause license found in the LICENSE file.

API

import "github.com/studio-b12/gowebdav"

Overview

Package gowebdav is a WebDAV client library with a command line tool included.

Index

Examples
Package files

basicAuth.go client.go digestAuth.go doc.go file.go netrc.go requests.go utils.go

func FixSlash

func FixSlash(s string) string

FixSlash appends a trailing / to our string

func FixSlashes

func FixSlashes(s string) string

FixSlashes appends and prepends a / if they are missing

func Join

func Join(path0 string, path1 string) string

Join joins two paths

func PathEscape

func PathEscape(path string) string

PathEscape escapes all segemnts of a given path

func ReadConfig

func ReadConfig(uri, netrc string) (string, string)

ReadConfig reads login and password configuration from ~/.netrc machine foo.com login username password 123456

func String

func String(r io.Reader) string

String pulls a string out of our io.Reader

type Authenticator

type Authenticator interface {
    Type() string
    User() string
    Pass() string
    Authorize(*http.Request, string, string)
}

Authenticator stub

type BasicAuth

type BasicAuth struct {
    // contains filtered or unexported fields
}

BasicAuth structure holds our credentials

func (*BasicAuth) Authorize

func (b *BasicAuth) Authorize(req *http.Request, method string, path string)

Authorize the current request

func (*BasicAuth) Pass

func (b *BasicAuth) Pass() string

Pass holds the BasicAuth password

func (*BasicAuth) Type

func (b *BasicAuth) Type() string

Type identifies the BasicAuthenticator

func (*BasicAuth) User

func (b *BasicAuth) User() string

User holds the BasicAuth username

type Client

type Client struct {
    // contains filtered or unexported fields
}

Client defines our structure

func NewClient

func NewClient(uri, user, pw string) *Client

NewClient creates a new instance of client

func (*Client) Connect

func (c *Client) Connect() error

Connect connects to our dav server

func (*Client) Copy

func (c *Client) Copy(oldpath, newpath string, overwrite bool) error

Copy copies a file from A to B

func (*Client) Mkdir

func (c *Client) Mkdir(path string, _ os.FileMode) error

Mkdir makes a directory

func (*Client) MkdirAll

func (c *Client) MkdirAll(path string, _ os.FileMode) error

MkdirAll like mkdir -p, but for webdav

func (*Client) Read

func (c *Client) Read(path string) ([]byte, error)

Read reads the contents of a remote file

func (*Client) ReadDir

func (c *Client) ReadDir(path string) ([]os.FileInfo, error)

ReadDir reads the contents of a remote directory

func (*Client) ReadStream

func (c *Client) ReadStream(path string) (io.ReadCloser, error)

ReadStream reads the stream for a given path

func (*Client) Remove

func (c *Client) Remove(path string) error

Remove removes a remote file

func (*Client) RemoveAll

func (c *Client) RemoveAll(path string) error

RemoveAll removes remote files

func (*Client) Rename

func (c *Client) Rename(oldpath, newpath string, overwrite bool) error

Rename moves a file from A to B

func (*Client) SetHeader

func (c *Client) SetHeader(key, value string)

SetHeader lets us set arbitrary headers for a given client

func (*Client) SetTimeout

func (c *Client) SetTimeout(timeout time.Duration)

SetTimeout exposes the ability to set a time limit for requests

func (*Client) SetTransport

func (c *Client) SetTransport(transport http.RoundTripper)

SetTransport exposes the ability to define custom transports

func (*Client) Stat

func (c *Client) Stat(path string) (os.FileInfo, error)

Stat returns the file stats for a specified path

func (*Client) Write

func (c *Client) Write(path string, data []byte, _ os.FileMode) error

Write writes data to a given path

func (*Client) WriteStream

func (c *Client) WriteStream(path string, stream io.Reader, _ os.FileMode) error

WriteStream writes a stream

type DigestAuth

type DigestAuth struct {
    // contains filtered or unexported fields
}

DigestAuth structure holds our credentials

func (*DigestAuth) Authorize

func (d *DigestAuth) Authorize(req *http.Request, method string, path string)

Authorize the current request

func (*DigestAuth) Pass

func (d *DigestAuth) Pass() string

Pass holds the DigestAuth password

func (*DigestAuth) Type

func (d *DigestAuth) Type() string

Type identifies the DigestAuthenticator

func (*DigestAuth) User

func (d *DigestAuth) User() string

User holds the DigestAuth username

type File

type File struct {
    // contains filtered or unexported fields
}

File is our structure for a given file

func (File) ContentType

func (f File) ContentType() string

ContentType returns the content type of a file

func (File) ETag

func (f File) ETag() string

ETag returns the ETag of a file

func (File) IsDir

func (f File) IsDir() bool

IsDir let us see if a given file is a directory or not

func (File) ModTime

func (f File) ModTime() time.Time

ModTime returns the modified time of a file

func (File) Mode

func (f File) Mode() os.FileMode

Mode will return the mode of a given file

func (File) Name

func (f File) Name() string

Name returns the name of a file

func (File) Path

func (f File) Path() string

Path returns the full path of a file

func (File) Size

func (f File) Size() int64

Size returns the size of a file

func (File) String

func (f File) String() string

String lets us see file information

func (File) Sys

func (f File) Sys() interface{}

Sys ????

type NoAuth

type NoAuth struct {
    // contains filtered or unexported fields
}

NoAuth structure holds our credentials

func (*NoAuth) Authorize

func (n *NoAuth) Authorize(req *http.Request, method string, path string)

Authorize the current request

func (*NoAuth) Pass

func (n *NoAuth) Pass() string

Pass returns the current password

func (*NoAuth) Type

func (n *NoAuth) Type() string

Type identifies the authenticator

func (*NoAuth) User

func (n *NoAuth) User() string

User returns the current user


Generated by godoc2md

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].