Code coverage report for src/targets/objc/native.js

Statements: 94.29% (33 / 35)      Branches: 80% (12 / 15)      Functions: 100% (2 / 2)      Lines: 94.29% (33 / 35)      Ignored: none     

All files » src/targets/objc/ » native.js
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    1   1 7       7     7 7 7 7   7 7 7 7     7 8       7 3   3 2 2 2 1   1 1         3       7 7 7 7 7     7 7   7     1            
'use strict'
 
var util = require('util')
 
module.exports = function (source, options) {
  var opts = util._extend({
    timeout: '10'
  }, options)
 
  var code = []
 
  // Dependencies
  code.push('#import <Foundation/Foundation.h>')
  code.push(null)
  code.push('NSURLSession *session = [NSURLSession sharedSession];')
  code.push(null)
  // Create request object
  code.push('NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"' + source.fullUrl + '"]')
  code.push('                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy')
  code.push('                                                   timeoutInterval:' + parseInt(opts.timeout, 10).toFixed(1) + '];')
  code.push('[request setHTTPMethod:@"' + source.method + '"];')
 
  // Set headers
  Object.keys(source.allHeaders).sort().map(function (key) {
    code.push('[request setValue:@"' + source.allHeaders[key] + '" forHTTPHeaderField:@"' + key + '"];')
  })
 
  // Set request body
  if (source.postData && (source.postData.params || source.postData.text)) {
    code.push(null)
 
    if (source.postData.mimeType === 'application/x-www-form-urlencoded' && source.postData.params) {
      var params = source.postData.params
      code.push('NSMutableData *postData = [[NSMutableData alloc] initWithData:[@"' + params[0].name + '=' + params[0].value + '" dataUsingEncoding:NSUTF8StringEncoding]];')
      for (var i = 1, len = params.length; i < len; i++) {
        code.push('[postData appendData:[@"&' + params[i].name + '=' + params[i].value + '" dataUsingEncoding:NSUTF8StringEncoding]];')
      }
    } else Eif (source.postData.mimeType === 'application/json' && source.postData.text) {
      code.push('NSData *postData = [[NSData alloc] initWithData:[@' + JSON.stringify(source.postData.text) + ' dataUsingEncoding:NSUTF8StringEncoding]];')
    } else if (source.postData.text) {
      code.push('NSData *postData = [[NSData alloc] initWithData:[@"' + source.postData.text + '" dataUsingEncoding:NSUTF8StringEncoding]];')
    }
 
    code.push('[request setHTTPBody:postData];')
  }
 
  // Set completion block
  code.push(null)
  code.push('NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request')
  code.push('                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {')
  code.push(null)
  code.push('}];')
 
  // Start request
  code.push(null)
  code.push('[dataTask resume];')
 
  return code.join('\n')
}
 
module.exports.info = {
  key: 'native',
  title: 'NSURLSession',
  link: 'https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSURLSession_class/index.html',
  description: "Foundation's NSURLSession request"
}