summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/npm-registry-client/lib/initialize.js
blob: bd5a4caae3fe15a6beebcf5a38f388ce3b38c410 (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
var crypto = require("crypto")
var HttpAgent = require("http").Agent
var HttpsAgent = require("https").Agent

var pkg = require("../package.json")

var httpAgent = new HttpAgent({ keepAlive : true })
var httpsAgent = new HttpsAgent({ keepAlive : true })

module.exports = initialize

function initialize (uri, method, accept, headers) {
  if (!this.config.sessionToken) {
    this.config.sessionToken = crypto.randomBytes(8).toString("hex")
    this.log.verbose("request id", this.config.sessionToken)
  }

  var opts = {
    url          : uri,
    method       : method,
    headers      : headers,
    localAddress : this.config.proxy.localAddress,
    strictSSL    : this.config.ssl.strict,
    cert         : this.config.ssl.certificate,
    key          : this.config.ssl.key,
    ca           : this.config.ssl.ca
  }

  // request will not pay attention to the NOPROXY environment variable if a
  // config value named proxy is passed in, even if it's set to null.
  var proxy
  if (uri.protocol === "https:") {
    proxy = this.config.proxy.https
    opts.agent = httpsAgent
  }
  else {
    proxy = this.config.proxy.http
    opts.agent = httpAgent
  }
  if (typeof proxy === "string") opts.proxy = proxy

  headers.version = this.version || pkg.version
  headers.accept = accept

  if (this.refer) headers.referer = this.refer

  headers["npm-session"] = this.config.sessionToken
  headers["user-agent"]  = this.config.userAgent

  return opts
}