Skip to content

Commit

Permalink
Move web interface from clj-rdfa repo to new clj-rdfa-web repo
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasl committed Apr 5, 2012
0 parents commit 5ac0328
Show file tree
Hide file tree
Showing 8 changed files with 134 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/pom.xml
*jar
/lib
/classes
/native
/.lein-failures
/checkouts
/.lein-deps-sum
1 change: 1 addition & 0 deletions Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: lein run -m rdfa.web $PORT
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Web Inferface for RDFa extraction in Clojure

Start an RDFa-to-NTriples web service using:

$ lein ring server-headless

12 changes: 12 additions & 0 deletions project.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
(defproject
rdfa/rdfa-web "1.0.0-SNAPSHOT"
:description "Web interface for the Clojure RDFa library"
:url "https://github.com/niklasl/clj-rdfa-web"
:dependencies [[org.clojure/clojure "1.3.0"]
[rdfa/rdfa "0.5.0-SNAPSHOT"]
[compojure "1.0.1"]
[ring/ring-core "1.0.2"]
[ring/ring-jetty-adapter "1.0.1"]
[ring/ring-devel "1.0.1"]]
:dev-dependencies [[lein-ring "0.6.3"]]
:ring {:handler rdfa.dev/app})
40 changes: 40 additions & 0 deletions resources/public/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
vocab="http://usefulinc.com/ns/doap#">
<head>
<meta charset="utf-8" />
<title property="dc:title">about clj-rdfa</title>
</head>
<body>
<article typeof="Project">
<h1 property="name">clj-rdfa</h1>
<dl>
<dt>Description</dt>
<dd property="description"
>A Clojure library for parsing RDFa 1.1 embedded in XML or HTML</dd>
<dt>Programming Language</dt>
<dd property="programming-language"><a href="http://clojure.org/">Clojure</a></dd>
<dt>Homepage</dt>
<dd><a rel="homepage" href="https://github.com/niklasl/clj-rdfa/wiki"
>https://github.com/niklasl/clj-rdfa/wiki</a></dd>
<dt>Repository</dt>
<dd><a rel="repository browse" tyopeof="GitRepository"
href="https://github.com/niklasl/clj-rdfa"
>https://github.com/niklasl/clj-rdfa</a></dd>
<dt>Bug Database</dt>
<dd><a rel="bug-database" href="https://github.com/niklasl/clj-rdfa/issues"
>https://github.com/niklasl/clj-rdfa/issues</a></dd>
<dt>Creator</dt>
<dd><a property="dc:creator developer"
href="http://neverspace.net/id#self">Niklas Lindström</a></dd>
<dt>Created</dt>
<dd><time property="dc:created">2011-11-24T00:21:11.000Z</time></dd>
<dt>Service</dt>
<dd>
<a rel="service-endpoint" href="/service.html">RDFa 1.1 Extractor</a>
</dd>
</dl>
</article>
</body>
</html>

16 changes: 16 additions & 0 deletions resources/public/service.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<title>RDFa Triple Extractor in Clojure</title>
</head>
<body>
<h1>(use 'rdfa)</h1>
<form action="extract.txt" method="GET">
(parse :url <input name="url" placeholder="nil" size="42" />
:to <button type="submit">:triples</button>)
</form>
<p>
<a rel="meta" href="/">(about :clj-rdfa)</a>
</p>
</body>
</html>
15 changes: 15 additions & 0 deletions src/rdfa/dev.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
(ns rdfa.dev
(:require [ring.server.options :as options]
[ring.middleware.reload :as reload]
[rdfa.web :as web]))

; NOTE: although lein-ring uses ring-server which adds wrap-reload if dev-env?,
; this is needed to also pick up lein "checkouts".
(def app
(if options/dev-env?
(let [dirs (for [f (.listFiles (io/file "checkouts"))
:when (.isDirectory f)]
(.getPath (io/file f "src")))]
(reload/wrap-reload web/app {:dirs dirs}))
web/app))

36 changes: 36 additions & 0 deletions src/rdfa/web.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
(ns rdfa.web
(:use compojure.core
[ring.adapter.jetty :only [run-jetty]])
(:require [clojure.string :as string]
[clojure.java.io :as io]
[ring.util.response :as resp]
[compojure.route :as route]
[compojure.handler :as handler])
(:require [rdfa.stddom :as impl]
[rdfa.repr :as repr]))

(defroutes main-routes
(GET "/" []
(resp/resource-response "index.html" {:root "public"}))
(GET "/extract.:ext" [ext url rdfagraph]
(let [{triples :triples
proc-triples :proc-triples} (impl/get-rdfa url)
result-triples (if (= rdfagraph "processor")
proc-triples
triples)
turtle-result (string/join
"\n"
(map repr/repr-triple result-triples))
mime-type (if (= ext "txt") "text/plain" "text/turtle")]
{:status 200
:headers {"Content-Type" (str mime-type "; charset=utf-8")}
:body turtle-result}))
(route/resources "/")
(route/not-found "Not Found"))

(def app (handler/site main-routes))

(defn -main [port]
(let [port (Integer. port)]
(run-jetty app {:port port})))

0 comments on commit 5ac0328

Please sign in to comment.