You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
/* |
|
* Copyright (C) 2009-2010, Google Inc. and others |
|
* |
|
* This program and the accompanying materials are made available under the |
|
* terms of the Eclipse Distribution License v. 1.0 which is available at |
|
* https://www.eclipse.org/org/documents/edl-v10.php. |
|
* |
|
* SPDX-License-Identifier: BSD-3-Clause |
|
*/ |
|
|
|
package org.eclipse.jgit.http.server; |
|
|
|
import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND; |
|
import static org.eclipse.jgit.http.server.ServletUtils.getRepository; |
|
import static org.eclipse.jgit.http.server.ServletUtils.send; |
|
|
|
import java.io.File; |
|
import java.io.FileNotFoundException; |
|
import java.io.IOException; |
|
|
|
import javax.servlet.http.HttpServlet; |
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import org.eclipse.jgit.util.HttpSupport; |
|
import org.eclipse.jgit.util.IO; |
|
|
|
/** Sends a small text meta file from the repository. */ |
|
class TextFileServlet extends HttpServlet { |
|
private static final long serialVersionUID = 1L; |
|
|
|
private final String fileName; |
|
|
|
TextFileServlet(String name) { |
|
this.fileName = name; |
|
} |
|
|
|
/** {@inheritDoc} */ |
|
@Override |
|
public void doGet(final HttpServletRequest req, |
|
final HttpServletResponse rsp) throws IOException { |
|
try { |
|
rsp.setContentType(HttpSupport.TEXT_PLAIN); |
|
send(read(req), req, rsp); |
|
} catch (FileNotFoundException noFile) { |
|
rsp.sendError(SC_NOT_FOUND); |
|
} |
|
} |
|
|
|
private byte[] read(HttpServletRequest req) throws IOException { |
|
final File gitdir = getRepository(req).getDirectory(); |
|
if (gitdir == null) |
|
throw new FileNotFoundException(fileName); |
|
return IO.readFully(new File(gitdir, fileName)); |
|
} |
|
}
|
|
|