@@ -4,14 +4,23 @@ module BeyondApi
44 module Utils
55 extend self
66
7- def handle_response ( response , status , respond_with_true : false )
8- if status . between? ( 200 , 299 )
9- return true if respond_with_true
7+ def handle_all_request ( url , resource , params = { } )
8+ paginated_size = BeyondApi . configuration . all_pagination_size
109
11- response = sanitize_response ( response )
12- BeyondApi . configuration . object_struct_responses ? to_object_struct ( response ) : response
10+ if params [ :paginated ] == false
11+ result = all_paginated ( url , params . merge ( page : 0 , size : paginated_size ) )
12+
13+ ( 1 ..result [ :page ] [ :total_pages ] - 1 ) . each do |page |
14+ result [ :embedded ] [ resource ] . concat ( all_paginated ( url , params . merge ( page : page , size : paginated_size ) ) [ :embedded ] [ resource ] )
15+ end
16+
17+ result [ :page ] [ :size ] = result [ :page ] [ :total_elements ]
18+ result [ :page ] [ :total_pages ] = 1
19+ result [ :page ] [ :number ] = 0
20+
21+ result
1322 else
14- handle_error ( response , status )
23+ all_paginated ( url , params )
1524 end
1625 end
1726
@@ -21,16 +30,21 @@ def handle_error(response, status)
2130 BeyondApi . configuration . raise_error_requests ? raise ( error ) : error
2231 end
2332
24- def to_object_struct ( data )
25- if data . is_a? Hash
26- return OpenStruct . new ( data . map { |key , val | [ key , to_object_struct ( val ) ] } . to_h )
27- elsif data . is_a? Array
28- return data . map { |o | to_object_struct ( o ) }
33+ def handle_response ( response , status , respond_with_true : false )
34+ if status . between? ( 200 , 299 )
35+ return true if respond_with_true
36+
37+ response = sanitize_response ( response )
38+ BeyondApi . configuration . object_struct_responses ? to_object_struct ( response ) : response
2939 else
30- return data
40+ handle_error ( response , status )
3141 end
3242 end
3343
44+ def sanitize_key ( key )
45+ key . chars . first == "_" ? key [ 1 ..-1 ] : key
46+ end
47+
3448 def sanitize_response ( hash )
3549 { } . tap do |h |
3650 hash . each do |key , value |
@@ -42,44 +56,30 @@ def sanitize_response(hash)
4256 end
4357 end
4458
45- def sanitize_key ( key )
46- key . chars . first == "_" ? key [ 1 ..-1 ] : key
47- end
48-
49- def handle_all_request ( url , resource , params = { } )
50- paginated_size = BeyondApi . configuration . all_pagination_size
51-
52- if params [ :paginated ] == false
53- result = all_paginated ( url , params . merge ( page : 0 , size : paginated_size ) )
54-
55- ( 1 ..result [ :page ] [ :total_pages ] - 1 ) . each do |page |
56- result [ :embedded ] [ resource ] . concat ( all_paginated ( url , params . merge ( page : page , size : paginated_size ) ) [ :embedded ] [ resource ] )
57- end
58-
59- result [ :page ] [ :size ] = result [ :page ] [ :total_elements ]
60- result [ :page ] [ :total_pages ] = 1
61- result [ :page ] [ :number ] = 0
62-
63- result
59+ def to_object_struct ( data )
60+ if data . is_a? Hash
61+ return OpenStruct . new ( data . map { |key , val | [ key , to_object_struct ( val ) ] } . to_h )
62+ elsif data . is_a? Array
63+ return data . map { |o | to_object_struct ( o ) }
6464 else
65- all_paginated ( url , params )
65+ return data
6666 end
6767 end
6868
6969 private
7070
71+ def all_paginated ( url , params = { } )
72+ response , status = BeyondApi ::Request . get ( @session , url , params )
73+
74+ handle_response ( response , status )
75+ end
76+
7177 def transform ( thing )
7278 case thing
7379 when Hash ; sanitize_response ( thing )
7480 when Array ; thing . map { |v | transform ( v ) }
7581 else ; thing
7682 end
7783 end
78-
79- def all_paginated ( url , params = { } )
80- response , status = BeyondApi ::Request . get ( @session , url , params )
81-
82- handle_response ( response , status )
83- end
8484 end
8585end
0 commit comments