btsync_api

package
v0.0.0-...-7b8fe26 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 14, 2014 License: MIT, MIT Imports: 11 Imported by: 0

README

BTSync API

Golang client for the Bittorrent Sync API.

Example

package main

import (
  btsync "btsync-api"
  "fmt"
  "log"
)

func main() {
  api := btsync.New("login", "password", 8080, true)

  folders, err := api.GetFolders()
  if err != nil {
    log.Fatalf("Error! %s", err)
  }

  for _, folder := range *folders {
    fmt.Printf("Sync folder %s has %d files\n", folder.Dir, folder.Files)
  }

  speed, _ := api.GetSpeed()
  fmt.Printf("Speed: upload=%d, download=%d", speed.Upload, speed.Download)
}

Documentation

http://godoc.org/github.com/vole/btsync-api

Documentation

Overview

Provides a client for interacting with the Bittorrent Sync API.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BTSyncAPI

type BTSyncAPI struct {
	Username string
	Password string
	Port     int
	Endpoint string
	Debug    bool
	Logger   *log.Logger
}

Client used to connect to the Bittorrent Sync API.

func New

func New(login string, password string, port int, debug bool) *BTSyncAPI

Instantiates a new BTSyncAPI.

func (*BTSyncAPI) AddFolder

func (api *BTSyncAPI) AddFolder(folder string) (*Response, error)

Add a new folder to Sync.

func (*BTSyncAPI) AddFolderWithSecret

func (api *BTSyncAPI) AddFolderWithSecret(folder string, secret string) (response *Response, err error)

Add a folder to Sync with the given secret.

func (*BTSyncAPI) GetFiles

func (api *BTSyncAPI) GetFiles(secret string) (*GetFilesResponse, error)

Get a list of all files for a folder.

func (*BTSyncAPI) GetFilesForPath

func (api *BTSyncAPI) GetFilesForPath(secret string, path string) (response *GetFilesResponse, err error)

Get a list of all files for the given secret under the given path.

func (*BTSyncAPI) GetFolder

func (api *BTSyncAPI) GetFolder(secret string) (response *GetFoldersResponse, err error)

Get information about a folder.

func (*BTSyncAPI) GetFolderHosts

func (api *BTSyncAPI) GetFolderHosts(secret string) (response *GetFolderHostsResponse, err error)

Get a list of hosts for a folder.

func (*BTSyncAPI) GetFolderPeers

func (api *BTSyncAPI) GetFolderPeers(secret string) (response *GetFolderPeersResponse, err error)

Get a list of all peers for a folder.

func (*BTSyncAPI) GetFolderPrefs

func (api *BTSyncAPI) GetFolderPrefs(secret string) (response *GetFolderPrefsResponse, err error)

Get preferences for a folder.

func (*BTSyncAPI) GetFolders

func (api *BTSyncAPI) GetFolders() (*GetFoldersResponse, error)

Get a list of all folders.

func (*BTSyncAPI) GetOS

func (api *BTSyncAPI) GetOS() (response *GetOSResponse, err error)

Get name of OS.

func (*BTSyncAPI) GetPreferences

func (api *BTSyncAPI) GetPreferences() (response *GetPreferencesResponse, err error)

Get Sync preferences.

func (*BTSyncAPI) GetSecrets

func (api *BTSyncAPI) GetSecrets(encryption bool) (response *GetSecretsResponse, err error)

Generate new secrets.

func (*BTSyncAPI) GetSecretsForSecret

func (api *BTSyncAPI) GetSecretsForSecret(secret string) (response *GetSecretsResponse, err error)

Get the secrets for a folder.

func (*BTSyncAPI) GetSpeed

func (api *BTSyncAPI) GetSpeed() (response *GetSpeedResponse, err error)

Get current upload and download speed.

func (*BTSyncAPI) GetVersion

func (api *BTSyncAPI) GetVersion() (response *GetVersionResponse, err error)

Get Bittorrent Sync version.

func (*BTSyncAPI) RemoveFolder

func (api *BTSyncAPI) RemoveFolder(secret string) (response *Response, err error)

Remove a folder from Sync using its secret.

func (*BTSyncAPI) Request

func (api *BTSyncAPI) Request(method string, args map[string]string) *Request

Make a request to the API. Requires the method name and a map of query string parameters.

func (*BTSyncAPI) SetFilePrefs

func (api *BTSyncAPI) SetFilePrefs(secret string, path string, download int) (response *SetFilePrefsResponse, err error)

Set preferences for a file.

func (*BTSyncAPI) SetFolderHosts

func (api *BTSyncAPI) SetFolderHosts(secret string, hosts []string) (response *Response, err error)

Set the list of hosts for a folder.

func (*BTSyncAPI) SetFolderPrefs

func (api *BTSyncAPI) SetFolderPrefs(secret string, prefs *FolderPreferences) (response *SetFolderPrefsResponse, err error)

Set preferences for a folder.

func (*BTSyncAPI) SetPreferences

func (api *BTSyncAPI) SetPreferences(prefs Preferences) (response *Response, err error)

Set Sync preferences.

type File

type File struct {
	HavePieces  int    `json:"have_pieces"`
	Name        string `json:"name"`
	Size        int64  `json:"size"`
	State       string `json:"state"`
	TotalPieces string `json:"total_pieces"`
	Type        string `json:"type"`
	Download    int    `json:"download"`
}

type Folder

type Folder struct {
	Dir      string `json:"dir"`
	Secret   string `json:"secret"`
	Size     int64  `json:"size"`
	Type     string `json:"type"`
	Files    int64  `json:"files"`
	Error    int    `json:"error"`
	Indexing int    `json:"indexing"`
}

type FolderPreferences

type FolderPreferences struct {
	SearchLAN      int `json:"search_lan"`
	SelectiveSync  int `json:"selective_sync"`
	UseDHT         int `json:"use_dht"`
	UseHosts       int `json:"use_hosts"`
	UseRelayServer int `json:"use_relay_server"`
	UseSyncTrash   int `json:"use_sync_trash"`
	UseTracker     int `json:"use_tracker"`
}

type GetFilesResponse

type GetFilesResponse []File

type GetFolderHostsResponse

type GetFolderHostsResponse []string

type GetFolderPeersResponse

type GetFolderPeersResponse []Peer

type GetFolderPrefsResponse

type GetFolderPrefsResponse FolderPreferences

type GetFoldersResponse

type GetFoldersResponse []Folder

type GetOSResponse

type GetOSResponse struct {
	Name string `json:"os"`
}

type GetPreferencesResponse

type GetPreferencesResponse Preferences

type GetSecretsResponse

type GetSecretsResponse struct {
	ReadOnly   string `json:"read_only"`
	ReadWrite  string `json:"read_write"`
	Encryption string `json:"encryption"`
}

type GetSpeedResponse

type GetSpeedResponse struct {
	Download int64 `json:"download"`
	Upload   int64 `json:"upload"`
}

type GetVersionResponse

type GetVersionResponse struct {
	Version string `json:"version"`
}

type Peer

type Peer struct {
	Id         string `json:"id"`
	Connection string `json:"connection"`
	Name       string `json:"name"`
	Synced     int    `json:"synced"`
	Download   int64  `json:"download"`
	Upload     int64  `json:"upload"`
}

type Preferences

type Preferences struct {
	DeviceName                 string `json:"device_name"`
	DiskLowPriority            bool   `json:"disk_low_priority"`
	DownloadLimit              int    `json:"download_limit"`
	FolderRescanInterval       int    `json:"folder_rescan_interval"`
	LANEncryptData             bool   `json:"lan_encrypt_data"`
	LANUseTCP                  bool   `json:"lan_use_tcp"`
	Lang                       int    `json:"lang"`
	ListeningPort              int    `json:"listening_port"`
	MaxFileSizeDiffForPatching int64  `json:"max_file_size_diff_for_patching"`
	MaxFileSizeForVersioning   int64  `json:"max_file_size_for_versioning"`
	RateLimitLocalPeers        bool   `json:"rate_limit_local_peers"`
	ReadPoolSize               int64  `json:"read_pool_size"`
	SyncMaxTimeDiff            int64  `json:"sync_max_time_diff"`
	SyncTrashTTL               int64  `json:"sync_trash_ttl"`
	UploadLimit                int64  `json:"upload_limit"`
	UseUPnP                    int    `json:"use_upnp"`
	WritePoolSize              int    `json:"write_pool_size"`
}

type Request

type Request struct {
	API    *BTSyncAPI
	Method string
	Args   map[string]string
}

func (*Request) Get

func (request *Request) Get() (response []byte, ret error)

func (*Request) GetResponse

func (request *Request) GetResponse(response interface{}) error

func (*Request) URL

func (request *Request) URL() string

type Response

type Response struct {
	Error   int    `json:"error"`
	Message string `json:"message"`
}

type SetFilePrefsResponse

type SetFilePrefsResponse []File

type SetFolderPrefsResponse

type SetFolderPrefsResponse FolderPreferences

Notes

Bugs

  • Currently nothing to handle the case where Basic Auth fails.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL