Skip to content

Added some GoLang samples. #56

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions Follows-Lookup/followers-lookup.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package Follows_Lookup

// Fetch the followers of a user account, by ID. Using Bearer Token
// https://developer.twitter.com/en/docs/twitter-api/users/follows/quick-start
import (
"encoding/json"
"fmt"
"log"
"net/http"
"os"
"time"
)

type UserFollower struct {
Data []Data `json:"data"`
Meta Meta `json:"meta"`
Includes Includes `json:"includes"`
}

type Data struct {
ID int64 `json:"id"`
Username string `json:"username"`
Name string `json:"name"`
PinnedTweetID int64 `json:"pinned_tweet_id"`
CreatedAt string `json:"created_at"`
}
type Includes struct {
Tweets []Tweets `json:"tweets"`
}
type Tweets struct {
CreatedAt time.Time `json:"created_at"`
ID int64 `json:"id"`
Text string `json:"text"`
}

type Meta struct {
ResultCount string `json:"result_count"`
NextToken string `json:"next_token"`
}

func UserFollowers() {
if os.Getenv("BEARER_TOKEN") == "" {
log.Fatalln("set a bearer token")
return
}

// Sets the bearer token from your environment variables
// To set environment variables on macOS or Linux, run the export command below from the terminal:
// export BEARER_TOKEN='YOUR-TOKEN'
bearerToken := os.Getenv("BEARER_TOKEN")
const userID = 2244994945
url := fmt.Sprintf("https://api.twitter.com/2/users/%d/followers", userID)

client := &http.Client{}

request, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Println(err)
return
}

// Add Bearer Token to HTTP Header
request.Header.Set("Authorization", "Bearer "+bearerToken)

// Add parameters
q := request.URL.Query()
q.Add("user.fields", "created_at")
q.Add("tweet.fields", "created_at")
q.Add("expansions", "pinned_tweet_id")
q.Add("max_results", "5")
request.URL.RawQuery = q.Encode()

// Send Request
response, err := client.Do(request)

if err != nil {
log.Println(err)
}

defer response.Body.Close()

var userObject UserFollower
err = json.NewDecoder(response.Body).Decode(&userObject)
if err != nil {
log.Println("error to decode json", err)
}

fmt.Println(userObject)
}
69 changes: 69 additions & 0 deletions Recent-Tweet-Counts/recent_tweet_counts.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package Recent_Tweet_Counts

// Search for Tweets within the past
// https://developer.twitter.com/en/docs/twitter-api/tweets/search/quick-start/recent-search

import (
"encoding/json"
"fmt"
"log"
"net/http"
"os"
"time"
)

type RecentTweets struct {
Data []Data `json:"data"`
Meta Meta `json:"meta"`
}
type Data struct {
End time.Time `json:"end"`
Start time.Time `json:"start"`
TweetCount int `json:"tweet_count"`
}
type Meta struct {
TotalTweetCount int `json:"total_tweet_count"`
}

func RecentTweetCount() {
if os.Getenv("BEARER_TOKEN") == "" {
log.Fatalln("set a bearer token")
}

const url = "https://api.twitter.com/2/tweets/counts/recent"

// Sets the bearer token from your environment variables
// To set environment variables on macOS or Linux, run the export command below from the terminal:
// export BEARER_TOKEN='YOUR-TOKEN'
bearerToken := os.Getenv("BEARER_TOKEN")
client := http.Client{}

request, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Println(err)
}
// Add Bearer Token to HTTP Header
request.Header.Set("Authorization", "Bearer "+bearerToken)

// Add Paramater
q := request.URL.Query()
q.Add("query", "from:TwitterDev")
q.Add("granularity", "day")
request.URL.RawQuery = q.Encode()

// Send Request
response, err := client.Do(request)
if err != nil {
log.Println(err)
}

defer response.Body.Close()

var recentTweet RecentTweets
err = json.NewDecoder(response.Body).Decode(&recentTweet)
if err != nil {
log.Println(err)
}

fmt.Println(recentTweet)
}
86 changes: 86 additions & 0 deletions Retweets-Lookup/retweeted_by.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package Retweets_Lookup

// Search foor retweeted by Tweet ID. Using Bearer Token
// https://developer.twitter.com/en/docs/twitter-api/tweets/retweets/introduction

import (
"encoding/json"
"fmt"
"log"
"net/http"
"os"
"time"
)

type RetweetedBy struct {
Data []Data `json:"data"`
Includes Includes `json:"includes"`
Meta Meta `json:"meta"`
}
type Data struct {
ID string `json:"id"`
Username string `json:"username"`
PinnedTweetID string `json:"pinned_tweet_id,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
type Includes struct {
Tweets []Tweets `json:"tweets"`
}

type Tweets struct {
ID string `json:"id"`
Text string `json:"text"`
CreatedAt time.Time `json:"created_at"`
}

type Meta struct {
ResultCount int `json:"result_count"`
}

func GetRetweetedBy() {
if os.Getenv("Bearer") == "" {
log.Fatalln("set a bearer token")
}

const tweetID = 1354143047324299264
url := fmt.Sprintf("https://api.twitter.com/2/tweets/%d/retweeted_by", tweetID)

// Sets the bearer token from your environment variables
// To set environment variables on macOS or Linux, run the export command below from the terminal:
// export BEARER_TOKEN='YOUR-TOKEN'
bearerToken := os.Getenv("BEARER_TOKEN")

client := &http.Client{}
request, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Println(err)
return
}

// Sets the bearer token from your environment variables
// To set environment variables on macOS or Linux, run the export command below from the terminal:
// export BEARER_TOKEN='YOUR-TOKEN'
request.Header.Set("Authorization", "Bearer "+bearerToken)

// Add Parameters
q := request.URL.Query()
q.Add("user.fields", "created_at")
q.Add("expansions", "pinned_tweet_id")
q.Add("tweet.fields", "created_at")
request.URL.RawQuery = q.Encode()

// Send Request
response, err := client.Do(request)
if err != nil {
log.Println(err)
return
}

var retweetedBy RetweetedBy
err = json.NewDecoder(response.Body).Decode(&retweetedBy)
if err != nil {
log.Println("err to decode json", err)
return
}
fmt.Println(retweetedBy)
}
75 changes: 75 additions & 0 deletions Tweet-Lookup/get_tweets_with_bearer_token.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package Tweet_Lookup

// Get Tweets by User ID. Using Bearer Token
// https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/introduction

import (
"encoding/json"
"fmt"
"log"
"net/http"
"os"
)

type UserTweets struct {
Data []Data `json:"data"`
Includes Includes `json:"includes"`
}
type Data struct {
Lang string `json:"lang"`
AuthorID int64 `json:"author_id"`
ID int64 `json:"id"`
Text string `json:"text"`
}
type Users struct {
ID int64 `json:"id"`
Name string `json:"name"`
Username string `json:"username"`
}
type Includes struct {
Users []Users `json:"users"`
}

func TweetLookup() {
if os.Getenv("Bearer") == "" {
log.Fatalln("set a bereaer token")
return
}

// Sets the bearer token from your environment variables
// To set environment variables on macOS or Linux, run the export command below from the terminal:
// export BEARER_TOKEN='YOUR-TOKEN'
bearerToken := os.Getenv("BEARER_TOKEN")
const url = "https://api.twitter.com/2/tweets"

client := &http.Client{}
request, createReqErr := http.NewRequest("GET", url, nil)
if createReqErr != nil {
log.Println(createReqErr)
return
}

// Add Parameters
q := request.URL.Query()
q.Add("ids", "1228393702244134912,1227640996038684673,1199786642791452673")
q.Add("tweet.fields", "lang,author_id")
q.Add("expansions", "author_id")

request.URL.RawQuery = q.Encode()

// Add Bearer Token to HTTP Header
request.Header.Set("Authorization", "Bearer "+bearerToken)

// Send Request
response, responseErr := client.Do(request)
if responseErr != nil {
log.Println(responseErr)
}

defer response.Body.Close()

var userTweets UserTweets
json.NewDecoder(response.Body).Decode(&userTweets)

fmt.Println(userTweets)
}