Module: NetSuite::Configuration

Extended by:
Configuration
Included in:
Configuration
Defined in:
lib/netsuite/configuration.rb

Instance Method Summary collapse

Instance Method Details

#account(account = nil) ⇒ Object



245
246
247
248
249
250
251
# File 'lib/netsuite/configuration.rb', line 245

def ( = nil)
  if 
    self. = 
  else
    attributes[:account]
  end
end

#account=(account) ⇒ Object



241
242
243
# File 'lib/netsuite/configuration.rb', line 241

def account=()
  attributes[:account] = 
end

#api_version(version = nil) ⇒ Object



78
79
80
81
82
83
84
# File 'lib/netsuite/configuration.rb', line 78

def api_version(version = nil)
  if version
    self.api_version = version
  else
    attributes[:api_version] ||= '2015_1'
  end
end

#api_version=(version) ⇒ Object



86
87
88
# File 'lib/netsuite/configuration.rb', line 86

def api_version=(version)
  attributes[:api_version] = version
end

#attributesObject



12
13
14
# File 'lib/netsuite/configuration.rb', line 12

def attributes
  @attributes ||= {}
end

#auth_header(credentials = {}) ⇒ Object



153
154
155
156
157
158
159
# File 'lib/netsuite/configuration.rb', line 153

def auth_header(credentials={})
  if !credentials[:consumer_key].blank? || !consumer_key.blank?
    token_auth(credentials)
  else
    user_auth(credentials)
  end
end

#cache_wsdl(client) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/netsuite/configuration.rb', line 66

def cache_wsdl(client)
  # NOTE the Savon::Client doesn't pull the wsdl content upon
  # instantiation; it pulls it when it recieves the #call method.
  # If we force it to pull the wsdl here, it will duplicate the call later.
  # So, we stash the entire client and fetch just the wsdl from it after
  # it completes its call
  # For reference, see:
  # https://github.com/savonrb/savon/blob/d64925d3add33fa5531577ce9e3a28a7a93618b1/lib/savon/client.rb#L35-L37
  # https://github.com/savonrb/savon/blob/d64925d3add33fa5531577ce9e3a28a7a93618b1/lib/savon/operation.rb#L22
  wsdl_cache[[api_version, wsdl]] ||= client
end

#cached_wsdlObject



57
58
59
60
61
62
63
64
# File 'lib/netsuite/configuration.rb', line 57

def cached_wsdl
  cached = wsdl_cache.fetch([api_version, wsdl], nil)
  if cached.is_a? String
    cached
  elsif cached.is_a? Savon::Client
    wsdl_cache[[api_version, wsdl]] = cached.instance_eval { @wsdl.xml }
  end
end

#clear_wsdl_cacheObject



53
54
55
# File 'lib/netsuite/configuration.rb', line 53

def clear_wsdl_cache
  @wsdl_cache = {}
end

#connection(params = {}, credentials = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/netsuite/configuration.rb', line 16

def connection(params={}, credentials={})
  client = Savon.client({
    wsdl: cached_wsdl || wsdl,
    read_timeout: read_timeout,
    namespaces: namespaces,
    soap_header: auth_header(credentials).update(soap_header),
    pretty_print_xml: true,
    filters: filters,
    logger: logger,
    log_level: log_level,
    log: !silent, # turn off logging entirely if configured
  }.update(params))
  cache_wsdl(client)
  return client
end

#consumer_key(consumer_key = nil) ⇒ Object



257
258
259
260
261
262
263
# File 'lib/netsuite/configuration.rb', line 257

def consumer_key(consumer_key = nil)
  if consumer_key
    self.consumer_key = consumer_key
  else
    attributes[:consumer_key]
  end
end

#consumer_key=(consumer_key) ⇒ Object



253
254
255
# File 'lib/netsuite/configuration.rb', line 253

def consumer_key=(consumer_key)
  attributes[:consumer_key] = consumer_key
end

#consumer_secret(consumer_secret = nil) ⇒ Object



269
270
271
272
273
274
275
# File 'lib/netsuite/configuration.rb', line 269

def consumer_secret(consumer_secret = nil)
  if consumer_secret
    self.consumer_secret = consumer_secret
  else
    attributes[:consumer_secret]
  end
end

#consumer_secret=(consumer_secret) ⇒ Object



265
266
267
# File 'lib/netsuite/configuration.rb', line 265

def consumer_secret=(consumer_secret)
  attributes[:consumer_secret] = consumer_secret
end

#email(email = nil) ⇒ Object



221
222
223
224
225
226
227
# File 'lib/netsuite/configuration.rb', line 221

def email(email = nil)
  if email
    self.email = email
  else
    attributes[:email]
  end
end

#email=(email) ⇒ Object



217
218
219
# File 'lib/netsuite/configuration.rb', line 217

def email=(email)
  attributes[:email] = email
end

#filters(list = nil) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/netsuite/configuration.rb', line 32

def filters(list = nil)
  if list
    self.filters = list
  else
    attributes[:filters] ||= [
      :password,
      :email,
      :consumerKey,
      :token
    ]
  end
end

#filters=(list) ⇒ Object



45
46
47
# File 'lib/netsuite/configuration.rb', line 45

def filters=(list)
  attributes[:filters] = list
end

#log(path = nil) ⇒ Object



317
318
319
320
# File 'lib/netsuite/configuration.rb', line 317

def log(path = nil)
  self.log = path if path
  attributes[:log]
end

#log=(path) ⇒ Object



313
314
315
# File 'lib/netsuite/configuration.rb', line 313

def log=(path)
  attributes[:log] = path
end

#log_level(value = nil) ⇒ Object



343
344
345
346
# File 'lib/netsuite/configuration.rb', line 343

def log_level(value = nil)
  self.log_level = value || :debug
  attributes[:log_level]
end

#log_level=(value) ⇒ Object



348
349
350
# File 'lib/netsuite/configuration.rb', line 348

def log_level=(value)
  attributes[:log_level] ||= value
end

#logger(value = nil) ⇒ Object



322
323
324
325
326
327
328
# File 'lib/netsuite/configuration.rb', line 322

def logger(value = nil)
  if value.nil?
    attributes[:logger] ||= ::Logger.new((log && !log.empty?) ? log : $stdout)
  else
    attributes[:logger] = value
  end
end

#logger=(value) ⇒ Object



330
331
332
# File 'lib/netsuite/configuration.rb', line 330

def logger=(value)
  attributes[:logger] = value
end

#namespacesObject



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/netsuite/configuration.rb', line 180

def namespaces
  {
    'xmlns:platformMsgs'   => "urn:messages_#{api_version}.platform.webservices.netsuite.com",
    'xmlns:platformCore'   => "urn:core_#{api_version}.platform.webservices.netsuite.com",
    'xmlns:platformCommon' => "urn:common_#{api_version}.platform.webservices.netsuite.com",
    'xmlns:listRel'        => "urn:relationships_#{api_version}.lists.webservices.netsuite.com",
    'xmlns:tranSales'      => "urn:sales_#{api_version}.transactions.webservices.netsuite.com",
    'xmlns:tranPurch'      => "urn:purchases_#{api_version}.transactions.webservices.netsuite.com",
    'xmlns:actSched'       => "urn:scheduling_#{api_version}.activities.webservices.netsuite.com",
    'xmlns:setupCustom'    => "urn:customization_#{api_version}.setup.webservices.netsuite.com",
    'xmlns:listAcct'       => "urn:accounting_#{api_version}.lists.webservices.netsuite.com",
    'xmlns:tranBank'       => "urn:bank_#{api_version}.transactions.webservices.netsuite.com",
    'xmlns:tranCust'       => "urn:customers_#{api_version}.transactions.webservices.netsuite.com",
    'xmlns:tranEmp'        => "urn:employees_#{api_version}.transactions.webservices.netsuite.com",
    'xmlns:tranInvt'       => "urn:inventory_#{api_version}.transactions.webservices.netsuite.com",
    'xmlns:listSupport'    => "urn:support_#{api_version}.lists.webservices.netsuite.com",
    'xmlns:tranGeneral'    => "urn:general_#{api_version}.transactions.webservices.netsuite.com",
    'xmlns:commGeneral'    => "urn:communication_#{api_version}.general.webservices.netsuite.com",
    'xmlns:listMkt'        => "urn:marketing_#{api_version}.lists.webservices.netsuite.com",
    'xmlns:listWebsite'    => "urn:website_#{api_version}.lists.webservices.netsuite.com",
    'xmlns:fileCabinet'    => "urn:filecabinet_#{api_version}.documents.webservices.netsuite.com",
    'xmlns:listEmp'        => "urn:employees_#{api_version}.lists.webservices.netsuite.com"
  }
end

#password(password = nil) ⇒ Object



233
234
235
236
237
238
239
# File 'lib/netsuite/configuration.rb', line 233

def password(password = nil)
  if password
    self.password = password
  else
    attributes[:password]
  end
end

#password=(password) ⇒ Object



229
230
231
# File 'lib/netsuite/configuration.rb', line 229

def password=(password)
  attributes[:password] = password
end

#read_timeout(timeout = nil) ⇒ Object



305
306
307
308
309
310
311
# File 'lib/netsuite/configuration.rb', line 305

def read_timeout(timeout = nil)
  if timeout
    self.read_timeout = timeout
  else
    attributes[:read_timeout] ||= 60
  end
end

#read_timeout=(timeout) ⇒ Object



301
302
303
# File 'lib/netsuite/configuration.rb', line 301

def read_timeout=(timeout)
  attributes[:read_timeout] = timeout
end

#reset!Object



5
6
7
8
9
10
# File 'lib/netsuite/configuration.rb', line 5

def reset!
  NetSuite::Utilities.clear_cache!
  clear_wsdl_cache

  attributes.clear
end

#role(role = nil) ⇒ Object



209
210
211
212
213
214
215
# File 'lib/netsuite/configuration.rb', line 209

def role(role = nil)
  if role
    self.role = role
  else
    attributes[:role] ||= '3'
  end
end

#role=(role) ⇒ Object



205
206
207
# File 'lib/netsuite/configuration.rb', line 205

def role=(role)
  attributes[:role] = role
end

#sandbox(flag = nil) ⇒ Object



94
95
96
97
98
99
100
# File 'lib/netsuite/configuration.rb', line 94

def sandbox(flag = nil)
  if flag.nil?
    attributes[:flag] ||= false
  else
    self.sandbox = flag
  end
end

#sandbox=(flag) ⇒ Object



90
91
92
# File 'lib/netsuite/configuration.rb', line 90

def sandbox=(flag)
  attributes[:flag] = flag
end

#sandbox?Boolean

Returns:

  • (Boolean)


102
103
104
# File 'lib/netsuite/configuration.rb', line 102

def sandbox?
  !!sandbox
end

#silent(value = nil) ⇒ Object



334
335
336
337
# File 'lib/netsuite/configuration.rb', line 334

def silent(value=nil)
  self.silent = value if !value.nil?
  attributes[:silent]
end

#silent=(value) ⇒ Object



339
340
341
# File 'lib/netsuite/configuration.rb', line 339

def silent=(value)
  attributes[:silent] ||= value
end

#soap_header(headers = nil) ⇒ Object



145
146
147
148
149
150
151
# File 'lib/netsuite/configuration.rb', line 145

def soap_header(headers = nil)
  if headers
    self.soap_header = headers
  else
    attributes[:soap_header] ||= {}
  end
end

#soap_header=(headers) ⇒ Object



141
142
143
# File 'lib/netsuite/configuration.rb', line 141

def soap_header=(headers)
  attributes[:soap_header] = headers
end

#token_auth(credentials) ⇒ Object



170
171
172
173
174
175
176
177
178
# File 'lib/netsuite/configuration.rb', line 170

def token_auth(credentials)
  NetSuite::Passports::Token.new(
    credentials[:account] || ,
    credentials[:consumer_key] || consumer_key,
    credentials[:consumer_secret] || consumer_secret,
    credentials[:token_id] || token_id,
    credentials[:token_secret] || token_secret
  ).passport
end

#token_id(token_id = nil) ⇒ Object



281
282
283
284
285
286
287
# File 'lib/netsuite/configuration.rb', line 281

def token_id(token_id = nil)
  if token_id
    self.token_id = token_id
  else
    attributes[:token_id]
  end
end

#token_id=(token_id) ⇒ Object



277
278
279
# File 'lib/netsuite/configuration.rb', line 277

def token_id=(token_id)
  attributes[:token_id] = token_id
end

#token_secret(token_secret = nil) ⇒ Object



293
294
295
296
297
298
299
# File 'lib/netsuite/configuration.rb', line 293

def token_secret(token_secret = nil)
  if token_secret
    self.token_secret = token_secret
  else
    attributes[:token_secret]
  end
end

#token_secret=(token_secret) ⇒ Object



289
290
291
# File 'lib/netsuite/configuration.rb', line 289

def token_secret=(token_secret)
  attributes[:token_secret] = token_secret
end

#user_auth(credentials) ⇒ Object



161
162
163
164
165
166
167
168
# File 'lib/netsuite/configuration.rb', line 161

def user_auth(credentials)
  NetSuite::Passports::User.new(
    credentials[:account] || ,
    credentials[:email] || email,
    credentials[:password] || password,
    credentials[:role] || role
  ).passport
end

#wsdl(wsdl = nil) ⇒ Object



110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/netsuite/configuration.rb', line 110

def wsdl(wsdl = nil)
  if wsdl
    self.wsdl = wsdl
  else
    attributes[:wsdl] ||= begin
      if sandbox
        "https://webservices.sandbox.netsuite.com/wsdl/v#{api_version}_0/netsuite.wsdl"
      else
        "https://#{wsdl_domain}/wsdl/v#{api_version}_0/netsuite.wsdl"
      end
    end
  end
end

#wsdl=(wsdl) ⇒ Object



106
107
108
# File 'lib/netsuite/configuration.rb', line 106

def wsdl=(wsdl)
  attributes[:wsdl] = wsdl
end

#wsdl_cacheObject



49
50
51
# File 'lib/netsuite/configuration.rb', line 49

def wsdl_cache
  @wsdl_cache ||= {}
end

#wsdl_domain(wsdl_domain = nil) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/netsuite/configuration.rb', line 124

def wsdl_domain(wsdl_domain = nil)
  if wsdl_domain
    self.wsdl_domain = wsdl_domain
  else
    # if sandbox, this parameter is ignored
    if sandbox
      'webservices.sandbox.netsuite.com'
    else
      attributes[:wsdl_domain] ||= 'webservices.netsuite.com'
    end
  end
end

#wsdl_domain=(wsdl_domain) ⇒ Object



137
138
139
# File 'lib/netsuite/configuration.rb', line 137

def wsdl_domain=(wsdl_domain)
  attributes[:wsdl_domain] = wsdl_domain
end