Advertisement
depth1

hxnodejs https post

Feb 14th, 2019
467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using StringTools;
  2.  
  3. import js.node.Https;
  4. import js.node.http.IncomingMessage;
  5. import js.node.Buffer;
  6. import js.Promise;
  7. import js.Error;
  8. import haxe.extern.EitherType;
  9.  
  10. class ExampleHttpPost
  11. {
  12.  
  13.     public static function example()
  14.     {
  15.         fetch_cookie().then(fetch_result).then(function(result:String)
  16.         {
  17.             trace('POST data : $result');
  18.         }).catchError(function(error_message:String)
  19.         {
  20.             trace('Error occured : $error_message');
  21.         });
  22.     }
  23.  
  24.     public static function fetch_cookie():Promise<String>
  25.     {
  26.         return new Promise(function(resolve, reject)
  27.         {
  28.             var data:String = '';
  29.             var cookies:Array<String>;
  30.             var cookie:String;
  31.  
  32.             var request = Https.get(
  33.             {
  34.                 protocol: 'https:',
  35.                 method:   'GET',
  36.                 host:     'example.com',
  37.                 path:     '/api'
  38.             },
  39.             function(input:IncomingMessage)
  40.             {
  41.                 cookies = input.headers['set-cookie'];
  42.  
  43.                 if(cookies == null)
  44.                 {
  45.                     reject('HTTP header \'Set-cookie\' was not recovered ¯\\_(ツ)_/¯');
  46.                 }
  47.                 else
  48.                 {
  49.                     cookie = cookies.join(';');
  50.  
  51.                     resolve(cookie);
  52.                 }
  53.             });
  54.  
  55.             request.on('error', function(error:Error)
  56.             {
  57.                 reject(error.message);
  58.             });
  59.         });
  60.     }
  61.  
  62.     public static function fetch_result(cookie:String):Promise<String>
  63.     {
  64.         return new Promise(function(resolve, reject)
  65.         {
  66.             var data:String = '';
  67.  
  68.             var request = Https.request(
  69.             {
  70.                 protocol: 'https:',
  71.                 method:   'POST',
  72.                 host:     'example.com',
  73.                 path:     '/api',
  74.                 headers:
  75.                 {
  76.                     'Content-Type' : 'application/x-www-form-urlencoded',
  77.                     'Cookie' : cookie
  78.                 }
  79.             },function(input:IncomingMessage)
  80.             {
  81.                 if(input.statusCode != 200) reject('status != 200, status = ${input.statusCode}');
  82.  
  83.                 input.on('data', function(chunk:EitherType<Buffer, String>)
  84.                 {
  85.                     data += chunk;
  86.                 });
  87.  
  88.                 input.on('end', function()
  89.                 {
  90.                     resolve(data);
  91.                 });
  92.             });
  93.  
  94.             request.on('error', function(error:Error)
  95.             {
  96.                 reject(error);
  97.             });
  98.  
  99.             request.write('param=a', function()
  100.             {
  101.                 request.end();
  102.             });
  103.         });
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement