問題:
Google App Engine 内にて、anaconda を用いて外部APIのフェッチなどを行う際、以下のエラーとなります。
http.DefaultTransport and http.DefaultClient are not available in App Engine. See https://developers.google.com/appengine/docs/go/urlfetch/overview
App Engine のインフラでは、専用のフェッチする実装を使う必要があるようです。
解決 (http.Clientの場合)
参考:
https://cloud.google.com/appengine/docs/go/urlfetch/
http.Client の Get などを普通に使う場合は
import (
"appengine"
"appengine/urlfetch"
)
c := appengine.NewContext(r)
client := urlfetch.Client(c)
resp, err := client.Get("http://www.google.com/")
解決(外部ライブラリの場合)
でもって、外部ライブラリの場合はライブラリが使っている http.Client.Transport を appengine のものに差し替える必要があります。
tweetlib では以下の例がありますので、
https://robbycolvin.com/google-app-engine-http-default-transport/
コレを参考に
api := anaconda.NewTwitterApi("-", "-")
c := appengine.NewContext(r)
api.HttpClient.Transport = &urlfetch.Transport{Context: c}
searchResult, _ := api.GetSearch("golang", nil)
として、Transport を差し替えればよさそうです。
ライブラリ側で、 Transport や http.Client が露出している必要があり、無理そうだったら Issue やプルリクを投げるのがよさそうです。