advantage_quickbase 0.7.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/lib/quickbase.rb +24 -10
  2. data/lib/user.rb +15 -10
  3. metadata +2 -2
data/lib/quickbase.rb CHANGED
@@ -63,7 +63,7 @@ module AdvantageQuickbase
63
63
 
64
64
  if records.length > 0
65
65
  return records.first
66
- else
66
+ else
67
67
  return {}
68
68
  end
69
69
  end
@@ -144,9 +144,12 @@ module AdvantageQuickbase
144
144
  app_token
145
145
  end
146
146
 
147
- def import_from_csv( db_id, data_array, columns )
147
+ def import_from_csv( db_id, import_data, columns=nil )
148
+ # If import_data contains hashes, use the keys as the import headers
149
+ columns ||= import_data[ 0 ].map{ |fid, value| fid }
148
150
  columns = normalize_list( columns )
149
- xml = build_csv_xml( data_array, columns )
151
+
152
+ xml = build_csv_xml( import_data, columns )
150
153
 
151
154
  result = send_request( :importFromCSV, db_id, nil, xml )
152
155
  result.css('rid').map{ |xml_node| xml_node.text.to_i }
@@ -280,8 +283,7 @@ module AdvantageQuickbase
280
283
  def build_request_xml( tags )
281
284
  xml = '<qdbapi>'
282
285
  xml += tags.map{ |name, value| "<#{name}>#{value}</#{name}>" }.join()
283
- xml += "<ticket>#{@ticket}</ticket>"
284
- xml += "<apptoken>#{@app_token}</apptoken>"
286
+ xml += ticket_and_token
285
287
  xml += '</qdbapi>'
286
288
  end
287
289
 
@@ -302,8 +304,7 @@ module AdvantageQuickbase
302
304
  end
303
305
 
304
306
  xml += new_values.join()
305
- xml += "<ticket>#{@ticket}</ticket>"
306
- xml += "<apptoken>#{@app_token}</apptoken>"
307
+ xml += ticket_and_token
307
308
  xml += '</qdbapi>'
308
309
  end
309
310
 
@@ -319,16 +320,29 @@ module AdvantageQuickbase
319
320
  end
320
321
 
321
322
  def build_csv_xml( new_values, fields_to_import )
323
+ csv_data = []
324
+ new_values.each do |line|
325
+ if line.is_a?( Array )
326
+ csv_data << CSV.generate_line( line )
327
+ elsif line.is_a?( Hash )
328
+ csv_data << CSV.generate_line( line.map{ |k, v| v } )
329
+ end
330
+ end
331
+
322
332
  xml = '<qdbapi>'
323
333
  xml += "<records_csv><![CDATA[\n"
324
- xml += new_values.map{ |line| CSV.generate_line(line) }.join()
334
+ xml += csv_data.join()
325
335
  xml += "]]></records_csv>"
326
336
  xml += "<clist>#{fields_to_import}</clist>"
327
- xml += "<ticket>#{@ticket}</ticket>"
328
- xml += "<apptoken>#{@app_token}</apptoken>"
337
+ xml += ticket_and_token
329
338
  xml += '</qdbapi>'
330
339
  end
331
340
 
341
+ def ticket_and_token
342
+ "<ticket>#{@ticket}</ticket>" +
343
+ "<apptoken>#{@app_token}</apptoken>"
344
+ end
345
+
332
346
  def parse_xml( xml )
333
347
  Nokogiri::HTML( xml )
334
348
  end
data/lib/user.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module AdvantageQuickbase
2
2
  class API
3
3
  module User
4
- def get_user_info(email)
4
+ def get_user_info( email )
5
5
  user = send_request( :GetUserInfo, "main", { :email => email })
6
6
  user = {
7
7
  :id => get_attr_value(user.css("user"), :id),
@@ -14,18 +14,23 @@ module AdvantageQuickbase
14
14
  end
15
15
 
16
16
  def get_user_role(db_id, user_id)
17
- roles = []
18
17
  result = send_request(:GetUserRole, db_id, { :userid => user_id })
19
18
 
19
+ user = {
20
+ id: get_attr_value( result.css('user'), :id ),
21
+ name: get_tag_value( result, :name ),
22
+ roles: []
23
+ }
24
+
20
25
  result.css( 'role' ).each do |role|
21
- roles << role = {
22
- :id => get_attr_value(role, :id),
23
- :name => get_tag_value(role, :name),
24
- :type => get_tag_value(role, :access )
26
+ user[ :roles ] << {
27
+ :id => get_attr_value( role, :id ),
28
+ :name => get_tag_value( role, :name ),
29
+ :type => get_tag_value( role, :access )
25
30
  }
26
31
  end
27
32
 
28
- roles
33
+ user
29
34
  end
30
35
 
31
36
  def add_user_to_role(db_id, user_id, role_id)
@@ -44,7 +49,7 @@ module AdvantageQuickbase
44
49
  options = {
45
50
  :email => email,
46
51
  :roleid => role_id,
47
- :first_name => first_name,
52
+ :first_name => first_name,
48
53
  :last_name => last_name
49
54
  }
50
55
 
@@ -64,9 +69,9 @@ module AdvantageQuickbase
64
69
 
65
70
  def remove_access(db_id, email)
66
71
  user = self.get_user_info(email)
67
- roles = get_user_role(db_id, user[:id])
72
+ user_roles = get_user_role(db_id, user[:id])
68
73
 
69
- roles.each do |role|
74
+ user_roles[:roles].each do |role|
70
75
  self.remove_user_from_role(db_id, user[:id], role[:id])
71
76
  end
72
77
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: advantage_quickbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-08 00:00:00.000000000 Z
12
+ date: 2014-09-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri