lib/mambanation/base.rb in mambanation-0.0.3 vs lib/mambanation/base.rb in mambanation-0.0.5
- old
+ new
@@ -1,69 +1,163 @@
module MambaNation
class Base
extend Forwardable
-
+
def_delegators :client, :get, :post, :put, :delete
-
+
attr_reader :client
-
+
def initialize(client)
@client = client
end
-
- def create_user(query)
- perform_post("/users", :body => query)
+
+ #
+ # Users
+ #
+ def create_user(user)
+ perform_post("/users", :body => { :user => user })
end
def user_by_facebook_id(facebook_id, query = {})
- perform_get("/users/find_by?facebook_id=#{facebook_id}", :query => query)
+ perform_get("/users/find_by?facebook_id=#{facebook_id.to_i}", :query => query)
end
+ def user_by_email(email, query = {})
+ perform_get("/users/find_by?facebook_id=#{email}", :query => query)
+ end
+
# Options: user_id, facebook_id
def user(id, query = {})
- perform_get("/users/#{id}.json", :query => query)
+ perform_get("/users/#{id.to_i}.json", :query => query)
end
+ alias_method :user_by_id, :user
def user_set_websession(id, credentials)
- perform_post("/users/#{id}/update_websession", :body => { :user_credentials => credentials })
+ perform_post("/users/#{id.to_i}/update_websession", :body => { :user_credentials => credentials })
end
- # Options: facet_id
- def facet(id)
- perform_get("/facets/#{id}.json")
+ #
+ # User actions
+ #
+ def user_last_login(id)
+ perform_get("/users/#{id.to_i}/last_login.json")
end
- # Options: user_id
- def user_facets(id, query = {})
- perform_get("/users/#{id}/facets.json", :query => query)
+ def user_chats(id, query = {})
+ perform_get("/users/#{id.to_i}/chats.json", :query => query)
end
-
+
+ def user_coms(id, query = {})
+ perform_get("/users/#{id.to_i}/coms.json", :query => query)
+ end
+
+ def user_actions(id, query = {})
+ perform_get("/users/#{id.to_i}/actions.json", :query => query)
+ end
+
+ def activate_user(id)
+ perform_put("/users/#{id.to_i}/activate")
+ end
+
+ def anonymate_user(id)
+ perform_put("/users/#{id.to_i}/anonymate")
+ end
+
+ def suspend_user(id)
+ perform_put("/users/#{id.to_i}/suspend")
+ end
+
# Options: user_id, :limit
def user_media(id, query = {})
- perform_get("/users/#{id}/media.json", :query => query)
+ perform_get("/users/#{id.to_i}/media.json", :query => query)
end
-
+
# Options: user_id, facebook_id
def user_friends(id, query = {})
- perform_get("/users/#{id}/friends.json", :query => query)
+ perform_get("/users/#{id.to_i}/friends.json", :query => query)
end
-
+
+ #
+ # Facets
+ #
+ # Options: facet_id
+ def facet(id)
+ perform_get("/facets/#{id.to_i}.json")
+ end
+
+ # Options: user_id
+ def user_facets(id, query = {})
+ perform_get("/users/#{id.to_i}/facets.json", :query => query)
+ end
+
+ #
+ # Badges
+ #
+ def badges
+ perform_get("/badges.json")
+ end
+
+ def user_badges(id, query = {})
+ perform_get("/users/#{id.to_i}/badges.json", :query => query)
+ end
+
+ #
+ # Mission Statuses
+ #
+ def mission_statuses(id, query = {})
+ perform_get("/users/#{id.to_i}/mission_statuses.json", :query => query)
+ end
+
+ def missions_family_statuses(id, query = {})
+ perform_get("/users/#{id.to_i}/missions_family_statuses.json", :query => query)
+ end
+
+ def mission_complete!(id, mission_id)
+ perform_put("/users/#{id.to_i}/mission_statuses/#{mission_id.to_i}/complete")
+ end
+
+ def mission_start!(id, mission_id)
+ perform_put("/users/#{id.to_i}/mission_statuses/#{mission_id.to_i}/start")
+ end
+
+ #
+ # Posts
+ #
+ def user_posts(id)
+ perform_get("/users/#{id.to_i}/posts.json")
+ end
+
+ def publish_post(post)
+ perform_post("/posts/publish", :body => { :post => post })
+ end
+
+ def post(id)
+ perform_get("/posts/#{id.to_i}.json")
+ end
+
+ #
+ # Roles
+ #
+ def user_roles(id)
+ perform_get("/users/#{id.to_i}/roles.json")
+ end
+
protected
-
+
def self.mime_type(file)
case
when file =~ /\.jpg/ then 'image/jpg'
when file =~ /\.gif$/ then 'image/gif'
when file =~ /\.png$/ then 'image/png'
else 'application/octet-stream'
end
end
-
+
def mime_type(f) self.class.mime_type(f) end
-
+
CRLF = "\r\n"
-
+
def self.build_multipart_bodies(parts)
boundary = Time.now.to_i.to_s(16)
body = ""
parts.each do |key, value|
esc_key = CGI.escape(key.to_s)
@@ -81,28 +175,28 @@
{
:body => body,
:headers => {"Content-Type" => "multipart/form-data; boundary=#{boundary}"}
}
end
-
+
def build_multipart_bodies(parts) self.class.build_multipart_bodies(parts) end
-
+
private
-
+
def perform_get(path, options={})
MambaNation::Request.get(self, path, options)
end
-
+
def perform_post(path, options={})
MambaNation::Request.post(self, path, options)
end
-
+
def perform_put(path, options={})
MambaNation::Request.put(self, path, options)
end
-
+
def perform_delete(path, options={})
MambaNation::Request.delete(self, path, options)
end
-
+
end
end