aboutsummaryrefslogtreecommitdiffstats
path: root/modules/libDLImage.js
blob: 63fdcb93fbd11eae29dd4510e199e698accab381 (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
//
// libDLImage.js
//
//   libDLImage.js is code for download image data.
//   libDLImage.js is ran on ChromeWorker thread.
//
//
//   accept message:
//     {
//       'imageUrl'  :string,
//       'savePath'  :string,
//       'refererUrl':string,
//       'cookie'    :string
//     }
//
//     imageUrl   : remote image URL
//     savePath   : full path on local strage
//     refererUrl : referer string (optional)
//     cookie     : cookie string (optional)
//
//
//   send message:
//     {
//       'status'  :string,
//       'message' :JSObject,
//       'savePath':string
//     }
//
//     status   : 'normarl' or 'error'
//     message  : error message (string) or image data (binary)
//     savePath : full path on local strage
//                ( only success and same savePath on the accept message )
//
var JSONMessage;
var xhrImg;

function trueImage(){
  var instream=xhrImg.responseText;
  self.postMessage(
    {'status':'normal','message':instream,'savePath':JSONMessage.savePath}
  );
  return;
};

function falseImage(){
  self.postMessage({'status':'error','message':'IMAGE FILE ACCEPT ERROR!!'});
  return false;
};

function downloadImage(){
  xhrImg=new XMLHttpRequest();
  xhrImg.addEventListener("load",trueImage,false);
  xhrImg.addEventListener("error",falseImage,false);
  xhrImg.open("GET",JSONMessage.imageUrl,false);
  xhrImg.overrideMimeType('text/plain;charset=x-user-defined');
  if(0<JSONMessage.refererUrl.length){
    xhrImg.setRequestHeader('Referer',JSONMessage.refererUrl);
  };
  if(0<JSONMessage.cookie){
    xhrImg.setRequestHeader('Cookie',JSONMessage.cookie);
  };
  xhrImg.send(null);
};

addEventListener("message",function(event){
  JSONMessage=JSON.parse(event.data);
  if(JSONMessage.imageUrl===undefined||JSONMessage.savePath===undefined){
    self.postMessage({'status':'error','message':'PARAMETA ERROR!!'});
    return false;
  }
  downloadImage();
}, false);