mirror of https://github.com/fluffle/goirc
update for latest release; rewrite send
This commit is contained in:
parent
de6783169e
commit
ae1b600a2e
|
@ -7,7 +7,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"http"
|
"http"
|
||||||
"net"
|
"net"
|
||||||
"bufio"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"container/vector"
|
"container/vector"
|
||||||
"html"
|
"html"
|
||||||
|
@ -52,7 +51,7 @@ func translate(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||||
http.URLEscape(args), googleAPIKey)
|
http.URLEscape(args), googleAPIKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
response, _, err := http.Get(url)
|
response, err := http.Get(url)
|
||||||
defer response.Body.Close()
|
defer response.Body.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
say(conn, target, "%s: Error while requesting translation", nick.Nick); return
|
say(conn, target, "%s: Error while requesting translation", nick.Nick); return
|
||||||
|
@ -113,7 +112,7 @@ func roman(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||||
url := fmt.Sprintf("http://translate.google.com/translate_a/t?client=t&hl=%s&sl=%s&tl=en-US&text=%s",
|
url := fmt.Sprintf("http://translate.google.com/translate_a/t?client=t&hl=%s&sl=%s&tl=en-US&text=%s",
|
||||||
targetlang, sourcelang, http.URLEscape(args))
|
targetlang, sourcelang, http.URLEscape(args))
|
||||||
|
|
||||||
b, err := send(url)
|
b, err := getUserAgent(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
say(conn, target, "%s: Error while requesting romanization", nick.Nick); return
|
say(conn, target, "%s: Error while requesting romanization", nick.Nick); return
|
||||||
}
|
}
|
||||||
|
@ -146,7 +145,7 @@ func calc(conn *irc.Conn, nick *irc.Nick, args, target string) {
|
||||||
}
|
}
|
||||||
url := fmt.Sprintf("http://www.google.com/ig/calculator?hl=en&q=%s&key=%s", http.URLEscape(args), googleAPIKey)
|
url := fmt.Sprintf("http://www.google.com/ig/calculator?hl=en&q=%s&key=%s", http.URLEscape(args), googleAPIKey)
|
||||||
|
|
||||||
b, err := send(url)
|
b, err := getUserAgent(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
say(conn, target, "%s: Error while requesting calculation", nick.Nick); return
|
say(conn, target, "%s: Error while requesting calculation", nick.Nick); return
|
||||||
}
|
}
|
||||||
|
@ -191,35 +190,32 @@ func parseCalc(output string) string {
|
||||||
return parsed
|
return parsed
|
||||||
}
|
}
|
||||||
|
|
||||||
// please disregard the reproduction of src/pkg/http/client.go:send below
|
// make a GET request with a fake user agent
|
||||||
// it's definitely not to send a User-Agent for undocumented Google APIs
|
// this is definitely not for those undocumented Google APIs
|
||||||
func send(url string) ([]byte, os.Error) {
|
func getUserAgent(urlstr string) ([]byte, os.Error) {
|
||||||
var request http.Request
|
url, err := http.ParseURL(urlstr)
|
||||||
var err os.Error
|
|
||||||
request.URL, err = http.ParseURL(url)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
request.UserAgent = "Mozilla/5.0"
|
|
||||||
|
|
||||||
httpcon, err := net.Dial("tcp", request.URL.Host + ":" + request.URL.Scheme)
|
conn, err := net.Dial("tcp", url.Host + ":http")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer httpcon.Close()
|
|
||||||
err = request.Write(httpcon)
|
req, err := http.NewRequest("GET", urlstr, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
reader := bufio.NewReader(httpcon)
|
req.UserAgent = "Mozilla/5.0"
|
||||||
response, err := http.ReadResponse(reader, request.Method)
|
|
||||||
|
httpconn := http.NewClientConn(conn, nil)
|
||||||
|
response, err := httpconn.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
defer response.Body.Close()
|
||||||
|
|
||||||
b, err := ioutil.ReadAll(response.Body)
|
b, err := ioutil.ReadAll(response.Body)
|
||||||
if err != nil {
|
return b, err
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return b, nil
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,7 +186,7 @@ func say(conn *irc.Conn, target, message string, a ...interface{}) {
|
||||||
|
|
||||||
func youtube(conn *irc.Conn, nick *irc.Nick, video, channel string) {
|
func youtube(conn *irc.Conn, nick *irc.Nick, video, channel string) {
|
||||||
url := fmt.Sprintf("http://gdata.youtube.com/feeds/api/videos/%s?v=2", video)
|
url := fmt.Sprintf("http://gdata.youtube.com/feeds/api/videos/%s?v=2", video)
|
||||||
response, _, err := http.Get(url)
|
response, err := http.Get(url)
|
||||||
defer response.Body.Close()
|
defer response.Body.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue