Add transfer of channel after all video's have been transferred
Add channel status call to notify external db that the channel has been transferred.
This commit is contained in:
parent
45cea808ed
commit
eb2f6273e4
3 changed files with 40 additions and 4 deletions
|
@ -100,6 +100,13 @@ const (
|
|||
VideoStatusTranferFailed = "transferfailed"
|
||||
)
|
||||
|
||||
const (
|
||||
TransferStateNotTouched = iota
|
||||
TransferStatePending
|
||||
TransferStateComplete
|
||||
TransferStateFailed = -1
|
||||
)
|
||||
|
||||
func (s *SyncManager) Start() error {
|
||||
|
||||
if logUtils.ShouldCleanOnStartup() {
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
)
|
||||
|
||||
func TransferChannel(channel *Sync) error {
|
||||
//Transfer channel
|
||||
transferStatus := TransferStateComplete
|
||||
for _, video := range channel.syncedVideos {
|
||||
//Todo - Wait for prior sync to see that the publish is confirmed in lbrycrd?
|
||||
c, err := channel.daemon.ClaimSearch(nil, &video.ClaimID, nil, nil)
|
||||
|
@ -39,6 +39,7 @@ func TransferChannel(channel *Sync) error {
|
|||
|
||||
_, err = channel.daemon.StreamUpdate(video.ClaimID, streamUpdateOptions)
|
||||
if err != nil {
|
||||
transferStatus = TransferStateFailed
|
||||
videoStatus.FailureReason = err.Error()
|
||||
videoStatus.Status = VideoStatusTranferFailed
|
||||
videoStatus.IsTransferred = util.PtrToBool(false)
|
||||
|
@ -51,8 +52,35 @@ func TransferChannel(channel *Sync) error {
|
|||
return errors.Err(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Todo - Transfer Channel as last step and post back to remote db that channel is transferred.
|
||||
//Transfer channel
|
||||
if transferStatus < 0 {
|
||||
return errors.Err("A video has failed to transfer for the channel...skipping channel transfer")
|
||||
}
|
||||
failureReason := ""
|
||||
channelClaim, err := channel.daemon.ClaimSearch(nil, &channel.lbryChannelID, nil, nil)
|
||||
if err != nil {
|
||||
return errors.Err(err)
|
||||
}
|
||||
if channelClaim == nil {
|
||||
return errors.Err("There is no channel claim for channel %s", channel.LbryChannelName)
|
||||
}
|
||||
updateOptions := jsonrpc.ChannelUpdateOptions{
|
||||
ChannelCreateOptions: jsonrpc.ChannelCreateOptions{
|
||||
ClaimCreateOptions: jsonrpc.ClaimCreateOptions{
|
||||
ClaimAddress: &channel.publishAddress,
|
||||
},
|
||||
},
|
||||
}
|
||||
_, err = channel.daemon.ChannelUpdate(channel.lbryChannelID, updateOptions)
|
||||
if err != nil {
|
||||
transferStatus = TransferStateFailed
|
||||
failureReason = err.Error()
|
||||
}
|
||||
|
||||
return nil
|
||||
_, _, channelStatusErr := channel.APIConfig.SetChannelStatus(channel.lbryChannelID, VideoStatusPublished, failureReason, transferStatus)
|
||||
if channelStatusErr != nil {
|
||||
return errors.Err(err)
|
||||
}
|
||||
return errors.Err(err)
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ func (a *APIConfig) SetChannelCert(certHex string, channelID string) error {
|
|||
|
||||
}
|
||||
|
||||
func (a *APIConfig) SetChannelStatus(channelID string, status string, failureReason string) (map[string]SyncedVideo, map[string]bool, error) {
|
||||
func (a *APIConfig) SetChannelStatus(channelID string, status string, failureReason string, transferState int) (map[string]SyncedVideo, map[string]bool, error) {
|
||||
type apiChannelStatusResponse struct {
|
||||
Success bool `json:"success"`
|
||||
Error null.String `json:"error"`
|
||||
|
@ -148,6 +148,7 @@ func (a *APIConfig) SetChannelStatus(channelID string, status string, failureRea
|
|||
"auth_token": {a.ApiToken},
|
||||
"sync_status": {status},
|
||||
"failure_reason": {failureReason},
|
||||
"transferred": {strconv.Itoa(transferState)},
|
||||
})
|
||||
defer res.Body.Close()
|
||||
body, _ := ioutil.ReadAll(res.Body)
|
||||
|
|
Loading…
Reference in a new issue