%PDF- %PDF-
Direktori : /home/waritko/yacy/source/net/yacy/cora/protocol/http/ |
Current File : //home/waritko/yacy/source/net/yacy/cora/protocol/http/StrictSizeLimitEntityWrapper.java |
// StrictSizeLimitEntityWrapper.java // --------------------------- // Copyright 2018 by luccioman; https://github.com/luccioman // // This is a part of YaCy, a peer-to-peer based web search engine // // LICENSE // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA package net.yacy.cora.protocol.http; import java.io.IOException; import java.io.InputStream; import org.apache.http.HttpEntity; import org.apache.http.entity.HttpEntityWrapper; import net.yacy.cora.util.StrictLimitInputStream; /** * HTTP entity wrapper used to strictly limit the size of the response content * fetched from an http connection. * */ public class StrictSizeLimitEntityWrapper extends HttpEntityWrapper { /** Reusable wrapped content stream */ private InputStream content; /** Maximum amount of bytes to fetch from the http response body */ private final long maxBytes; /** * @param wrappedEntity * the http entity to wrap. Must not be null. * @param maxBytes * the maximum amount of bytes to fetch from the http response body * @throws IllegalArgumentException * when wrappedEntity parameter is null or when maxBytes value is * lower than zero. */ public StrictSizeLimitEntityWrapper(final HttpEntity wrappedEntity, final long maxBytes) { super(wrappedEntity); if (wrappedEntity == null) { throw new IllegalArgumentException("The wrappedEntity parameter must not be null."); } if (maxBytes < 0) { throw new IllegalArgumentException("The maxBytes parameter must be greater or equal than zero."); } this.maxBytes = maxBytes; } /** * @return a wrapper on the wrapped entity content stream * @throws IOException * when an error occurred while accessing the wrapped stream */ private InputStream getWrappedStream() throws IOException { final InputStream in = this.wrappedEntity.getContent(); if (in == null) { return in; } return new StrictLimitInputStream(in, this.maxBytes); } @Override public InputStream getContent() throws IOException { final InputStream result; if (this.content == null) { this.content = this.getWrappedStream(); result = this.content; } else { result = this.content; } return result; } }