Advertisement
Guest User

Untitled

a guest
Sep 12th, 2011
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (ns friend-note.core
  2.   (:use ring.adapter.jetty
  3.         [ring.util.response :only [response redirect]]
  4.         [ring.middleware.params :only [wrap-params]]
  5.         [ring.middleware.session :only [wrap-session]]
  6.         [clj-facebook-graph.auth :only [facebook-auth-url with-facebook-auth]])
  7.   (:require [clojure.contrib.sql :as sql]
  8.             [net.cgrand.moustache :as moustache]
  9.             [clj-facebook-graph.client :as client]
  10.             [clojure.string :as string])
  11.   (:import [java.security MessageDigest]
  12.            [javax.crypto Mac]
  13.            [javax.crypto.spec SecretKeySpec]
  14.            [org.apache.commons.codec.binary Hex]))
  15.  
  16. ;; facebook constants
  17. (defonce facebook-app-info {:client-id "148112121934162"
  18.                             :client-secret "##############################"
  19.                             :redirect-uri "http://projects.nordsieck.net:8080/facebook-callback"
  20.                             :permissions ["read_friendlists"]})
  21.  
  22. ;; deployment variable declaration
  23.  
  24. (def db-vars {:classname "com.mysql.jdbc.Driver"
  25.               :subprotocol "mysql"
  26.               :subname "//localhost:3306/friendnote"
  27.               :user "fn"
  28.               :password "friendnotepassword"})
  29.  
  30. (def table-name :notes)
  31. (def app-vars {:id     "148112121934162"
  32.                :secret "b84e49cad5ed21ac2689f684ecd1eab1"})
  33.  
  34. ;; set up database
  35. (defn setup-db []
  36.   (sql/with-connection db-vars
  37.     (sql/create-table
  38.      table-name
  39.      [:id :bigint "PRIMARY KEY" "NOT NULL" "AUTO_INCREMENT"]
  40.      [:user_id :bigint "NOT NULL"]
  41.      [:user_net :bigint "NOT NULL"]
  42.      [:friend_id :bigint "NOT NULL"]
  43.      [:friend_net :bigint "NOT NULL"]
  44.      [:note :mediumtext])))
  45.  
  46. (defn clear-db []
  47.   (sql/with-connection db-vars
  48.     (sql/drop-table table-name)))
  49.  
  50. (defn mydb [request]
  51.   (response
  52.    (sql/with-connection db-vars
  53.      (sql/with-query-results rs [(str "SELECT * FROM " (subs (str table-name) 1) ";")] ;; HACK: figure out better way to include table-name
  54.        (str (get (first rs) table-name))))))
  55.  
  56. (defn dbput [request]
  57.   (sql/with-connection db-vars
  58.     (sql/insert-values table-name [:user_iD :user_net :friend_id :friend_net :note] [0 0 1 0 "First Post!"])
  59.     (response "put success")))
  60.  
  61. (defn facebook [request]
  62.   (response
  63.    (client/get [:me] {:extract :body})))
  64.  
  65. (defn facebook-login [request]
  66.   (redirect (facebook-auth-url facebook-app-info)))
  67.  
  68.  (def handler
  69.      (moustache/app
  70.       wrap-params
  71.       [""] "hello world"
  72.       ["put"] dbput
  73.       ["db"] mydb
  74.       ["facebook"] facebook
  75.       ["facebook-login"] facebook-login
  76.       ["facebook-callback"] "facebook callback"))
  77.  
  78. (defn boot []
  79.   (run-jetty #'handler {:port 8080 :join? false}))
  80.  
  81. (defn -main [& args]
  82.   (boot))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement