Skip to content

beshrkayali/webdavclient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebDAV Client for Nim

This is an implementation for some of the basic operations to communicate with a WebDAV server using Nim.

Example usage:

import webdavclient, asyncdispatch, tables, options

# Only Basic auth is currently supported. Make sure you're
# connecting over ssl

let wd = newAsyncWebDAV(
  address="https://dav.example.com",
  username="username",
  password="password"
)

# Get props (propname request)
let possible_props = waitFor wd.props(
  "/",
  depth=ZERO
)

for url, props in possible_props["/"]:
  echo(url, props)

# List files
# Default webdav properties don't require a namespace
let t = waitFor wd.ls(
  "/",
  props=some(@[
    "getcontentlength",
    "getlastmodified",
	"creationdate",
	"getcontenttype",
	"nc:has-preview",
	"oc:favorite",
  ]),
  namespaces=some(@[
    ("oc", "http://owncloud.org/ns"),
    ("nc", "http://nextcloud.org/ns")
  ]),
  depth=ONE
)

for url, prop in t.pairs:
  echo(url)
  for pname, pval in prop.pairs:
    echo(" - " , pname, ": ", pval)
  echo("---")

# Downlaod a file
waitFor wd.download(path="files/example.md", destination="/home/me/example.md")

# Upload a file
waitFor wd.upload(filepath="files/example.md", destination="/home/me/example.md")

# Delete a file
waitFor wd.rm("files/example.md")

# Create a collection (directory)
waitFor wd.mkdir("files/new/")

# Move a file
waitFor wd.mv(path="files/example.md", destination="files/new/example.md", overwrite=true)

# Copy a file
waitFor wd.cp(path="files/new/example.md", destination="files/example.md", overwrite=true)

About

WebDAV Client for Nim

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •