MCPcopy Create free account
hub / github.com/internetarchive/openlibrary / POST

Method POST

openlibrary/plugins/importapi/code.py:168–199  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

166 raise web.HTTPError("400 Bad Request", data=json.dumps(content))
167
168 def POST(self):
169 web.header("Content-Type", "application/json")
170 if not can_write():
171 raise web.HTTPError("403 Forbidden")
172
173 i = web.input()
174 preview = i.get("preview") == "true"
175 data = web.data()
176
177 try:
178 edition, _ = parse_data(data)
179
180 except (DataError, json.JSONDecodeError) as e:
181 return self.error(str(e), "Failed to parse import data")
182 except ValidationError as e:
183 return self.error("invalid-value", str(e).replace("\n", ": "))
184
185 if not edition:
186 return self.error("unknown-error", "Failed to parse import data")
187
188 try:
189 reply = add_book.load(edition, save=not preview)
190 # TODO: If any records have been created, return a 201, otherwise 200
191 return json.dumps(reply)
192 except add_book.RequiredFields as e:
193 return self.error("missing-required-field", str(e))
194 except ClientException as e:
195 return self.error("bad-request", **json.loads(e.json))
196 except TypeError as e:
197 return self.error("type-error", repr(e))
198 except Exception as e:
199 return self.error("unhandled-exception", repr(e))
200
201
202def raise_non_book_marc(marc_record, **kwargs):

Callers

nothing calls this directly

Calls 7

errorMethod · 0.95
can_writeFunction · 0.90
parse_dataFunction · 0.85
dumpsMethod · 0.80
loadsMethod · 0.80
getMethod · 0.45
loadMethod · 0.45

Tested by

no test coverage detected