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.
- data/lib/quickbase.rb +24 -10
- data/lib/user.rb +15 -10
- 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,
|
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
|
-
|
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 +=
|
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 +=
|
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 +=
|
334
|
+
xml += csv_data.join()
|
325
335
|
xml += "]]></records_csv>"
|
326
336
|
xml += "<clist>#{fields_to_import}</clist>"
|
327
|
-
xml +=
|
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 <<
|
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
|
-
|
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
|
-
|
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.
|
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-
|
12
|
+
date: 2014-09-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|