Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns friend-note.core
- (:use ring.adapter.jetty
- [ring.util.response :only [response redirect]]
- [ring.middleware.params :only [wrap-params]]
- [ring.middleware.session :only [wrap-session]]
- [clj-facebook-graph.auth :only [facebook-auth-url with-facebook-auth]])
- (:require [clojure.contrib.sql :as sql]
- [net.cgrand.moustache :as moustache]
- [clj-facebook-graph.client :as client]
- [clojure.string :as string])
- (:import [java.security MessageDigest]
- [javax.crypto Mac]
- [javax.crypto.spec SecretKeySpec]
- [org.apache.commons.codec.binary Hex]))
- ;; facebook constants
- (defonce facebook-app-info {:client-id "148112121934162"
- :client-secret "##############################"
- :redirect-uri "http://projects.nordsieck.net:8080/facebook-callback"
- :permissions ["read_friendlists"]})
- ;; deployment variable declaration
- (def db-vars {:classname "com.mysql.jdbc.Driver"
- :subprotocol "mysql"
- :subname "//localhost:3306/friendnote"
- :user "fn"
- :password "friendnotepassword"})
- (def table-name :notes)
- (def app-vars {:id "148112121934162"
- :secret "b84e49cad5ed21ac2689f684ecd1eab1"})
- ;; set up database
- (defn setup-db []
- (sql/with-connection db-vars
- (sql/create-table
- table-name
- [:id :bigint "PRIMARY KEY" "NOT NULL" "AUTO_INCREMENT"]
- [:user_id :bigint "NOT NULL"]
- [:user_net :bigint "NOT NULL"]
- [:friend_id :bigint "NOT NULL"]
- [:friend_net :bigint "NOT NULL"]
- [:note :mediumtext])))
- (defn clear-db []
- (sql/with-connection db-vars
- (sql/drop-table table-name)))
- (defn mydb [request]
- (response
- (sql/with-connection db-vars
- (sql/with-query-results rs [(str "SELECT * FROM " (subs (str table-name) 1) ";")] ;; HACK: figure out better way to include table-name
- (str (get (first rs) table-name))))))
- (defn dbput [request]
- (sql/with-connection db-vars
- (sql/insert-values table-name [:user_iD :user_net :friend_id :friend_net :note] [0 0 1 0 "First Post!"])
- (response "put success")))
- (defn facebook [request]
- (response
- (client/get [:me] {:extract :body})))
- (defn facebook-login [request]
- (redirect (facebook-auth-url facebook-app-info)))
- (def handler
- (moustache/app
- wrap-params
- [""] "hello world"
- ["put"] dbput
- ["db"] mydb
- ["facebook"] facebook
- ["facebook-login"] facebook-login
- ["facebook-callback"] "facebook callback"))
- (defn boot []
- (run-jetty #'handler {:port 8080 :join? false}))
- (defn -main [& args]
- (boot))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement