mirror of https://github.com/Xhofe/alist
				
				
				
			
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
package rpc
 | 
						|
 | 
						|
import (
 | 
						|
	log "github.com/sirupsen/logrus"
 | 
						|
)
 | 
						|
 | 
						|
type Event struct {
 | 
						|
	Gid string `json:"gid"` // GID of the download
 | 
						|
}
 | 
						|
 | 
						|
// The RPC server might send notifications to the client.
 | 
						|
// Notifications is unidirectional, therefore the client which receives the notification must not respond to it.
 | 
						|
// The method signature of a notification is much like a normal method request but lacks the id key
 | 
						|
 | 
						|
type websocketResponse struct {
 | 
						|
	clientResponse
 | 
						|
	Method string  `json:"method"`
 | 
						|
	Params []Event `json:"params"`
 | 
						|
}
 | 
						|
 | 
						|
// Notifier handles rpc notification from aria2 server
 | 
						|
type Notifier interface {
 | 
						|
	// OnDownloadStart will be sent when a download is started.
 | 
						|
	OnDownloadStart([]Event)
 | 
						|
	// OnDownloadPause will be sent when a download is paused.
 | 
						|
	OnDownloadPause([]Event)
 | 
						|
	// OnDownloadStop will be sent when a download is stopped by the user.
 | 
						|
	OnDownloadStop([]Event)
 | 
						|
	// OnDownloadComplete will be sent when a download is complete. For BitTorrent downloads, this notification is sent when the download is complete and seeding is over.
 | 
						|
	OnDownloadComplete([]Event)
 | 
						|
	// OnDownloadError will be sent when a download is stopped due to an error.
 | 
						|
	OnDownloadError([]Event)
 | 
						|
	// OnBtDownloadComplete will be sent when a torrent download is complete but seeding is still going on.
 | 
						|
	OnBtDownloadComplete([]Event)
 | 
						|
}
 | 
						|
 | 
						|
type DummyNotifier struct{}
 | 
						|
 | 
						|
func (DummyNotifier) OnDownloadStart(events []Event)      { log.Printf("%s started.", events) }
 | 
						|
func (DummyNotifier) OnDownloadPause(events []Event)      { log.Printf("%s paused.", events) }
 | 
						|
func (DummyNotifier) OnDownloadStop(events []Event)       { log.Printf("%s stopped.", events) }
 | 
						|
func (DummyNotifier) OnDownloadComplete(events []Event)   { log.Printf("%s completed.", events) }
 | 
						|
func (DummyNotifier) OnDownloadError(events []Event)      { log.Printf("%s error.", events) }
 | 
						|
func (DummyNotifier) OnBtDownloadComplete(events []Event) { log.Printf("bt %s completed.", events) }
 |