From 7d4ae4b6685f2db9030a332ceedbfebe632dc314 Mon Sep 17 00:00:00 2001 From: shoopea Date: Tue, 11 Jun 2019 23:38:12 +0800 Subject: [PATCH] test --- job.go | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 8 deletions(-) diff --git a/job.go b/job.go index 527fc95..9532007 100644 --- a/job.go +++ b/job.go @@ -520,15 +520,70 @@ func jobBackupImport(j Job) { err = json.Unmarshal(j.Payload, &p) logOnError(err, "jobBackupImport : Unmarshal payload") - if err == nil { - m := TGCommand{ - Type: commandReplyMsg, - Text: "Backup imported.", - FromMsgID64: p.MsgID64, - FromChatID64: p.ChatID64, - } - TGCmdQueue <- m + resp, err := http.Get(p.URL) + logOnError(err, "jobBackupImport : Get") + defer resp.Body.Close() + + buf := new(bytes.Buffer) + buf.ReadFrom(resp.Body) + + m := TGCommand{ + Type: commandReplyMsg, + Text: "File downloaded.", + FromMsgID64: p.MsgID64, + FromChatID64: p.ChatID64, } + TGCmdQueue <- m + + z := buf.Bytes() + r := bytes.NewReader(z) + zr, err := zip.NewReader(r, int64(len(z))) + + for _, f := range zr.File { + if strings.Compare(f.Name, "backup.json") == 0 { + rc, err := f.Open() + logOnError(err, "jobBackupImport : Open") + if err != nil { + return err + } + data, err := ioutil.ReadAll(rc) + logOnError(err, "jobBackupImport : ReadAll") + if err != nil { + return err + } + log.Printf("jobBackupImport : %d uncompressed bytes.\n", len(data)) + rc.Close() + bkp := DataBackup{} + err = json.Unmarshal(data, &bkp) + logOnError(err, "jobBackupImport : Unmarshal") + if err != nil { + return err + } + for _, m := range bkp.Messages { + _, err = addObjMsg(m.ID64, m.ChatID64, m.UserID64, m.SenderUserID64, m.Date, m.Text) + } + + m := TGCommand{ + Type: commandReplyMsg, + Text: "Backup restored.", + FromMsgID64: p.MsgID64, + FromChatID64: p.ChatID64, + } + TGCmdQueue <- m + + err = setJobDone(j.ID64) + logOnError(err, "jobBackupImport : setJobDone") + return + } + } + + m := TGCommand{ + Type: commandReplyMsg, + Text: "Not backup file found in archive.", + FromMsgID64: p.MsgID64, + FromChatID64: p.ChatID64, + } + TGCmdQueue <- m err = setJobDone(j.ID64) logOnError(err, "jobBackupImport : setJobDone")