diff --git a/scm-ui/src/repos/content/components/Content.js b/scm-ui/src/repos/content/components/Content.js new file mode 100644 index 0000000000..e99692974f --- /dev/null +++ b/scm-ui/src/repos/content/components/Content.js @@ -0,0 +1,39 @@ +// @flow +import React from "react"; +import { translate } from "react-i18next"; +import { apiClient } from "@scm-manager/ui-components"; + +type Props = { + t: string => string +}; + +type State = { + contentType: string +}; + +class Content extends React.Component { + constructor(props: Props) { + super(props); + + this.state = { + contentType: "" + }; + } + + componentDidMount() {} + + render() { + return null; + } +} + +export function getContentType(url: string) { + return apiClient + .head(url) + .then(response => response) + .catch(err => { + return null; + }); +} + +export default translate("repos")(Content); diff --git a/scm-ui/src/repos/content/components/Content.test.js b/scm-ui/src/repos/content/components/Content.test.js new file mode 100644 index 0000000000..a1828b0872 --- /dev/null +++ b/scm-ui/src/repos/content/components/Content.test.js @@ -0,0 +1,23 @@ +//@flow +import fetchMock from "fetch-mock"; +import { getContentType } from "./Content"; + +describe("get content type", () => { + const CONTENT_URL = "/repositories/scmadmin/TestRepo/content/testContent"; + + afterEach(() => { + fetchMock.reset(); + fetchMock.restore(); + }); + + xit("should return content", done => { + fetchMock.head("/api/v2" + CONTENT_URL, { + "Content-Type": "text/plain" + }); + + getContentType(CONTENT_URL).then(content => { + expect(content).toBe("This is a testContent"); + done(); + }); + }); +}); diff --git a/scm-ui/src/repos/content/components/DownloadViewer.js b/scm-ui/src/repos/content/components/DownloadViewer.js new file mode 100644 index 0000000000..f2e10b376c --- /dev/null +++ b/scm-ui/src/repos/content/components/DownloadViewer.js @@ -0,0 +1,29 @@ +// @flow +import React from "react"; +import { translate } from "react-i18next"; + +type Props = { + t: string => string +}; + +type State = { + content: string +}; + +class DownloadViewer extends React.Component { + constructor(props: Props) { + super(props); + + this.state = { + content: "" + }; + } + + componentDidMount() {} + + render() { + return null; + } +} + +export default translate("repos")(DownloadViewer); diff --git a/scm-ui/src/repos/content/components/ImageViewer.js b/scm-ui/src/repos/content/components/ImageViewer.js new file mode 100644 index 0000000000..de4fc840fa --- /dev/null +++ b/scm-ui/src/repos/content/components/ImageViewer.js @@ -0,0 +1,29 @@ +// @flow +import React from "react"; +import { translate } from "react-i18next"; + +type Props = { + t: string => string +}; + +type State = { + content: string +}; + +class ImageViewer extends React.Component { + constructor(props: Props) { + super(props); + + this.state = { + content: "" + }; + } + + componentDidMount() {} + + render() { + return null; + } +} + +export default translate("repos")(ImageViewer); diff --git a/scm-ui/src/repos/content/components/SourcecodeViewer.js b/scm-ui/src/repos/content/components/SourcecodeViewer.js new file mode 100644 index 0000000000..6303bdd874 --- /dev/null +++ b/scm-ui/src/repos/content/components/SourcecodeViewer.js @@ -0,0 +1,39 @@ +// @flow +import React from "react"; +import { translate } from "react-i18next"; +import { apiClient } from "@scm-manager/ui-components"; + +type Props = { + t: string => string +}; + +type State = { + content: string +}; + +class SourcecodeViewer extends React.Component { + constructor(props: Props) { + super(props); + + this.state = { + content: "" + }; + } + + componentDidMount() {} + + render() { + return null; + } +} + +export function getContent(url: string) { + return apiClient + .get(url) + .then(response => response.text()) + .catch(err => { + return null; + }); +} + +export default translate("repos")(SourcecodeViewer); diff --git a/scm-ui/src/repos/content/components/SourcecodeViewer.test.js b/scm-ui/src/repos/content/components/SourcecodeViewer.test.js new file mode 100644 index 0000000000..0007db50ba --- /dev/null +++ b/scm-ui/src/repos/content/components/SourcecodeViewer.test.js @@ -0,0 +1,22 @@ +//@flow +import fetchMock from "fetch-mock"; +import { getContent } from "./SourcecodeViewer"; + +describe("get content", () => { + const CONTENT_URL = + "/repositories/scmadmin/TestRepo/content/testContent"; + + afterEach(() => { + fetchMock.reset(); + fetchMock.restore(); + }); + + it("should return content", done => { + fetchMock.getOnce("/api/v2" + CONTENT_URL, "This is a testContent"); + + getContent(CONTENT_URL).then(content => { + expect(content).toBe("This is a testContent"); + done(); + }); + }); +});