79 lines
2.2 KiB
Go
79 lines
2.2 KiB
Go
package http
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
|
|
platform "github.com/influxdata/influxdb"
|
|
)
|
|
|
|
const (
|
|
// OrgID is the http query parameter to specify an organization by ID.
|
|
OrgID = "orgID"
|
|
// Org is the http query parameter that take either the ID or Name interchangeably
|
|
Org = "org"
|
|
// BucketID is the http query parameter to specify an bucket by ID.
|
|
BucketID = "bucketID"
|
|
// Bucket is the http query parameter take either the ID or Name interchangably
|
|
Bucket = "bucket"
|
|
)
|
|
|
|
// queryOrganization returns the organization for any http request.
|
|
//
|
|
// It checks the org= and then orgID= parameter of the request.
|
|
//
|
|
// This will try to find the organization using an ID string or
|
|
// the name. It interprets the &org= parameter as either the name
|
|
// or the ID.
|
|
func queryOrganization(ctx context.Context, r *http.Request, svc platform.OrganizationService) (o *platform.Organization, err error) {
|
|
|
|
filter := platform.OrganizationFilter{}
|
|
|
|
if organization := r.URL.Query().Get(Org); organization != "" {
|
|
if id, err := platform.IDFromString(organization); err == nil {
|
|
filter.ID = id
|
|
} else {
|
|
filter.Name = &organization
|
|
}
|
|
}
|
|
|
|
if reqID := r.URL.Query().Get(OrgID); reqID != "" {
|
|
filter.ID, err = platform.IDFromString(reqID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return svc.FindOrganization(ctx, filter)
|
|
}
|
|
|
|
// queryBucket returns the bucket for any http request.
|
|
//
|
|
// It checks the bucket= and then bucketID= parameter of the request.
|
|
//
|
|
// This will try to find the bucket using an ID string or
|
|
// the name. It interprets the &bucket= parameter as either the name
|
|
// or the ID.
|
|
func queryBucket(ctx context.Context, r *http.Request, svc platform.BucketService) (b *platform.Bucket, err error) {
|
|
filter := platform.BucketFilter{}
|
|
if bucket := r.URL.Query().Get(Bucket); bucket != "" {
|
|
if id, err := platform.IDFromString(bucket); err == nil {
|
|
filter.ID = id
|
|
} else {
|
|
filter.Name = &bucket
|
|
}
|
|
}
|
|
if reqID := r.URL.Query().Get(BucketID); reqID != "" {
|
|
filter.ID, err = platform.IDFromString(reqID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
if filter.ID == nil && filter.Name == nil {
|
|
return nil, &platform.Error{
|
|
Code: platform.EInvalid,
|
|
Msg: "Please provide either bucketID or bucket",
|
|
}
|
|
}
|
|
return svc.FindBucket(ctx, filter)
|
|
}
|