mirror of
https://github.com/pgsty/minio.git
synced 2026-08-12 09:40:28 +03:00
api: Implement bucket notification. (#2271)
* Implement basic S3 notifications through queues Supports multiple queues and three basic queue types: 1. NilQueue -- messages don't get sent anywhere 2. LogQueue -- messages get logged 3. AmqpQueue -- messages are sent to an AMQP queue * api: Implement bucket notification. Supports two different queue types - AMQP - ElasticSearch. * Add support for redis
This commit is contained in:
committed by
Anand Babu (AB) Periasamy
parent
f85d94288d
commit
f248089523
+100
@@ -0,0 +1,100 @@
|
||||
// Copyright 2012-2015 Oliver Eilhard. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-license.
|
||||
// See http://olivere.mit-license.org/license.txt for details.
|
||||
|
||||
package elastic
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
// SuggestField can be used by the caller to specify a suggest field
|
||||
// at index time. For a detailed example, see e.g.
|
||||
// http://www.elasticsearch.org/blog/you-complete-me/.
|
||||
type SuggestField struct {
|
||||
inputs []string
|
||||
output *string
|
||||
payload interface{}
|
||||
weight int
|
||||
contextQueries []SuggesterContextQuery
|
||||
}
|
||||
|
||||
func NewSuggestField() *SuggestField {
|
||||
return &SuggestField{weight: -1}
|
||||
}
|
||||
|
||||
func (f *SuggestField) Input(input ...string) *SuggestField {
|
||||
if f.inputs == nil {
|
||||
f.inputs = make([]string, 0)
|
||||
}
|
||||
f.inputs = append(f.inputs, input...)
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *SuggestField) Output(output string) *SuggestField {
|
||||
f.output = &output
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *SuggestField) Payload(payload interface{}) *SuggestField {
|
||||
f.payload = payload
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *SuggestField) Weight(weight int) *SuggestField {
|
||||
f.weight = weight
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *SuggestField) ContextQuery(queries ...SuggesterContextQuery) *SuggestField {
|
||||
f.contextQueries = append(f.contextQueries, queries...)
|
||||
return f
|
||||
}
|
||||
|
||||
// MarshalJSON encodes SuggestField into JSON.
|
||||
func (f *SuggestField) MarshalJSON() ([]byte, error) {
|
||||
source := make(map[string]interface{})
|
||||
|
||||
if f.inputs != nil {
|
||||
switch len(f.inputs) {
|
||||
case 1:
|
||||
source["input"] = f.inputs[0]
|
||||
default:
|
||||
source["input"] = f.inputs
|
||||
}
|
||||
}
|
||||
|
||||
if f.output != nil {
|
||||
source["output"] = *f.output
|
||||
}
|
||||
|
||||
if f.payload != nil {
|
||||
source["payload"] = f.payload
|
||||
}
|
||||
|
||||
if f.weight >= 0 {
|
||||
source["weight"] = f.weight
|
||||
}
|
||||
|
||||
switch len(f.contextQueries) {
|
||||
case 0:
|
||||
case 1:
|
||||
src, err := f.contextQueries[0].Source()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
source["context"] = src
|
||||
default:
|
||||
var ctxq []interface{}
|
||||
for _, query := range f.contextQueries {
|
||||
src, err := query.Source()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ctxq = append(ctxq, src)
|
||||
}
|
||||
source["context"] = ctxq
|
||||
}
|
||||
|
||||
return json.Marshal(source)
|
||||
}
|
||||
Reference in New Issue
Block a user