function result_status = getCIR(JSONString,JSONCurDate,prox_host)

pkg load image
JSONDate = JSONString;

B4URL = JSONCurDate.Band4URI;
SensingDate = JSONCurDate.sensing_date;

B3URL = strrep(B4URL,"B04.jp2","B03.jp2");

B8URL = strrep(B4URL,"B04.jp2","B08.jp2");

B3FileName = 'TileB03.jp2';
B4FileName = 'TileB04.jp2';
B8FileName = 'TileB08.jp2';

%prox_https=strcat("https://",prox_host)

%putenv('https_proxy', prox_https)
%pause(5);
try
urlwrite(B3URL,B3FileName);
catch
UID = JSONDate.UID;
result_status = strcat(UID,"failed0")
return
end
%pause(5);
try
urlwrite(B4URL,B4FileName);
catch
UID = JSONDate.UID;
result_status = strcat(UID,"failed0")
return
end


%pause(5);
try
urlwrite(B8URL,B8FileName);
catch
UID = JSONDate.UID;
result_status = strcat(UID,"failed0")
return
end
try
B3 = imread('TileB03.jp2');
B4 = imread('TileB04.jp2');
B8 = imread('TileB08.jp2');
catch
result_status = strcat(UID,"failed1")
                result_status2 = 'Too much black in image'
        return
end
sizeB4 = size(B3);
format long;
red = 255;
green = 0;
stepsize = 25;
mat_step =1;
c_map = zeros(20,3);
while green<255
	green = green+stepsize
	if green > 255
		green = 255;
	end
	r_color = red/255;
	g_color = green/255;
	c_map(mat_step,1) = r_color;
	c_map(mat_step,2) = g_color;
	c_map(mat_step,3) = 0;
	mat_step = mat_step+1;
end
while red >0
	red = red-stepsize;
	if red<0
		red = 0;
	end
	r_color = red/255;
	g_color = green/255;
	c_map(mat_step,1) = r_color;
	c_map(mat_step,2) = g_color;
	c_map(mat_step,3) = 0;
	mat_step = mat_step+1;
end
%c_map

TileMaxLat =JSONCurDate.north_lat
TileMinLat =JSONCurDate.south_lat
TileMaxLong = JSONCurDate.east_lon
TileMinLong =JSONCurDate.west_lon

          
FieldMaxLat = JSONDate.FieldMaxLat
FieldMinLat = JSONDate.FieldMinLat
FieldMaxLong =JSONDate.FieldMaxLong
FieldMinLong =JSONDate.FieldMinLong

UID = JSONDate.UID;

LatsPerPixel = (TileMaxLat - TileMinLat)/sizeB4(1)
LongsPerPixel = (TileMaxLong - TileMinLong)/sizeB4(1)


    PixelsPerLat = abs(sizeB4(1)/(TileMaxLat - TileMinLat));
PixelsPerLong = abs(sizeB4(2)/(TileMaxLong - TileMinLong));

StartPixelLat = PixelsPerLat*(1-abs(FieldMaxLat-TileMinLat));
StartPixelLat = round(abs(StartPixelLat));



EndPixelLat = PixelsPerLat*(1-abs(TileMinLat- FieldMinLat));
EndPixelLat =  round(abs(EndPixelLat));

if StartPixelLat > EndPixelLat
        temp = EndPixelLat;
        EndPixelLat = StartPixelLat;
        StartPixelLat = temp;
end

if StartPixelLat > 100
        StartPixelLat = StartPixelLat - 100;
else
        StartPixelLat = 0;
end

if EndPixelLat <sizeB4(1)-100
        EndPixelLat = EndPixelLat + 100;
else
        EndPixelLat = sizeB4(1);
end

StartPixelLong = PixelsPerLong*(abs(TileMinLong - FieldMinLong));
StartPixelLong = round(abs(StartPixelLong));


EndPixelLong = PixelsPerLong*abs(TileMinLong - FieldMaxLong);
EndPixelLong = round(abs(EndPixelLong));

if StartPixelLong > EndPixelLong
        temp = EndPixelLong;
        EndPixelLong = StartPixelLong;
        StartPixelLong = temp;
end
if StartPixelLong > 100
        StartPixelLong = StartPixelLong - 100;
else
        StartPixelLong = 0;
end
if EndPixelLong < sizeB4(1) - 100
        EndPixelLong = EndPixelLong+100;
else
        EndPixelLong = sizeB4(1);
end


LatLength = EndPixelLat - StartPixelLat
LongLength = EndPixelLong - StartPixelLong

if StartPixelLat > sizeB4(1) | EndPixelLat > sizeB4(1) | StartPixelLong > sizeB4(1) | EndPixelLong > sizeB4(1)
        result_status2 = 'failed due to unbound start end'
        result_status = strcat(UID,"failed0")
else
%urlwrite(B3URL,B3FileName);
%urlwrite(B4URL,B4FileName);
%urlwrite(B8URL,B8FileName);

%B3 = imread('TileB3.jp2');
%B4 = imread('TileB4.jp2');
%B8 = imread('TileB8.jp2');
        clip = [StartPixelLat EndPixelLat StartPixelLong EndPixelLong];
try
        
        B3 = B3(clip(1):clip(2),clip(3):clip(4));
        
        B4 = B4(clip(1):clip(2),clip(3):clip(4));
        
        B8 = B8(clip(1):clip(2),clip(3):clip(4));
catch
result_status = strcat(UID,"failed1")
                result_status2 = 'Too much black in image'
return
end

        CIRFilename = strcat(UID,"CIR.png");
	CIRFilename = strcat(SensingDate,CIRFilename);
        CIR = cat(3, B3, B4, B8);

	RGB_CIR = rgb2gray(CIR);
	RGB_CIR = single(RGB_CIR);
	RGB_CIR = RGB_CIR/(max(max(RGB_CIR)));
	colormap(c_map)
	imagesc(RGB_CIR,[0 1])
axis square tight
axis off
saveas(1,CIRFilename,'png')

i_name=CIRFilename;
aa = imread(i_name);

%aa = single(aa);
size_aa = size(aa)
sizeN = size(RGB_CIR)
startaaheight=27;
endaaheight = 900-25;
startaawidth=182;
endaawidth=1200-188;
%if sizeN(1) > size_aa(1)
	aa = aa(startaaheight:endaaheight,startaawidth:endaawidth,:);
    %resize_factor_width = sizeN(1)/size_aa(1)
%	resize_factor_height = sizeN(2)/size_aa(2)
    aa = imresize(aa,[sizeN(1) sizeN(2)]);
    size_aa = size(aa)
%end
imwrite(aa,i_name);
%imwrite(CIR,CIRFilename);

result_status =  strcat(UID,"successful");

end

end

end
