summaryrefslogtreecommitdiff
path: root/js/upload.js
blob: c1ef7f76466b0407a35a0cc15620488405f5564a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var upload = (function(){
  var el = document.getElementById("upload_input")
  var button = document.getElementById("upload_button")
  var uploading = false
  
  function upload(blob, filename, tag){
    if (uploading) return
    filename = filename || get_filename()
    tag = tag || "shader"

    button.innerHTML = "uploading..."
    button.className = "uploading"
    
    uploading = true
    
    uploadImage({
      blob: blob,
      filename: filename,
      username: user.username,
      tag: tag,
      success: function(data){

        // data.url
        // data.filesize
        // data.success

        console.log(data);
        el.style.display = "block"
        el.value = data.url
        el.focus()
        button.innerHTML = "upload"
        button.className = ""
        uploading = false
      },
      error: function(data){
        console.log(data)
        console.log("error uploading: " + data.error)
        button.innerHTML = "upload"
        button.className = ""
        uploading = false
      }
    });
  }

  function uploadImage(opt){
    if (! opt.blob || ! opt.filename) return;
  
    opt.username = opt.username || "";
    opt.success = opt.success || noop;
    opt.error = opt.error || noop;

    var form = new FormData();

    form.append("username", opt.username);
    form.append("filename", opt.filename);
    form.append("qqfile", opt.blob);
    form.append("tag", opt.tag);

    var req = new XMLHttpRequest();
    req.open("POST", "/cgi-bin/im/shader/upload");
    req.onload = function(event) {
      if (req.status == 200) {
        var res = JSON.parse(req.responseText);
        if (res.success) {
          opt.success(res);
        }
        else {
          opt.error(res);
        }      
      } else {
        opt.error({ success: false, error: req.status });
      }
    };
    req.send(form);
  }
  
  return upload
})()