Split main file on two packet

This commit is contained in:
Archie Fox
2025-03-05 00:33:09 +03:00
parent 13868f6a8a
commit b5941ea148
2 changed files with 79 additions and 93 deletions

View File

@@ -1,106 +1,19 @@
package main
import (
"errors"
"fmt"
"math/rand/v2"
"net/url"
"time"
"password/account"
)
type account struct {
login string
password string
url string
}
type accountWithTimeStamp struct {
createdAt time.Time
updatedAt time.Time
account
}
// метод вывода пароля
func (acc account) outputPassword() {
fmt.Println(acc.login, acc.password, acc.url)
}
func (acc accountWithTimeStamp) outputPassword() {
fmt.Println(acc.login, acc.password, acc.url, acc.createdAt, acc.updatedAt)
}
// метод генерации пароля
func (acc *account) generatePassword(n int) {
res := make([]rune, n)
for i := range res {
res[i] = letterRunes[rand.IntN(len(letterRunes))]
}
acc.password = string(res)
}
// Создание аккаунта с таймстамп
func newAccountWithTimeStamp(login, password, urlString string) (*accountWithTimeStamp, error) {
_, err := url.ParseRequestURI(urlString)
if err != nil {
return nil, errors.New("INVALID_URL")
}
if login == "" {
return nil, errors.New("INVALID_LOGIN")
}
newAcc := &accountWithTimeStamp{
createdAt: time.Now(),
updatedAt: time.Now(),
account: account{
login: login,
password: password,
url: urlString,
},
}
if password == "" {
newAcc.generatePassword(18)
}
return newAcc, nil
}
// создание аккаунта
/* func newAccount(login, password, urlString string) (*account, error) {
_, err := url.ParseRequestURI(urlString)
if err != nil {
return nil, errors.New("INVALID_URL")
}
if login == "" {
return nil, errors.New("INVALID_LOGIN")
}
newAcc := &account{
login: login,
password: password,
url: urlString,
}
if password == "" {
newAcc.generatePassword(18)
}
return newAcc, nil
} */
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ1234567890-*!?()#$%&")
func main() {
login := promptData("Введите логин: ")
password := promptData("Введите пароль: ")
url := promptData("Введите URL: ")
login := account.PromptData("Введите логин: ")
password := account.PromptData("Введите пароль: ")
url := account.PromptData("Введите URL: ")
myAccount, err := newAccountWithTimeStamp(login, password, url)
myAccount, err := account.NewAccountWithTimeStamp(login, password, url)
if err != nil {
fmt.Println("ОШИБКА: Неверный формат URL")
return
}
myAccount.outputPassword()
}
// функция введения данных
func promptData(prompt string) string {
fmt.Print(prompt)
var res string
fmt.Scanln(&res)
return res
myAccount.OutputPassword()
}