// GenericFileSave saves a Generic File record to Pharos. If the Generic // File's ID is zero, this performs a POST to create a new record. // For non-zero IDs, this performs a PUT to update the existing record. // Either way, the record must have an IntellectualObject ID. The response // object will have a new copy of the GenericFile if the save was successful. func (client *PharosClient) GenericFileSave(obj *models.GenericFile) *PharosResponse { // Set up the response object resp := NewPharosResponse(PharosGenericFile) resp.files = make([]*models.GenericFile, 1) // URL and method relativeUrl := fmt.Sprintf("/api/%s/files/", client.apiVersion) httpMethod := "POST" if obj.Id > 0 { // PUT URL looks like /api/v2/files/college.edu%2Fobject_name%2Ffile.xml relativeUrl = fmt.Sprintf("%s%s", relativeUrl, escapeSlashes(obj.Identifier)) httpMethod = "PUT" } absoluteUrl := client.BuildUrl(relativeUrl) // Prepare the JSON data postData, err := obj.SerializeForPharos() if err != nil { resp.Error = err } // Run the request client.DoRequest(resp, httpMethod, absoluteUrl, bytes.NewBuffer(postData)) if resp.Error != nil { return resp } // Parse the JSON from the response body gf := &models.GenericFile{} resp.Error = json.Unmarshal(resp.data, gf) if resp.Error == nil { resp.files[0] = gf } return resp }