package Seeder import ( "encoding/base64" "io" "os" "time" "git.tovijaeschke.xyz/tovi/Capsule/Backend/Database" "git.tovijaeschke.xyz/tovi/Capsule/Backend/Models" ) func seedFriend(userRequestTo, userRequestFrom Models.User, accepted bool) error { var ( friendRequest Models.FriendRequest symKey AesKey encPublicKey []byte err error ) symKey, err = GenerateAesKey() if err != nil { return err } encPublicKey, err = symKey.AesEncrypt([]byte(PublicKey)) if err != nil { return err } friendRequest = Models.FriendRequest{ UserID: userRequestTo.ID, FriendID: base64.StdEncoding.EncodeToString( EncryptWithPublicKey( []byte(userRequestFrom.ID.String()), decodedPublicKey, ), ), FriendUsername: base64.StdEncoding.EncodeToString( EncryptWithPublicKey( []byte(userRequestFrom.Username), decodedPublicKey, ), ), FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString( encPublicKey, ), SymmetricKey: base64.StdEncoding.EncodeToString( EncryptWithPublicKey(symKey.Key, decodedPublicKey), ), } if accepted { friendRequest.AcceptedAt.Time = time.Now() friendRequest.AcceptedAt.Valid = true } return Database.CreateFriendRequest(&friendRequest) } func copyProfileImage() error { var ( srcFile *os.File dstFile *os.File err error ) srcFile, err = os.Open("./Database/Seeder/profile_image_enc.dat") if err != nil { return err } dstFile, err = os.Create("./attachments/profile_image") if err != nil { return err } defer dstFile.Close() _, err = io.Copy(dstFile, srcFile) return err } // SeedFriends creates dummy friends for testing/development func SeedFriends() { var ( primaryUser Models.User secondaryUser Models.User accepted bool i int err error ) err = copyProfileImage() if err != nil { panic(err) } primaryUser, err = Database.GetUserByUsername("testUser") if err != nil { panic(err) } secondaryUser, err = Database.GetUserByUsername("ATestUser2") if err != nil { panic(err) } err = seedFriend(primaryUser, secondaryUser, true) if err != nil { panic(err) } err = seedFriend(secondaryUser, primaryUser, true) if err != nil { panic(err) } accepted = false for i = 0; i <= 5; i++ { secondaryUser, err = Database.GetUserByUsername(userNames[i]) if err != nil { panic(err) } if i > 3 { accepted = true } err = seedFriend(primaryUser, secondaryUser, accepted) if err != nil { panic(err) } if accepted { err = seedFriend(secondaryUser, primaryUser, accepted) if err != nil { panic(err) } } } }