|  | package quotaBucket | 
|  |  | 
|  | import ( | 
|  | "errors" | 
|  | "strings" | 
|  | ) | 
|  |  | 
|  | type QuotaBucketType interface { | 
|  | resetCount(bucket *QuotaBucket) error | 
|  | } | 
|  |  | 
|  | type SynchronousQuotaBucketType struct{} | 
|  |  | 
|  | func (sQuotaBucket SynchronousQuotaBucketType) resetCount(qBucket *QuotaBucket) error { | 
|  | //do nothing. | 
|  | return nil | 
|  | } | 
|  |  | 
|  | type AsynchronousQuotaBucketType struct{} | 
|  |  | 
|  | func (sQuotaBucket AsynchronousQuotaBucketType) resetCount(qBucket *QuotaBucket) error { | 
|  | //yet to implement | 
|  | return nil | 
|  | } | 
|  |  | 
|  | type NonDistributedQuotaBucketType struct{} | 
|  |  | 
|  | func (sQuotaBucket NonDistributedQuotaBucketType) resetCount(qBucket *QuotaBucket) error { | 
|  | //yet to implement | 
|  | return nil | 
|  | } | 
|  |  | 
|  | func GetQuotaBucketHandler(qBucket string) (QuotaBucketType, error) { | 
|  | var quotaBucketType QuotaBucketType | 
|  | qBucketType := strings.ToLower(strings.TrimSpace(qBucket)) | 
|  | switch qBucketType { | 
|  | case QuotaBucketTypeSynchronous: | 
|  | quotaBucketType = &SynchronousQuotaBucketType{} | 
|  | return quotaBucketType, nil | 
|  | case QuotaBucketTypeAsynchronous: | 
|  | quotaBucketType = &AsynchronousQuotaBucketType{} | 
|  | return quotaBucketType, nil | 
|  | case QuotaBucketTypeNonDistributed: | 
|  | quotaBucketType = &NonDistributedQuotaBucketType{} | 
|  | return quotaBucketType, nil | 
|  | default: | 
|  | return nil, errors.New("Ignoring unrecognized quota type in request: " + qBucket) | 
|  |  | 
|  | } | 
|  | } |