content: /*
   * Copyright (C) 2015 Actor LLC. <https://actor.im>
   */
  
  package im.actor.runtime.js;
  
  import java.util.HashMap;
  
  import im.actor.runtime.Crypto;
  import im.actor.runtime.FileSystemRuntime;
  import im.actor.runtime.files.FileSystemReference;
  import im.actor.runtime.js.fs.JsBlob;
  import im.actor.runtime.js.fs.JsFileSystemReference;
  
  public class JsFileSystemProvider implements FileSystemRuntime {
  
      private HashMap<String, JsBlob> files = new HashMap<String, JsBlob>();
  
      public String registerUploadFile(JsBlob file) {
          String res = "file://" + Crypto.hex(Crypto.randomBytes(16));
          files.put(res, file);
          return res;
      }
  
      public String registerMemoryFile(byte[] content) {
          String res = "memory://" + Crypto.hex(Crypto.randomBytes(16));
          files.put(res, JsBlob.createBlob(content));
          return res;
      }
  
      @Override
      public FileSystemReference createTempFile() {
          throw new RuntimeException("Unsupported operation");
      }
  
      @Override
      public FileSystemReference commitTempFile(FileSystemReference sourceFile, long fileId, String fileName) {
          throw new RuntimeException("Unsupported operation");
      }
  
      @Override
      public boolean isFsPersistent() {
          return false;
      }
      
      @Override
      public FileSystemReference fileFromDescriptor(String descriptor) {
          if (files.containsKey(descriptor)) {
              return new JsFileSystemReference(files.get(descriptor), descriptor);
          }
          return null;
      }
  }
  