check_objects.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import urllib
  2. import urllib2
  3. import json
  4. import random
  5. import hashlib
  6. def to_recompile(address, files):
  7. username = str(random.random())
  8. files = sorted(files)
  9. rebuild = []
  10. def flush_data(data):
  11. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username}))).read()
  12. # Create new user
  13. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"%s"' % username, "username": "user_manager"}))).read()
  14. data = []
  15. for f in files:
  16. data.extend([3, "is_defined", f])
  17. flush_data(data)
  18. md5_values = {}
  19. for f in files:
  20. md5 = hashlib.md5()
  21. md5.update(open(f, 'r').read())
  22. md5_values[f] = md5.hexdigest()
  23. for f in files:
  24. v = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()
  25. mv_md5 = json.loads(v)
  26. if md5_values[f] == mv_md5:
  27. # Identical, so don't rebuild
  28. pass
  29. print("[CACHE] %s" % f)
  30. else:
  31. # Different, so rebuild
  32. rebuild.append(f)
  33. # Remove user again
  34. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "value": '"__%s"' % username, "username": "user_manager"}))).read()
  35. return rebuild