fix: handle TweetWithVisibilityResults and rest_id fallback in CreateTweet response
This commit is contained in:
parent
9d847cd18e
commit
d5a47d4a67
2 changed files with 21 additions and 11 deletions
|
|
@ -7,6 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type tweet struct {
|
type tweet struct {
|
||||||
|
RestID string `json:"rest_id"`
|
||||||
Core struct {
|
Core struct {
|
||||||
UserResults struct {
|
UserResults struct {
|
||||||
Result struct {
|
Result struct {
|
||||||
|
|
|
||||||
29
tweet.go
29
tweet.go
|
|
@ -20,29 +20,38 @@ type newTweet struct {
|
||||||
Data struct {
|
Data struct {
|
||||||
CreateTweet struct {
|
CreateTweet struct {
|
||||||
TweetResults struct {
|
TweetResults struct {
|
||||||
Result tweet `json:"result"`
|
Result result `json:"result"`
|
||||||
} `json:"tweet_results"`
|
} `json:"tweet_results"`
|
||||||
} `json:"create_tweet"`
|
} `json:"create_tweet"`
|
||||||
} `json:"data"`
|
} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (newTweet *newTweet) parse() *Tweet {
|
func (newTweet *newTweet) parse() *Tweet {
|
||||||
var tweet = &newTweet.Data.CreateTweet.TweetResults.Result
|
r := &newTweet.Data.CreateTweet.TweetResults.Result
|
||||||
|
|
||||||
if tweet.NoteTweet.NoteTweetResults.Result.Text != "" {
|
t := &r.tweet
|
||||||
tweet.Legacy.FullText = tweet.NoteTweet.NoteTweetResults.Result.Text
|
if r.Typename == "TweetWithVisibilityResults" {
|
||||||
|
t = &r.Tweet
|
||||||
}
|
}
|
||||||
var legacy *legacyTweet = &tweet.Legacy
|
|
||||||
var user *legacyUser = &tweet.Core.UserResults.Result.Legacy
|
if t.RestID != "" && t.Legacy.IDStr == "" {
|
||||||
|
t.Legacy.IDStr = t.RestID
|
||||||
|
}
|
||||||
|
|
||||||
|
if t.NoteTweet.NoteTweetResults.Result.Text != "" {
|
||||||
|
t.Legacy.FullText = t.NoteTweet.NoteTweetResults.Result.Text
|
||||||
|
}
|
||||||
|
var legacy *legacyTweet = &t.Legacy
|
||||||
|
var user *legacyUser = &t.Core.UserResults.Result.Legacy
|
||||||
tw := parseLegacyTweet(user, legacy)
|
tw := parseLegacyTweet(user, legacy)
|
||||||
if tw == nil {
|
if tw == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if tw.Views == 0 && tweet.Views.Count != "" {
|
if tw.Views == 0 && t.Views.Count != "" {
|
||||||
tw.Views, _ = strconv.Atoi(tweet.Views.Count)
|
tw.Views, _ = strconv.Atoi(t.Views.Count)
|
||||||
}
|
}
|
||||||
if tweet.QuotedStatusResult.Result != nil {
|
if t.QuotedStatusResult.Result != nil {
|
||||||
tw.QuotedStatus = tweet.QuotedStatusResult.Result.parse()
|
tw.QuotedStatus = t.QuotedStatusResult.Result.parse()
|
||||||
}
|
}
|
||||||
return tw
|
return tw
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue