Todoist Migration #566
|
@ -17,10 +17,15 @@
|
|||
package todoist
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"code.vikunja.io/api/pkg/config"
|
||||
"code.vikunja.io/api/pkg/log"
|
||||
"code.vikunja.io/api/pkg/models"
|
||||
"code.vikunja.io/api/pkg/modules/migration"
|
||||
"code.vikunja.io/api/pkg/user"
|
||||
"code.vikunja.io/api/pkg/utils"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
@ -212,6 +217,12 @@ func getAccessTokenFromAuthToken(authToken string) (accessToken string, err erro
|
|||
return
|
||||
}
|
||||
|
||||
if resp.StatusCode > 399 {
|
||||
buf := &bytes.Buffer{}
|
||||
_, _ = buf.ReadFrom(resp.Body)
|
||||
return "", fmt.Errorf("got http status %d while trying to get token, error was %s", resp.StatusCode, buf.String())
|
||||
}
|
||||
|
||||
token := &apiTokenResponse{}
|
||||
err = json.NewDecoder(resp.Body).Decode(token)
|
||||
return token.AccessToken, err
|
||||
|
@ -219,12 +230,22 @@ func getAccessTokenFromAuthToken(authToken string) (accessToken string, err erro
|
|||
|
||||
func (m *Migration) Migrate(u *user.User) (err error) {
|
||||
|
||||
log.Debugf("[Todoist Migration] Starting migration for user %d", u.ID)
|
||||
|
||||
// 0. Get an api token from the obtained auth token
|
||||
token, err := getAccessTokenFromAuthToken(m.Code)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if token == "" {
|
||||
log.Debugf("[Todoist Migration] Could not get token")
|
||||
return
|
||||
}
|
||||
|
||||
log.Debugf("[Todoist Migration] Got user token for user %d", u.ID)
|
||||
log.Debugf("[Todoist Migration] Getting todoist data for user %d", u.ID)
|
||||
|
||||
// Get everything with the sync api
|
||||
form := url.Values{
|
||||
"token": []string{token},
|
||||
|
@ -242,6 +263,25 @@ func (m *Migration) Migrate(u *user.User) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
log.Debugf("[Todoist Migration] Got all todoist user data for user %d", u.ID)
|
||||
log.Debugf("[Todoist Migration] Start converting data for user %d", u.ID)
|
||||
|
||||
fullVikunjaHierachie, err := convertTodoistToVikunja(syncResponse)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
log.Debugf("[Todoist Migration] Done converting data for user %d", u.ID)
|
||||
log.Debugf("[Todoist Migration] Start inserting data for user %d", u.ID)
|
||||
|
||||
err = migration.InsertFromStructure(fullVikunjaHierachie, u)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
log.Debugf("[Todoist Migration] Done inserting data for user %d", u.ID)
|
||||
log.Debugf("[Todoist Migration] Todoist migration done for user %d", u.ID)
|
||||
|
||||
//// 1. Get all labels and put them in a map for easier retrieval later on
|
||||
//labels := make(map[int64]*label)
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue
Block a user