commit 37edaf489c7a9e9d4f94bc6ee6c0bde9ebb47bbd
parent 0ebd0e0dab4a088f21475b2642fb2d81997d8a8c
Author: MTRNord <mtrnord1@gmail.com>
Date: Tue, 3 Apr 2018 18:16:35 +0200
Return basic author data
Diffstat:
2 files changed, 62 insertions(+), 8 deletions(-)
diff --git a/api/login/twitter.go b/api/login/twitter.go
@@ -43,12 +43,18 @@ func getUserUUID(id string) (string, error) {
return uuidS, DBerr
}
-func saveTUser(id, accessToken, accessSecret string, data []byte) error {
+func saveTUser(id, accessToken, accessSecret, name string, data []byte) error {
dataDB, err := db.OpenDB()
if err != nil {
return err
}
+ puuid, UUIDerr := uuid.NewV4()
+ if UUIDerr != nil {
+ return UUIDerr
+ }
+ newUUID := puuid.String()
+
return dataDB.Update(func(txn *badger.Txn) error {
ATerr := txn.Set([]byte(fmt.Sprintf("users|T|%s|accessToken", id)), []byte(accessToken))
if ATerr != nil {
@@ -60,11 +66,15 @@ func saveTUser(id, accessToken, accessSecret string, data []byte) error {
return ASerr
}
- puuid, UUIDerr := uuid.NewV4()
- if UUIDerr != nil {
- return UUIDerr
+ Nerr := txn.Set([]byte(fmt.Sprintf("users|username|T|%s", newUUID)), []byte(name))
+ if Nerr != nil {
+ return Nerr
+ }
+
+ IDerr := txn.Set([]byte(fmt.Sprintf("users|id|T|%s", newUUID)), []byte(id))
+ if IDerr != nil {
+ return IDerr
}
- newUUID := puuid.String()
UUIDDBerr := txn.Set([]byte(fmt.Sprintf("users|T|%s|uuid", id)), []byte(newUUID))
if UUIDDBerr != nil {
@@ -121,7 +131,7 @@ func IssueSession() http.Handler {
fmt.Println("error:", err)
}
- SErr := saveTUser(twitterUser.IDStr, accessToken, accessSecret, b)
+ SErr := saveTUser(twitterUser.IDStr, accessToken, accessSecret, twitterUser.ScreenName, b)
if SErr != nil {
http.Error(w, SErr.Error(), http.StatusInternalServerError)
return
diff --git a/api/webserver.go b/api/webserver.go
@@ -7,6 +7,7 @@ import (
"github.com/SocialNetworkNews/SocialNetworkNews_API/config"
"github.com/SocialNetworkNews/SocialNetworkNews_API/db"
"github.com/SocialNetworkNews/SocialNetworkNews_API/twitter"
+ TLoginStructs "github.com/dghubble/go-twitter/twitter"
"github.com/dgraph-io/badger"
"github.com/gorilla/mux"
"github.com/pkg/errors"
@@ -57,7 +58,7 @@ type Paper struct {
UUID string `json:"uuid,omitempty"`
Description string `json:"description,omitempty"`
PaperImage string `json:"paper_image,omitempty"`
- Author `json:",omitempty"`
+ Author `json:"author,omitempty"`
}
type Author struct {
@@ -124,6 +125,36 @@ func PaperFunc(w http.ResponseWriter, r *http.Request) {
w.Write(data)
}
+func getAuthorData(id string) (*Author, error) {
+ author := &Author{}
+ dataDB, err := db.OpenDB()
+ if err != nil {
+ return nil, err
+ }
+
+ DBerr := dataDB.View(func(txn *badger.Txn) error {
+ username, err := db.Get(txn, []byte(fmt.Sprintf("users|username|T|%s", id)))
+ if err != nil {
+ return err
+ }
+ author.Username = fmt.Sprintf("%s", username)
+
+ author.UUID = id
+
+ data, err := db.Get(txn, []byte(fmt.Sprintf("users|T|%s|uuid", id)))
+ TUserData := TLoginStructs.User{}
+ UMerr := json.Unmarshal(data, &TUserData)
+ if UMerr != nil {
+ return UMerr
+ }
+ author.TwitterProfile = TUserData.URL
+ author.ProfileIMGURL = TUserData.ProfileImageURLHttps
+ return nil
+ })
+
+ return author, DBerr
+}
+
func addPapers(data []Paper) ([]byte, error) {
papersDB, openErr := db.OpenDB()
if openErr != nil {
@@ -169,6 +200,11 @@ func addPapers(data []Paper) ([]byte, error) {
paper.UUID = newUUID
paper.Name = newName
paper.PaperImage = newPIMG
+ author, err := getAuthorData(newAuthor)
+ if err != nil {
+ return nil, err
+ }
+ paper.Author = *author
papers = append(papers, paper)
}
@@ -241,7 +277,15 @@ func getPapers(full bool, uuid string) ([]byte, error) {
paper.Description = fmt.Sprintf("%s", descResult)
if full {
- //TODO Add Author Object!
+ AUUIDResult, QueryErr := db.Get(txn, []byte(fmt.Sprintf("%s%s|author", prefix, stringKeyEnd)))
+ if QueryErr != nil {
+ return errors.WithMessage(QueryErr, fmt.Sprintf("%s%s|author", prefix, stringKeyEnd))
+ }
+ author, err := getAuthorData(fmt.Sprintf("%s", AUUIDResult))
+ if err != nil {
+ return err
+ }
+ paper.Author = *author
}
papers = append(papers, paper)