advantage_quickbase 0.7.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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