Last active
August 29, 2015 14:05
-
-
Save lynxluna/daa4be68ff302d620eb6 to your computer and use it in GitHub Desktop.
Wrapping Facebook4j to Clojure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Wrapping facebook4j in Clojure | |
;; Please include org.facebook4j/facebook4j-core "2.1.0"] | |
;; in your project.clj | |
(ns com.ykode.social.fb ;; change the namespace as you wish | |
(:import [facebook4j Facebook FacebookException FacebookFactory] | |
[facebook4j.auth AccessToken])) | |
(defn- kw->perms | |
"Converting keyword array such as [:public_profile :email] | |
to \"public_profile,email\"" | |
[keywords] | |
(clojure.string/join "," (map name keywords))) | |
(defn- not-nil? | |
"Not Nil Check" | |
[param] | |
((complement nil?) param)) | |
(defn client | |
"Creating Facebook4J Facebook Instance Client" | |
([{:keys [app_id app_secret permissions access_token]}] | |
(client app_id app_secret :permissions permissions :access_token access_token)) | |
([app_id app_secret & {:keys [permissions access_token]}] | |
(let [fb (.getInstance ( FacebookFactory. )) | |
accessToken (if (not-nil? access_token) | |
(AccessToken. access_token nil) | |
nil)] | |
(do | |
(.setOAuthAppId fb app_id app_secret) | |
(when (not-nil? permissions) (.setOAuthPermissions fb (kw->perms permissions))) | |
(when (not-nil? accessToken) (.setOAuthAccessToken fb accessToken)) | |
fb)))) | |
(defn set-permission! | |
"set permission of fb object" | |
[^Facebook fb perms] | |
(.setOAuthPermissions fb (kw->perms perms))) | |
(defn set-access-token! | |
"set access token of an fb object" | |
[^Facebook fb access_token] | |
(let [accessToken (if (not-nil? access_token) | |
(AccessToken. access_token nil) | |
nil)] | |
(if (not-nil? accessToken) (.setOAuthAccessToken fb accessToken)))) | |
(defn me | |
"Getting Current User Maps" | |
[^Facebook fb] | |
(let [meObject (.getMe fb)] | |
(bean meObject))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment