code: def resp_json(resp):
      
      if isinstance(resp, flask.Response):
          if 400 <= resp.status_code < 600:
              msg = resp.status
              try:
                  result = loads(resp.data.decode("utf-8"))
                  if isinstance(result, str):
                      msg = "%s, %s" % (resp.status, result)
                  else:
                      msg = "%s %s, %s" % (
                          resp.status_code, result["error"], result["message"])
              except Exception:
                  pass
              raise requests.HTTPError(msg, response=resp)
          else:
              return loads(resp.data.decode("utf-8"))
      else:
          try:
              resp.raise_for_status()
          except requests.HTTPError as ex:
              # the response may contains {"error": "", "message": ""}
              # append error and message to exception if possible
              try:
                  result = resp.json()
                  ex.args += (result["error"], result["message"])
              except (ValueError, KeyError):
                  pass
              raise
          return resp.json()
docs: Get JSON from response if success, raise requests.HTTPError otherwise.
  
      Args:
          resp: requests.Response or flask.Response
      Retuens:
          JSON value