77module Contentstack
88 class API
99 using Utility
10- def self . init_api ( api_key , delivery_token , environment , host , branch , live_preview )
10+ def self . init_api ( api_key , delivery_token , environment , host , branch , live_preview , proxy )
1111 @host = host
1212 @api_version = '/v3'
1313 @environment = environment
@@ -16,6 +16,7 @@ def self.init_api(api_key, delivery_token, environment, host, branch, live_previ
1616 @branch = branch
1717 @headers = { environment : @environment }
1818 @live_preview = live_preview
19+ @proxy_details = proxy
1920 end
2021
2122 def self . live_preview_query ( query = { } )
@@ -117,7 +118,26 @@ def self.send_preview_request(path, q=nil)
117118 if !@branch . nil? && !@branch . empty?
118119 params [ "branch" ] = @branch
119120 end
120- ActiveSupport ::JSON . decode ( URI . open ( "#{ preview_host } #{ @api_version } #{ path } #{ query } " , params ) . read )
121+
122+ if @proxy_details . empty?
123+
124+ ActiveSupport ::JSON . decode ( URI . open ( "#{ preview_host } #{ @api_version } #{ path } #{ query } " , params ) . read )
125+
126+ elsif @proxy_details . present? && @proxy_details [ :url ] . present? && @proxy_details [ :port ] . present? && @proxy_details [ :username ] . present? && @proxy_details [ :password ] . present?
127+
128+ proxy_uri = URI . parse ( "http://#{ @proxy_details [ :url ] } :#{ @proxy_details [ :port ] } " )
129+ proxy_username = @proxy_details [ :username ]
130+ proxy_password = @proxy_details [ :password ]
131+
132+ ActiveSupport ::JSON . decode ( URI . open ( "#{ preview_host } #{ @api_version } #{ path } #{ query } " , :proxy_http_basic_authentication => [ proxy_uri , proxy_username , proxy_password ] , "api_key" => @api_key , "authorization" => @live_preview [ :management_token ] , "user_agent" => "ruby-sdk/#{ Contentstack ::VERSION } " , "x-user-agent" => "ruby-sdk/#{ Contentstack ::VERSION } " ) . read )
133+
134+ elsif @proxy_details . present? && @proxy_details [ :url ] . present? && @proxy_details [ :port ] . present? && @proxy_details [ :username ] . empty? && @proxy_details [ :password ] . empty?
135+ proxy_uri = URI . parse ( "http://#{ @proxy_details [ :url ] } :#{ @proxy_details [ :port ] } " )
136+ proxy_auth = { "proxy" => proxy_uri }
137+ params_with_proxy = params . merge ( proxy_auth )
138+ ActiveSupport ::JSON . decode ( open ( "#{ preview_host } #{ @api_version } #{ path } #{ query } " , params_with_proxy ) . read )
139+
140+ end
121141 end
122142 end
123143end
0 commit comments