gifs/api

Paddy 2014-10-17 Parent:08ec88016e2f

6:eb450538f079 Go to Latest

gifs/api/context.go

Make UsageTracker an interface, ditch the channel interface. Stop using channels to track usage. Just call functions. Make UsageTracker an interface, so there can be multiple implementations, and create the in-memory implementation.

History
     1.1 --- a/context.go	Fri Oct 17 07:20:06 2014 -0400
     1.2 +++ b/context.go	Fri Oct 17 07:21:02 2014 -0400
     1.3 @@ -1,21 +1,35 @@
     1.4  package api
     1.5  
     1.6  import (
     1.7 -	"code.google.com/p/goauth2/oauth/jwt"
     1.8 -	"code.google.com/p/google-api-go-client/storage/v1beta2"
     1.9 -	_ "github.com/go-sql-driver/mysql"
    1.10 +	"errors"
    1.11 +	"net/http"
    1.12 +
    1.13 +	"code.google.com/p/google-api-go-client/storage/v1"
    1.14 +	"github.com/golang/oauth2/google"
    1.15 +)
    1.16 +
    1.17 +var (
    1.18 +	ErrNoBucketSet    = errors.New("no bucket set")
    1.19 +	ErrNoTmpBucketSet = errors.New("no temporary bucket set")
    1.20  )
    1.21  
    1.22  type Context struct {
    1.23  	Storage      Storage
    1.24  	Datastore    Datastore
    1.25 -	UsageTracker *UsageTracker
    1.26 +	UsageTracker UsageTracker
    1.27 +	TmpBucket    string
    1.28  	Bucket       string
    1.29  	RootDomain   string
    1.30  }
    1.31  
    1.32 -func NewMemStorage() Storage {
    1.33 -	return Memstorage{}
    1.34 +func (c Context) Validate() error {
    1.35 +	if c.Bucket == "" {
    1.36 +		return ErrNoBucketSet
    1.37 +	}
    1.38 +	if c.TmpBucket == "" {
    1.39 +		return ErrNoTmpBucketSet
    1.40 +	}
    1.41 +	return nil
    1.42  }
    1.43  
    1.44  func NewMemDatastore() Datastore {
    1.45 @@ -23,19 +37,13 @@
    1.46  		collections: map[string]Collection{},
    1.47  		domains:     map[string]Domain{},
    1.48  		items:       map[string]Item{},
    1.49 -		users:       map[string]User{},
    1.50  	}
    1.51  }
    1.52  
    1.53 -func NewGCSStorage(gcsClientEmail, gcsTokenURI string, gcsPemBytes []byte) (Storage, error) {
    1.54 -	t := jwt.NewToken(gcsClientEmail, storage.DevstorageFull_controlScope, gcsPemBytes)
    1.55 -	t.ClaimSet.Aud = gcsTokenURI
    1.56 -	transport, err := jwt.NewTransport(t)
    1.57 -	if err != nil {
    1.58 -		return nil, err
    1.59 -	}
    1.60 -	client := transport.Client()
    1.61 -	gcsService, err := storage.New(client)
    1.62 +func NewGCSServiceStorage() (*GoogleCloudStorage, error) {
    1.63 +	config := google.NewComputeEngineConfig("")
    1.64 +	client := http.Client{Transport: config.NewTransport()}
    1.65 +	gcsService, err := storage.New(&client)
    1.66  	if err != nil {
    1.67  		return nil, err
    1.68  	}