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 // This is the input we will receive from the API urlValues := r.URL.Query() input := ApiNgiAvailabilityInProfileInput{ urlValues.Get("start_time"), urlValues.Get("end_time"), urlValues.Get("availability_profile"), urlValues.Get("granularity"), urlValues.Get("infrastructure"), urlValues.Get("production"), urlValues.Get("monitored"), urlValues.Get("certification"), urlValues.Get("format"), urlValues["group_name"], } if len(input.Infrastructure) == 0 { input.Infrastructure = "Production" } if len(input.Production) == 0 || input.Production == "true" { input.Production = "Y" } else { input.Production = "N" } if len(input.Monitored) == 0 || input.Monitored == "true" { input.Monitored = "Y" } else { input.Monitored = "N" } if len(input.Certification) == 0 { input.Certification = "Certified" } if strings.ToLower(input.format) == "json" { contentType = "application/json" } found, output := caches.HitCache("ngis", input, cfg) h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) if found { return code, h, output, err } session, err := mongo.OpenSession(cfg) if err != nil { code = http.StatusInternalServerError return code, h, output, err } results := []ApiNgiAvailabilityInProfileOutput{} // Select the granularity of the search daily/monthly if len(input.Granularity) == 0 || strings.ToLower(input.Granularity) == "daily" { CustomForm[0] = "20060102" CustomForm[1] = "2006-01-02" query := Daily(input) err = mongo.Pipe(session, "AR", "sites", query, &results) } else if strings.ToLower(input.Granularity) == "monthly" { CustomForm[0] = "200601" CustomForm[1] = "2006-01" query := Monthly(input) err = mongo.Pipe(session, "AR", "sites", query, &results) } if err != nil { code = http.StatusInternalServerError return code, h, output, err } output, err = createView(results, input.format) if err != nil { code = http.StatusInternalServerError return code, h, output, err } if len(results) > 0 { caches.WriteCache("ngis", input, output, cfg) } mongo.CloseSession(session) return code, h, output, err }
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 // This is the input we will receive from the API urlValues := r.URL.Query() input := ApiSFAvailabilityInProfileInput{ urlValues.Get("start_time"), urlValues.Get("end_time"), urlValues.Get("profile"), urlValues.Get("granularity"), urlValues.Get("format"), urlValues["flavor"], urlValues["site"], } if strings.ToLower(input.format) == "json" { contentType = "application/json" } h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) found, output := caches.HitCache("sf", input, cfg) if found { return code, h, output, err } session, err := mongo.OpenSession(cfg) if err != nil { code = http.StatusInternalServerError return code, h, output, err } results := []ApiSFAvailabilityInProfileOutput{} if len(input.granularity) == 0 || strings.ToLower(input.granularity) == "daily" { customForm[0] = "20060102" customForm[1] = "2006-01-02" query := Daily(input) err = mongo.Pipe(session, "AR", "sfreports", query, &results) } else if strings.ToLower(input.granularity) == "monthly" { customForm[0] = "200601" customForm[1] = "2006-01" query := Monthly(input) err = mongo.Pipe(session, "AR", "sfreports", query, &results) } if err != nil { code = http.StatusInternalServerError return code, h, output, err } output, err = createView(results, input.format) if err != nil { code = http.StatusInternalServerError return code, h, output, err } if len(results) > 0 { caches.WriteCache("sf", input, output, cfg) } mongo.CloseSession(session) return code, h, output, err }