3737 query_data_extraction_result : '/data_extraction/result/' ,
3838 query_data_extraction_score : '/data_extraction/score/' ,
3939 query_saved : '/query/saved/' ,
40- database : '/database/'
40+ database : '/database/' ,
41+ query_sql : '/query/sql/'
4142} . freeze
4243
4344# Public: A ruby interface to SlicingDice API
@@ -63,27 +64,18 @@ def initialize(options = {})
6364 read_key = options . fetch ( :read_key , nil )
6465 write_key = options . fetch ( :write_key , nil )
6566 timeout = options . fetch ( :timeout , 60 )
66- uses_test_endpoint = options . fetch ( :uses_test_endpoint , false )
6767 base_url = options . fetch ( :base_url , BASE_URL )
6868 super ( master_key , custom_key , read_key , write_key , timeout )
6969 @list_query_types = [
7070 "count/entity" , "count/event" , "count/entity/total" ,
71- "aggregation" , "top_values" ]
71+ "aggregation" , "top_values" , "sql" ]
7272 if base_url . nil?
7373 @base_url = BASE_URL
7474 else
7575 @base_url = base_url
7676 end
77- @uses_test_endpoint = uses_test_endpoint
7877 end
7978
80- def wrapper_test ( )
81- base_url = @base_url
82- if @uses_test_endpoint
83- base_url += "/test"
84- end
85- return base_url
86- end
8779 # Public: Create column in SlicingDice API
8880 #
8981 # query - A Hash in the SlicingDice column format
@@ -104,7 +96,6 @@ def wrapper_test()
10496 #
10597 # Returns a hash with api result
10698 def create_column ( query )
107- base_url = wrapper_test ( )
10899 if query . kind_of? ( Array )
109100 query . each { |q | column_create ( q ) }
110101 else
@@ -113,18 +104,16 @@ def create_column(query)
113104 end
114105
115106 def column_create ( query )
116- base_url = wrapper_test ( )
117107 sd_validator = Utils ::ColumnValidator . new ( query )
118108 if sd_validator . validator
119- url = base_url + METHODS [ :column ]
109+ url = @ base_url + METHODS [ :column ]
120110 make_request ( url , "post" , 2 , data = query )
121111 end
122112 end
123113
124114 # Public: Get all columns created on SlicingDice API
125115 def get_columns ( )
126- base_url = wrapper_test ( )
127- url = base_url + METHODS [ :column ]
116+ url = @base_url + METHODS [ :column ]
128117 make_request url , "get" , 2
129118 end
130119
@@ -144,18 +133,16 @@ def get_columns()
144133 #
145134 # Returns a hash with api result
146135 def insert ( data )
147- base_url = wrapper_test ( )
148136 sd_validator = Utils ::InsertValidator . new ( data )
149137 if sd_validator . validator
150- url = base_url + METHODS [ :insert ]
138+ url = @ base_url + METHODS [ :insert ]
151139 make_request ( url , "post" , 1 , data = data )
152140 end
153141 end
154142
155143 # Public: Get information about current database
156144 def get_database ( )
157- base_url = wrapper_test ( )
158- url = base_url + METHODS [ :database ]
145+ url = @base_url + METHODS [ :database ]
159146 make_request url , "get" , 2
160147 end
161148
@@ -204,8 +191,7 @@ def saved_query_wrapper(url, query, update = false)
204191 #
205192 # Returns a count entity query result
206193 def count_entity ( query )
207- base_url = wrapper_test ( )
208- url = base_url + METHODS [ :query_count_entity ]
194+ url = @base_url + METHODS [ :query_count_entity ]
209195 count_query_wrapper ( url , query )
210196 end
211197
@@ -216,8 +202,7 @@ def count_entity(query)
216202 #
217203 # Returns a count entity total query result
218204 def count_entity_total ( tables = [ ] )
219- base_url = wrapper_test ( )
220- url = base_url + METHODS [ :query_count_entity_total ]
205+ url = @base_url + METHODS [ :query_count_entity_total ]
221206
222207 query = {
223208 "tables" => tables
@@ -232,8 +217,7 @@ def count_entity_total(tables=[])
232217 #
233218 # Returns a count event query result
234219 def count_event ( query )
235- base_url = wrapper_test ( )
236- url = base_url + METHODS [ :query_count_event ]
220+ url = @base_url + METHODS [ :query_count_event ]
237221 count_query_wrapper ( url , query )
238222 end
239223
@@ -243,8 +227,7 @@ def count_event(query)
243227 #
244228 # Returns a aggregation query result
245229 def aggregation ( query )
246- base_url = wrapper_test ( )
247- url = base_url + METHODS [ :query_aggregation ]
230+ url = @base_url + METHODS [ :query_aggregation ]
248231 if !query . key? ( "query" )
249232 raise Exceptions ::InvalidQueryException , 'The aggregation query must ' \
250233 'have \'query\' property.'
@@ -263,8 +246,7 @@ def aggregation(query)
263246 #
264247 # Returns a top values query result
265248 def top_values ( query )
266- base_url = wrapper_test ( )
267- url = base_url + METHODS [ :query_top_values ]
249+ url = @base_url + METHODS [ :query_top_values ]
268250 sd_validator = Utils ::QueryTopValuesValidator . new ( query )
269251 if sd_validator . validator
270252 make_request ( url , "post" , 0 , data = query )
@@ -278,8 +260,7 @@ def top_values(query)
278260 #
279261 # Returns a Hash with ids that exists and that don't exits
280262 def exists_entity ( ids , table = nil )
281- base_url = wrapper_test ( )
282- url = base_url + METHODS [ :query_exists_entity ]
263+ url = @base_url + METHODS [ :query_exists_entity ]
283264 if ids . length > 100
284265 raise Exceptions ::MaxLimitExceptions , 'The query exists entity must ' \
285266 'have up to 100 ids.'
@@ -299,8 +280,7 @@ def exists_entity(ids, table=nil)
299280 #
300281 # Returns a hash with saved query
301282 def get_saved_queries ( )
302- base_url = wrapper_test ( )
303- url = base_url + METHODS [ :query_saved ]
283+ url = @base_url + METHODS [ :query_saved ]
304284 make_request url , "get" , 2
305285 end
306286
@@ -310,8 +290,7 @@ def get_saved_queries()
310290 #
311291 # Returns a hash with saved query
312292 def get_saved_query ( query_name )
313- base_url = wrapper_test ( )
314- url = base_url + METHODS [ :query_saved ] + query_name
293+ url = @base_url + METHODS [ :query_saved ] + query_name
315294 make_request url , "get" , 0
316295 end
317296
@@ -321,8 +300,7 @@ def get_saved_query(query_name)
321300 #
322301 # Returns a hash with saved query
323302 def delete_saved_query ( query_name )
324- base_url = wrapper_test ( )
325- url = base_url + METHODS [ :query_saved ] + query_name
303+ url = @base_url + METHODS [ :query_saved ] + query_name
326304 make_request url , "delete" , 2
327305 end
328306
@@ -332,8 +310,7 @@ def delete_saved_query(query_name)
332310 #
333311 # Returns a hash with saved query created and SUCCESS status
334312 def create_saved_query ( query )
335- base_url = wrapper_test ( )
336- url = base_url + METHODS [ :query_saved ]
313+ url = @base_url + METHODS [ :query_saved ]
337314 saved_query_wrapper url , query
338315 end
339316
@@ -344,28 +321,28 @@ def create_saved_query(query)
344321 #
345322 # Returns a hash with saved query updated and SUCCESS status
346323 def update_saved_query ( name , query )
347- base_url = wrapper_test ( )
348- url = base_url + METHODS [ :query_saved ] + name
324+ url = @base_url + METHODS [ :query_saved ] + name
349325 saved_query_wrapper ( url , query , update = true )
350326 end
351327
352328 # Public: Get a data extraction result query
353329 #
354330 # query(Hash) - A Hash to send in request
355331 def result ( query )
356- base_url = wrapper_test ( )
357- url = base_url + METHODS [ :query_data_extraction_result ]
332+ url = @base_url + METHODS [ :query_data_extraction_result ]
358333 data_extraction_wrapper ( url , query )
359334 end
360335
361336 # Public: Get a data extraction score query
362337 #
363338 # query(Hash) - A Hash to send in request
364339 def score ( query )
365- base_url = wrapper_test ( )
366- url = base_url + METHODS [ :query_data_extraction_score ]
340+ url = @base_url + METHODS [ :query_data_extraction_score ]
367341 data_extraction_wrapper ( url , query )
368342 end
369343
370- private :wrapper_test
344+ def sql ( query )
345+ url = @base_url + METHODS [ :query_sql ]
346+ make_request ( url , "post" , 0 , data = query , sql = true )
347+ end
371348end
0 commit comments