Skip to content

Instantly share code, notes, and snippets.

@zahardzhan
Created June 12, 2010 00:27
Show Gist options
  • Save zahardzhan/435238 to your computer and use it in GitHub Desktop.
Save zahardzhan/435238 to your computer and use it in GitHub Desktop.
(ns gae-app.core
(:gen-class :extends javax.servlet.http.HttpServlet)
(:use [compojure.http.servlet :only (defservice)])
(:use compojure.http.routes)
(:use [hiccup.core :only [h html]]
[hiccup.page-helpers :only [doctype include-css link-to xhtml-tag]]
[hiccup.form-helpers :only [form-to text-area text-field]])
(:import (com.google.appengine.api.users UserServiceFactory
UserService
User)))
(defmacro html-head [& body]
`(html [:head
[:meta {:http-equiv "content-type" :content "text/html; charset=utf-8"}]
[:link {:rel "stylesheet" :href "/resources/css/stylesheet.css" :type "text/css"}]
[:link {:rel "icon" :href "/resources/img/favicon.png" :type "image/png"}]
~@body]))
(defn index [request]
(let [user-service (UserServiceFactory/getUserService)
user (.getCurrentUser user-service)]
(html [:html
(html-head [:title "Тест"])
[:body
[:p (cond user (html (link-to (.createLogoutURL user-service "/") "Выйти") \space
(.getNickname user) \space
(when (.isUserAdmin user-service) "Администратор") \space
(:dev_appserver_login (:cookies request)))
:else (html (link-to (.createLoginURL user-service "/") "Войти")
\space (:dev_appserver_login (:cookies request))))]]])))
(defroutes app
(GET "/favicon.ico" [] "/resources/img/favicon.png")
(GET "/" [] (index request)))
(defservice app)
(ns gae-app.offline
(:use :reload gae-app.core)
(:use [compojure.http.servlet :only (servlet)]
google-app-engine.local)
(:require [compojure.server.jetty :as jetty]))
(init-appengine :app-dir "/tmp"
:resources-dir "/home/haru/Sources/gae-app/war/resources")
(def-appengine-server gae-server 8080
"/*" (servlet (wrap-with-appengine app)))
(jetty/start gae-server)
(comment
(jetty/stop gae-server))
(defproject gae-app "1.0.0-SNAPSHOT"
:description "FIXME: write"
:dependencies [[org.clojure/clojure "1.2.0-master-SNAPSHOT"]
[org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]
[compojure "0.3.2"]
[hiccup "0.2.4"]
[appengine "0.3-SNAPSHOT"]
[com.google.appengine/appengine-api-1.0-sdk "1.3.4"]
[com.google.appengine/appengine-api-labs "1.3.4"]
[com.google.appengine/appengine-api-stubs "1.3.4"]]
:dev-dependencies [[lein-clojars "0.5.0"]
[swank-clojure "1.2.1"]
[autodoc "0.7.0"]
[google-app-engine "0.1-SNAPSHOT"]
[com.google.appengine/appengine-local-runtime "1.3.4"]
[com.google.appengine/appengine-testing "1.3.4"]]
:repositories [["maven-gae-plugin" "http://maven-gae-plugin.googlecode.com/svn/repository"]]
:namespaces [gae-app.core])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment