mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-14 17:29:52 +01:00
GET user
This commit is contained in:
12
klotz.go
12
klotz.go
@@ -65,6 +65,18 @@ type UserData struct {
|
|||||||
Secret string `json:"secret"`
|
Secret string `json:"secret"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type User struct {
|
||||||
|
MalID int64 `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
URL string `json:"url"`
|
||||||
|
ImageURL string `json:"imageUrl"`
|
||||||
|
LastOnline time.Time `json:"lastOnline"`
|
||||||
|
Gender string `json:"gender"`
|
||||||
|
Birthday time.Time `json:"birthday"`
|
||||||
|
Location string `json:"location"`
|
||||||
|
Joined time.Time `json:"joined"`
|
||||||
|
}
|
||||||
|
|
||||||
type RegisterData struct {
|
type RegisterData struct {
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
MalID int64 `json:"malId"`
|
MalID int64 `json:"malId"`
|
||||||
|
|||||||
37
knecht.go
37
knecht.go
@@ -54,30 +54,35 @@ func GetUserAnimeListBytes(username, status string) ([]byte, error) {
|
|||||||
return GetDataMal(userApiMal + username + "/animelist?limit=1000&status=" + status)
|
return GetDataMal(userApiMal + username + "/animelist?limit=1000&status=" + status)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserData(username string) (*UserJikan, []byte, error) {
|
func GetUserData(username string) (*User, []byte, error) {
|
||||||
var user UserJikan
|
var user User
|
||||||
body, err := GetUserBytesCached(username)
|
|
||||||
if err != nil {
|
|
||||||
return nil, body, err
|
|
||||||
}
|
|
||||||
err = json.Unmarshal(body, &user)
|
|
||||||
return &user, body, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetUserBytesCached(username string) ([]byte, error) {
|
|
||||||
data, err := userCache.Get(username)
|
data, err := userCache.Get(username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
data, err = GetDataJikan(username)
|
err = nil
|
||||||
|
dataJikan, err := GetDataJikan(userApiJikan + username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return data, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
if strings.Contains(string(data), "BadResponseException") {
|
if strings.Contains(string(data), "BadResponseException") {
|
||||||
return data, fmt.Errorf("user not found: %s", username)
|
return nil, nil, fmt.Errorf("user not found: %s", username)
|
||||||
|
}
|
||||||
|
var userJikan UserJikan
|
||||||
|
err = json.Unmarshal(dataJikan, &userJikan)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
// convert to user
|
||||||
|
user = UserConvert(&userJikan)
|
||||||
|
data, err = json.Marshal(&user)
|
||||||
|
if err != nil {
|
||||||
|
return &user, data, err
|
||||||
}
|
}
|
||||||
userCache.Set(username, data)
|
userCache.Set(username, data)
|
||||||
return data, err
|
} else {
|
||||||
|
err = json.Unmarshal(data, &user)
|
||||||
}
|
}
|
||||||
return data, err
|
|
||||||
|
return &user, data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSeasonDataAll() ([]Anime, []byte, error) {
|
func GetSeasonDataAll() ([]Anime, []byte, error) {
|
||||||
|
|||||||
34
nuss.go
34
nuss.go
@@ -41,7 +41,7 @@ func AddUserToAnime(username string, userId, animeId int64) (*AnimeUser, error)
|
|||||||
users = make([]WatchUser, 0)
|
users = make([]WatchUser, 0)
|
||||||
} else {
|
} else {
|
||||||
// parse user list
|
// parse user list
|
||||||
users, err = parseUserList(e.Value)
|
users, err = parseWatchUserList(e.Value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ func DeleteUserFromAnime(username string, userId, animeId int64) (*AnimeUser, er
|
|||||||
users = make([]WatchUser, 0)
|
users = make([]WatchUser, 0)
|
||||||
} else {
|
} else {
|
||||||
// parse user list
|
// parse user list
|
||||||
users, err = parseUserList(e.Value)
|
users, err = parseWatchUserList(e.Value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -129,7 +129,7 @@ func DeleteUserFromAnimes(userId int64) error {
|
|||||||
// iterate entries
|
// iterate entries
|
||||||
for _, e := range entries {
|
for _, e := range entries {
|
||||||
// parse user list
|
// parse user list
|
||||||
users, err := parseUserList(e.Value)
|
users, err := parseWatchUserList(e.Value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -164,6 +164,30 @@ func DeleteUserFromAnimes(userId int64) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadRegisteredUsers() ([]UserData, error) {
|
||||||
|
var users []UserData
|
||||||
|
err := db.View(
|
||||||
|
func(tx *nutsdb.Tx) error {
|
||||||
|
entries, err := tx.GetAll(bucketUsers)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
users = make([]UserData, 0)
|
||||||
|
// iterate entries
|
||||||
|
for _, e := range entries {
|
||||||
|
// parse user
|
||||||
|
var user UserData
|
||||||
|
err := json.Unmarshal(e.Value, &user)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
users = append(users, user)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
return users, err
|
||||||
|
}
|
||||||
|
|
||||||
func ReadAnimeUsers() ([]AnimeUser, error) {
|
func ReadAnimeUsers() ([]AnimeUser, error) {
|
||||||
var animes []AnimeUser
|
var animes []AnimeUser
|
||||||
err := db.View(
|
err := db.View(
|
||||||
@@ -181,7 +205,7 @@ func ReadAnimeUsers() ([]AnimeUser, error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// parse user list
|
// parse user list
|
||||||
users, err := parseUserList(e.Value)
|
users, err := parseWatchUserList(e.Value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -235,7 +259,7 @@ func DbDelete(bucket, key string) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseUserList(data []byte) ([]WatchUser, error) {
|
func parseWatchUserList(data []byte) ([]WatchUser, error) {
|
||||||
var users []WatchUser
|
var users []WatchUser
|
||||||
err := json.Unmarshal(data, &users)
|
err := json.Unmarshal(data, &users)
|
||||||
return users, err
|
return users, err
|
||||||
|
|||||||
47
ober.go
47
ober.go
@@ -17,7 +17,7 @@ func RunWebserv() {
|
|||||||
r.GET("/", Headers(Start))
|
r.GET("/", Headers(Start))
|
||||||
r.GET("/api/season", Headers(Season))
|
r.GET("/api/season", Headers(Season))
|
||||||
r.GET("/api/anime/{id}", Headers(AnimeGet))
|
r.GET("/api/anime/{id}", Headers(AnimeGet))
|
||||||
r.GET("/api/user/{id?}", Headers(AnimeGet))
|
r.GET("/api/user/{user?}", Headers(UserGet))
|
||||||
r.GET("/api/watch/{user?}", Headers(WatchGet))
|
r.GET("/api/watch/{user?}", Headers(WatchGet))
|
||||||
r.POST("/api/register", Headers(Register))
|
r.POST("/api/register", Headers(Register))
|
||||||
r.POST("/api/watch/{user}", Headers(WatchPost))
|
r.POST("/api/watch/{user}", Headers(WatchPost))
|
||||||
@@ -95,6 +95,49 @@ func AnimeGet(ctx *fasthttp.RequestCtx) {
|
|||||||
ctx.SetStatusCode(fasthttp.StatusOK)
|
ctx.SetStatusCode(fasthttp.StatusOK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UserGet(ctx *fasthttp.RequestCtx) {
|
||||||
|
usrVal := ctx.UserValue("user")
|
||||||
|
users := make([]User, 0)
|
||||||
|
if usrVal != nil {
|
||||||
|
// get specific user
|
||||||
|
user, _, err := GetUserData(fmt.Sprintf("%s", usrVal))
|
||||||
|
if err != nil {
|
||||||
|
ctx.WriteString(err.Error())
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
users = append(users, *user)
|
||||||
|
} else {
|
||||||
|
regUsers, err := ReadRegisteredUsers()
|
||||||
|
if err != nil {
|
||||||
|
addErrorToCtx(ctx, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, u := range regUsers {
|
||||||
|
user, _, err := GetUserData(u.Username)
|
||||||
|
if err != nil {
|
||||||
|
addErrorToCtx(ctx, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
users = append(users, *user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bytes, err := json.Marshal(users)
|
||||||
|
if err != nil {
|
||||||
|
addErrorToCtx(ctx, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = ctx.Write(bytes)
|
||||||
|
if err != nil {
|
||||||
|
addErrorToCtx(ctx, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.SetContentType("application/json; charset=utf-8")
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusOK)
|
||||||
|
}
|
||||||
|
|
||||||
func WatchGet(ctx *fasthttp.RequestCtx) {
|
func WatchGet(ctx *fasthttp.RequestCtx) {
|
||||||
usrVal := ctx.UserValue("user")
|
usrVal := ctx.UserValue("user")
|
||||||
var userId int64
|
var userId int64
|
||||||
@@ -185,7 +228,7 @@ func Register(ctx *fasthttp.RequestCtx) {
|
|||||||
ctx.SetStatusCode(fasthttp.StatusExpectationFailed)
|
ctx.SetStatusCode(fasthttp.StatusExpectationFailed)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if userData.Data.MalID != register.MalID {
|
if userData.MalID != register.MalID {
|
||||||
ctx.WriteString("Dich gibts nicht auf MAL")
|
ctx.WriteString("Dich gibts nicht auf MAL")
|
||||||
ctx.SetStatusCode(fasthttp.StatusExpectationFailed)
|
ctx.SetStatusCode(fasthttp.StatusExpectationFailed)
|
||||||
return
|
return
|
||||||
|
|||||||
14
schaffer.go
14
schaffer.go
@@ -91,6 +91,20 @@ func MalConvert(mal *AnimeDetailMal) Anime {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UserConvert(user *UserJikan) User {
|
||||||
|
return User{
|
||||||
|
MalID: user.Data.MalID,
|
||||||
|
Username: user.Data.Username,
|
||||||
|
URL: user.Data.URL,
|
||||||
|
ImageURL: user.Data.Images.Jpg.ImageURL,
|
||||||
|
LastOnline: user.Data.LastOnline,
|
||||||
|
Gender: user.Data.Gender,
|
||||||
|
Birthday: user.Data.Birthday,
|
||||||
|
Location: user.Data.Location,
|
||||||
|
Joined: user.Data.Joined,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func GetSeasonCache() ([]Anime, error) {
|
func GetSeasonCache() ([]Anime, error) {
|
||||||
data, err := seasoncache.Get(seasonApiJikan)
|
data, err := seasoncache.Get(seasonApiJikan)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user