/
writer_twitter.go
38 lines (30 loc) · 922 Bytes
/
writer_twitter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
import (
"log"
"net/url"
"regexp"
"github.com/ChimeraCoder/anaconda"
)
type Twitter struct {
api *anaconda.TwitterApi
}
func NewTwitter(consumerKey, consumerSecret, accessToken, accessTokenSecret string) (*Twitter, error) {
t := &Twitter{}
anaconda.SetConsumerKey(consumerKey)
anaconda.SetConsumerSecret(consumerSecret)
t.api = anaconda.NewTwitterApi(accessToken, accessTokenSecret)
_, err := t.api.VerifyCredentials()
return t, err
}
func (t Twitter) Write(str []byte) (int, error) {
log.Printf("Before hashing: %q", string(str))
tweet := prependHashes(string(str))
log.Printf("Tweeting: %q", tweet)
t.api.PostTweet(tweet, url.Values{})
return len(str), nil
}
// Begins with uppercase letter, then many upper-lower-numeric-slash
var acronym = regexp.MustCompile(`\b([A-Z][a-zA-Z0-9/]*[A-Z0-9]+)`)
func prependHashes(str string) string {
return acronym.ReplaceAllString(str, "#$1")
}