本文整理汇总了Golang中github.com/ARGOeu/argo-web-api/respond.MarshalContent函数的典型用法代码示例。如果您正苦于以下问题:Golang MarshalContent函数的具体用法?Golang MarshalContent怎么用?Golang MarshalContent使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MarshalContent函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: List
// List existing recomputations
func List(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
// contentType := "application/json"
charset := "utf-8"
//STANDARD DECLARATIONS END
urlValues := r.URL.Query()
contentType := r.Header.Get("Accept")
contentType, err = respond.ParseAcceptHeader(r)
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
if err != nil {
code = http.StatusNotAcceptable
output, _ = respond.MarshalContent(respond.NotAcceptableContentType, contentType, "", " ")
return code, h, output, err
}
tenantDbConfig, err := authentication.AuthenticateTenant(r.Header, cfg)
if err != nil {
output, _ = respond.MarshalContent(respond.UnauthorizedMessage, contentType, "", " ")
code = http.StatusUnauthorized //If wrong api key is passed we return UNAUTHORIZED http status
return code, h, output, err
}
filter := IncomingRecomputation{
StartTime: urlValues.Get("start_time"),
EndTime: urlValues.Get("end_time"),
Reason: urlValues.Get("reason"),
Report: urlValues.Get("report"),
}
session, err := mongo.OpenSession(tenantDbConfig)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
results := []MongoInterface{}
err = mongo.Find(session, tenantDbConfig.Db, recomputationsColl, filter, "timestamp", &results)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
output, err = createListView(results, contentType)
return code, h, output, err
}
示例2: ListOne
// ListOne handles the listing of one specific profile based on its given id
func ListOne(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
charset := "utf-8"
//STANDARD DECLARATIONS END
// Set Content-Type response Header value
contentType := r.Header.Get("Accept")
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
vars := mux.Vars(r)
// Grab Tenant DB configuration from context
tenantDbConfig := context.Get(r, "tenant_conf").(config.MongoConfig)
// Open session to tenant database
session, err := mongo.OpenSession(tenantDbConfig)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
filter := bson.M{"id": vars["ID"]}
// Retrieve Results from database
results := []MongoInterface{}
err = mongo.Find(session, tenantDbConfig.Db, "metric_profiles", filter, "name", &results)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
// Check if nothing found
if len(results) < 1 {
output, _ = respond.MarshalContent(respond.NotFound, contentType, "", " ")
code = 404
return code, h, output, err
}
// Create view of the results
output, err = createListView(results, "Success", code) //Render the results into JSON
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
示例3: List
// List returns a list of factors (weights) per endpoint group (i.e. site)
func List(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
contentType := "text/xml"
charset := "utf-8"
//STANDARD DECLARATIONS END
contentType, err = respond.ParseAcceptHeader(r)
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
if err != nil {
code = http.StatusNotAcceptable
output, _ = respond.MarshalContent(respond.NotAcceptableContentType, contentType, "", " ")
return code, h, output, err
}
tenantDbConfig, err := authentication.AuthenticateTenant(r.Header, cfg)
if err != nil {
output = []byte(http.StatusText(http.StatusUnauthorized))
code = http.StatusUnauthorized //If wrong api key is passed we return UNAUTHORIZED http status
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
session, err := mongo.OpenSession(tenantDbConfig)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
defer mongo.CloseSession(session)
results := []FactorsOutput{}
err = mongo.Find(session, tenantDbConfig.Db, "weights", nil, "name", &results)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
output, err = createView(results, contentType) //Render the results into XML format
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
mongo.CloseSession(session)
return code, h, output, err
}
示例4: ReportNotFound
// ReportNotFound consructs marshals a response struct when the requested
// report is not found
func ReportNotFound(contentType string) ([]byte, error) {
docRoot := respond.ResponseMessage{
Status: respond.StatusResponse{
Message: "Report Not Found",
Code: "404",
},
}
output, err := respond.MarshalContent(docRoot, contentType, "", " ")
return output, err
}
示例5: createMessageOUT
func createMessageOUT(message string, format string) ([]byte, error) {
output := []byte("message placeholder")
err := error(nil)
docRoot := &messageOUT{}
docRoot.Message = message
output, err = respond.MarshalContent(docRoot, format, "", " ")
return output, err
}
示例6: Create
//Create a new metric profile
func Create(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
charset := "utf-8"
//STANDARD DECLARATIONS END
// Set Content-Type response Header value
contentType := r.Header.Get("Accept")
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
// Grab Tenant DB configuration from context
tenantDbConfig := context.Get(r, "tenant_conf").(config.MongoConfig)
session, err := mongo.OpenSession(tenantDbConfig)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
incoming := MongoInterface{}
// Try ingest request body
body, err := ioutil.ReadAll(io.LimitReader(r.Body, cfg.Server.ReqSizeLimit))
if err != nil {
panic(err)
}
if err := r.Body.Close(); err != nil {
panic(err)
}
// Parse body json
if err := json.Unmarshal(body, &incoming); err != nil {
output, _ = respond.MarshalContent(respond.BadRequestBadJSON, contentType, "", " ")
code = 400
return code, h, output, err
}
// Generate new id
incoming.ID = mongo.NewUUID()
err = mongo.Insert(session, tenantDbConfig.Db, "metric_profiles", incoming)
if err != nil {
panic(err)
}
// Create view of the results
output, err = createRefView(incoming, "Metric Profile successfully created", 201, r) //Render the results into JSON
code = 201
return code, h, output, err
}
示例7: createView
func createView(results []DataOutput, input InputParams) ([]byte, error) {
output := []byte("reponse output")
err := error(nil)
docRoot := &rootOUT{}
if len(results) == 0 {
if strings.EqualFold(input.format, "application/json") {
output, err = json.MarshalIndent(docRoot, " ", " ")
} else {
output, err = xml.MarshalIndent(docRoot, " ", " ")
}
return output, err
}
prevEndpointGroup := ""
prevService := ""
var ppEndpointGroup *endpointGroupOUT
var ppService *serviceOUT
for _, row := range results {
if row.EndpointGroup != prevEndpointGroup && row.EndpointGroup != "" {
endpointGroup := &endpointGroupOUT{}
endpointGroup.Name = row.EndpointGroup
endpointGroup.GroupType = input.groupType
docRoot.EndpointGroups = append(docRoot.EndpointGroups, endpointGroup)
prevEndpointGroup = row.EndpointGroup
ppEndpointGroup = endpointGroup
}
if row.Service != prevService && row.Service != "" {
service := &serviceOUT{}
service.Name = row.Service
service.GroupType = "service"
ppEndpointGroup.Services = append(ppEndpointGroup.Services, service)
prevService = row.Service
ppService = service
}
status := &statusOUT{}
status.Timestamp = row.Timestamp
status.Value = row.Status
ppService.Statuses = append(ppService.Statuses, status)
}
output, err = respond.MarshalContent(docRoot, input.format, "", " ")
return output, err
}
示例8: createView
func createView(results interface{}, format string) ([]byte, error) {
docRoot := &respond.ResponseMessage{
Status: respond.StatusResponse{
Message: "Success",
Code: "200",
},
}
docRoot.Data = &results
output, err := respond.MarshalContent(docRoot, format, "", " ")
// output, err := xml.MarshalIndent(docRoot, "", " ")
return output, err
}
示例9: List
// List returns a list of factors (weights) per endpoint group (i.e. site)
func List(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
contentType := "text/xml"
charset := "utf-8"
//STANDARD DECLARATIONS END
contentType, err = respond.ParseAcceptHeader(r)
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
if err != nil {
code = http.StatusNotAcceptable
output, _ = respond.MarshalContent(respond.NotAcceptableContentType, contentType, "", " ")
return code, h, output, err
}
// Grab Tenant DB configuration from context
tenantDbConfig := context.Get(r, "tenant_conf").(config.MongoConfig)
session, err := mongo.OpenSession(tenantDbConfig)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
defer mongo.CloseSession(session)
results := []FactorsOutput{}
err = mongo.Find(session, tenantDbConfig.Db, "weights", nil, "name", &results)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
output, err = createView(results, contentType) //Render the results into XML format
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
mongo.CloseSession(session)
return code, h, output, err
}
示例10: SubmitSuccesful
// SubmitSuccesful marshals a response struct when a report is successfully inserted in the
// database
func SubmitSuccesful(inserted MongoInterface, contentType string, link string) ([]byte, error) {
docRoot := respond.ResponseMessage{
Status: respond.StatusResponse{
Message: "Successfully Created Report",
Code: "201",
},
Data: respond.SelfReference{
ID: inserted.ID,
Links: respond.SelfLinks{Self: link},
},
}
output, err := respond.MarshalContent(docRoot, contentType, "", " ")
return output, err
}
示例11: createView
// createView returns an XML view of the results to the controller
func createView(results []FactorsOutput, format string) ([]byte, error) {
docRoot := &root{}
for _, row := range results {
f := &Factor{}
f.Site = row.Site
f.Weight = fmt.Sprintf("%g", row.Weight)
docRoot.Factor = append(docRoot.Factor, f)
}
output, err := respond.MarshalContent(docRoot, format, "", " ")
return output, err
}
示例12: routeCheckGroup
func routeCheckGroup(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("group check")
err := error(nil)
charset := "utf-8"
//STANDARD DECLARATIONS END
// Handle response format based on Accept Header
contentType := r.Header.Get("Accept")
vars := mux.Vars(r)
// Grab Tenant DB configuration from context
tenantcfg := context.Get(r, "tenant_conf").(config.MongoConfig)
session, err := mongo.OpenSession(tenantcfg)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
output, _ = respond.MarshalContent(respond.InternalServerErrorMessage, contentType, "", " ")
return code, h, output, err
}
result := reports.MongoInterface{}
err = mongo.FindOne(session, tenantcfg.Db, "reports", bson.M{"info.name": vars["report_name"]}, &result)
if err != nil {
code = http.StatusNotFound
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createMessageOUT(message, code, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
if vars["group_type"] != result.GetEndpointGroupType() {
code = http.StatusNotFound
message := "The report " + vars["report_name"] + " does not define endpoint group type: " + vars["group_type"]
output, err := createMessageOUT(message, code, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
return ListMetricTimelines(r, cfg)
}
示例13: ListServiceFlavorResults
// ListServiceFlavorResults is responsible for handling request to list service flavor results
func ListServiceFlavorResults(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
contentType := "application/xml"
charset := "utf-8"
//STANDARD DECLARATIONS END
contentType, err = respond.ParseAcceptHeader(r)
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
if err != nil {
code = http.StatusNotAcceptable
output, _ = respond.MarshalContent(respond.NotAcceptableContentType, contentType, "", " ")
return code, h, output, err
}
// Parse the request into the input
urlValues := r.URL.Query()
vars := mux.Vars(r)
tenantDbConfig, err := authentication.AuthenticateTenant(r.Header, cfg)
if err != nil {
if err.Error() == "Unauthorized" {
code = http.StatusUnauthorized
out := respond.UnauthorizedMessage
output = out.MarshalTo(contentType)
return code, h, output, err
}
code = http.StatusInternalServerError
return code, h, output, err
}
session, err := mongo.OpenSession(tenantDbConfig)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
report := reports.MongoInterface{}
err = mongo.FindOne(session, tenantDbConfig.Db, "reports", bson.M{"info.name": vars["report_name"]}, &report)
if err != nil {
code = http.StatusBadRequest
message := "The report with the name " + vars["report_name"] + " does not exist"
output, err := createErrorMessage(message, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
input := serviceFlavorResultQuery{
basicQuery: basicQuery{
Name: vars["service_type"],
Granularity: urlValues.Get("granularity"),
Format: contentType,
StartTime: urlValues.Get("start_time"),
EndTime: urlValues.Get("end_time"),
Report: report,
Vars: vars,
},
EndpointGroup: vars["lgroup_name"],
}
tenantDB := session.DB(tenantDbConfig.Db)
errs := input.Validate(tenantDB)
if len(errs) > 0 {
out := respond.BadRequestSimple
out.Errors = errs
output = out.MarshalTo(contentType)
code = 400
return code, h, output, err
}
if vars["lgroup_type"] != report.GetEndpointGroupType() {
code = http.StatusBadRequest
message := "The report " + vars["report_name"] + " does not define endpoint group type: " + vars["lgroup_type"] + ". Try using " + report.GetEndpointGroupType() + " instead."
output, err := createErrorMessage(message, contentType) //Render the response into XML or JSON
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}
results := []ServiceFlavorInterface{}
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
// Construct the query to mongodb based on the input
filter := bson.M{
"date": bson.M{"$gte": input.StartTimeInt, "$lte": input.EndTimeInt},
"report": report.ID,
}
if input.Name != "" {
//.........这里部分代码省略.........
示例14: createView
func createView(results []DataOutput, input InputParams) ([]byte, error) {
output := []byte("reponse output")
err := error(nil)
docRoot := &rootOUT{}
if len(results) == 0 {
if strings.EqualFold(input.format, "application/json") {
output, err = json.MarshalIndent(docRoot, " ", " ")
} else {
output, err = xml.MarshalIndent(docRoot, " ", " ")
}
return output, err
}
prevHostname := ""
prevMetric := ""
prevEndpointGroup := ""
prevService := ""
var ppHost *endpointOUT
var ppMetric *metricOUT
var ppEndpointGroup *endpointGroupOUT
var ppService *serviceOUT
for _, row := range results {
if row.EndpointGroup != prevEndpointGroup && row.EndpointGroup != "" {
endpointGroup := &endpointGroupOUT{}
endpointGroup.Name = row.EndpointGroup
endpointGroup.GroupType = input.groupType
docRoot.EndpointGroups = append(docRoot.EndpointGroups, endpointGroup)
prevEndpointGroup = row.EndpointGroup
ppEndpointGroup = endpointGroup
}
if row.Service != prevService && row.Service != "" {
service := &serviceOUT{}
service.Name = row.Service
service.GroupType = "service"
ppEndpointGroup.Services = append(ppEndpointGroup.Services, service)
prevService = row.Service
ppService = service
}
if row.Hostname != prevHostname && row.Hostname != "" {
host := &endpointOUT{} //create new host
host.Name = row.Hostname
ppService.Endpoints = append(ppService.Endpoints, host)
prevHostname = row.Hostname
ppHost = host
}
if row.Metric != prevMetric {
metric := &metricOUT{}
//Add the prev status as the firstone
metric.Name = row.Metric
ppHost.Metrics = append(ppHost.Metrics, metric)
prevMetric = row.Metric
ppMetric = metric
prevStatus := &statusOUT{}
prevStatus.Timestamp = row.PrevTimestamp
prevStatus.Value = row.PrevStatus
ppMetric.Statuses = append(ppMetric.Statuses, prevStatus)
}
status := &statusOUT{}
status.Timestamp = row.Timestamp
status.Value = row.Status
ppMetric.Statuses = append(ppMetric.Statuses, status)
}
output, err = respond.MarshalContent(docRoot, input.format, "", " ")
return output, err
}
示例15: List
// List the existing metric profiles for the tenant making the request
// Also there is an optional url param "name" to filter results by
func List(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) {
//STANDARD DECLARATIONS START
code := http.StatusOK
h := http.Header{}
output := []byte("")
err := error(nil)
contentType := "text/xml"
charset := "utf-8"
//STANDARD DECLARATIONS END
// Content Negotiation
contentType, err = respond.ParseAcceptHeader(r)
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
if err != nil {
code = http.StatusNotAcceptable
output, _ = respond.MarshalContent(respond.NotAcceptableContentType, contentType, "", " ")
return code, h, output, err
}
urlValues := r.URL.Query()
// Tenant Authentication
tenantDbConfig, err := authentication.AuthenticateTenant(r.Header, cfg)
if err != nil {
output, _ = respond.MarshalContent(respond.UnauthorizedMessage, contentType, "", " ")
code = http.StatusUnauthorized //If wrong api key is passed we return UNAUTHORIZED http status
return code, h, output, err
}
// Open session to tenant database
session, err := mongo.OpenSession(tenantDbConfig)
defer mongo.CloseSession(session)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
// Retrieve Results from database
var filter interface{}
if len(urlValues["name"]) > 0 {
filter = bson.M{"name": urlValues["name"][0]}
} else {
filter = nil
}
results := []MongoInterface{}
err = mongo.Find(session, tenantDbConfig.Db, "metric_profiles", filter, "name", &results)
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
// Create view of the results
output, err = createListView(results, "Success", code) //Render the results into JSON
if err != nil {
code = http.StatusInternalServerError
return code, h, output, err
}
h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset))
return code, h, output, err
}