mogli 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
data/lib/mogli.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Mogli
2
-
2
+
3
3
  end
4
4
 
5
5
  require "httparty"
@@ -34,4 +34,4 @@ require "mogli/television"
34
34
  require "mogli/video"
35
35
  require "mogli/work"
36
36
  require "mogli/user"
37
- require "mogli/client"
37
+ require "mogli/client"
data/lib/mogli/album.rb CHANGED
@@ -1,12 +1,12 @@
1
1
  module Mogli
2
2
  class Album < Model
3
3
 
4
- define_properties :id, :name, :description, :link, :count, :created_time, :updated_time
5
- creation_properties :name, :message
4
+ define_properties :id, :name, :description, :location, :privacy, :link, :count, :created_time, :updated_time
5
+ creation_properties :name, :description
6
6
 
7
7
  hash_populating_accessor :from, "User","Page"
8
8
  has_association :photos, "Photo"
9
9
  has_association :comments, "Comment"
10
10
 
11
11
  end
12
- end
12
+ end
data/lib/mogli/checkin.rb CHANGED
@@ -6,4 +6,4 @@ module Mogli
6
6
  hash_populating_accessor :place, "Page"
7
7
  hash_populating_accessor :application, "Page"
8
8
  end
9
- end
9
+ end
data/lib/mogli/client.rb CHANGED
@@ -10,7 +10,11 @@ module Mogli
10
10
  include HTTParty
11
11
  include Mogli::Client::Event
12
12
  include Mogli::Client::User
13
+
13
14
  class UnrecognizeableClassError < Exception; end
15
+ class QueryParseException < Exception; end
16
+ class OAuthAccessTokenException < Exception; end
17
+ class OAuthUnauthorizedClientException < Exception; end
14
18
 
15
19
  def api_path(path)
16
20
  "https://graph.facebook.com/#{path}"
@@ -37,7 +41,7 @@ module Mogli
37
41
  parts = post_data.split("&")
38
42
  hash = {}
39
43
  parts.each do |p| (k,v) = p.split("=")
40
- hash[k]=v
44
+ hash[k]=CGI.unescape(v)
41
45
  end
42
46
  new(hash["access_token"],hash["expires"].to_s.to_i)
43
47
  end
@@ -66,6 +70,7 @@ module Mogli
66
70
 
67
71
  def get_and_map(path,klass=nil,body_args = {})
68
72
  data = self.class.get(api_path(path),:query=>default_params.merge(body_args))
73
+ data = data.values if body_args.key?(:ids) && !data.key?('error')
69
74
  map_data(data,klass)
70
75
  end
71
76
 
@@ -124,6 +129,7 @@ module Mogli
124
129
  end
125
130
 
126
131
  def determine_class(klass_or_klasses,data)
132
+ return constantize_string(data['type']) if data.key?('type') && klass_or_klasses == Mogli::Model
127
133
  klasses = Array(klass_or_klasses).map { |k| constantize_string(k)}
128
134
  klasses.detect {|klass| klass.recognize?(data)} || klasses.first
129
135
  end
@@ -133,6 +139,7 @@ module Mogli
133
139
  if data.keys.size == 1 and data["error"]
134
140
  type = data["error"]["type"]
135
141
  message = data["error"]["message"]
142
+ raise Mogli::Client.const_get(type).new(message) if Mogli::Client.const_defined?(type)
136
143
  raise Exception.new("#{type}: #{message}")
137
144
  end
138
145
  end
@@ -1,10 +1,10 @@
1
1
  module Mogli
2
2
  class Education < Model
3
-
3
+
4
4
  define_properties :start_date, :end_date, :degree
5
-
5
+
6
6
  hash_populating_accessor :school, "Page"
7
7
  hash_populating_accessor :year, "Page"
8
8
  hash_populating_accessor :concentration, "Page"
9
9
  end
10
- end
10
+ end
data/lib/mogli/event.rb CHANGED
@@ -1,15 +1,16 @@
1
1
  module Mogli
2
2
  class Event < Model
3
+ set_search_type
3
4
  define_properties :id, :name, :description, :start_time, :end_time, :location, :privacy, :updated_time
4
5
  creation_properties :start_time, :end_time, :link, :name, :description, :privacy
5
-
6
+
6
7
  hash_populating_accessor :venue, "Address"
7
8
  hash_populating_accessor :owner, "User", "Page"
8
9
  has_association :noreply, "User"
9
- has_association :mabye, "User"
10
+ has_association :maybe, "User"
10
11
  has_association :invited, "User"
11
12
  has_association :attending, "User"
12
13
  has_association :declined, "User"
13
14
  has_association :feed, "Post"
14
15
  end
15
- end
16
+ end
data/lib/mogli/group.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  module Mogli
2
2
  class Group < Model
3
+ set_search_type
3
4
  define_properties :id, :name, :description, :link, :privacy, :updated_time
4
-
5
+
5
6
  hash_populating_accessor :owner, "User", "Page"
6
7
  hash_populating_accessor :venue, "Address"
7
-
8
+
8
9
  has_association :feed, "Post"
9
10
  has_association :members, "User"
10
11
  end
11
- end
12
+ end
data/lib/mogli/link.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  module Mogli
2
2
  class Link < Model
3
- define_properties :link, :message, :id, :name, :page, :created_time, :icon, :picture, :description
3
+ define_properties :link, :message, :id, :name, :page, :created_time, :updated_time,
4
+ :icon, :picture, :description, :caption
4
5
  creation_properties :link, :message
5
6
 
6
7
  hash_populating_accessor :comments, "Comment"
7
8
  hash_populating_accessor :from, "User"
8
9
  end
9
- end
10
+ end
data/lib/mogli/model.rb CHANGED
@@ -1,8 +1,13 @@
1
+ require 'mogli/model/search'
2
+
1
3
  module Mogli
2
4
  class Model < Hashie::Dash
3
-
5
+ extend Mogli::Model::Search
6
+
7
+ set_search_type :all
8
+
4
9
  attr_accessor :type
5
-
10
+
6
11
  def client=(val)
7
12
  @client=val
8
13
  end
@@ -105,7 +110,11 @@ module Mogli
105
110
 
106
111
  def self.find(id,client=nil, *fields)
107
112
  body_args = fields.empty? ? {} : {:fields => fields}
113
+ (id, body_args[:ids] = "", id.join(',')) if id.is_a?(Array)
108
114
  (client||Mogli::Client.new).get_and_map(id,self, body_args)
109
115
  end
116
+
110
117
  end
111
118
  end
119
+
120
+
@@ -0,0 +1,21 @@
1
+ module Mogli
2
+ class Model < Hashie::Dash
3
+ module Search
4
+ attr_reader :search_type
5
+
6
+ def search(pattern="", client=nil, args={})
7
+ raise(NoMethodError.new("Can't search for #{self.to_s}")) unless search_type
8
+ args.merge!({:q => pattern})
9
+ args.merge!(:type => self.search_type) unless search_type == 'all'
10
+ (client||Mogli::Client.new).get_and_map('search', self, args)
11
+ end
12
+
13
+ protected
14
+
15
+ def set_search_type(type=nil)
16
+ @search_type = type.nil? ? self.to_s.gsub('Mogli::','').downcase : type.to_s
17
+ end
18
+
19
+ end
20
+ end
21
+ end
data/lib/mogli/page.rb CHANGED
@@ -1,34 +1,35 @@
1
1
  module Mogli
2
2
  class Page < Profile
3
-
3
+ set_search_type
4
+
4
5
  define_properties :id, :name, :category, :username, :access_token
5
-
6
+
6
7
  # General
7
8
  define_properties :fan_count, :link, :picture, :has_added_app
8
9
 
9
10
  # Retail
10
11
  define_properties :founded, :products, :mission, :company_overview
11
-
12
+
12
13
  # Musicians
13
14
  define_properties :record_label, :hometown, :band_members, :genre
14
-
15
- # As a like
15
+
16
+ # As a like
16
17
  define_properties :created_time
17
-
18
- def client_for_page
19
- if access_token.blank?
20
- raise MissingAccessToken.new("You can only get a client for this page if an access_token has been provided. i.e. via /me/accounts")
18
+
19
+ def client_for_page
20
+ if access_token.blank?
21
+ raise MissingAccessToken.new("You can only get a client for this page if an access_token has been provided. i.e. via /me/accounts")
21
22
  end
22
23
  Client.new(access_token)
23
24
  end
24
-
25
+
25
26
  def self.recognize?(hash)
26
27
  hash.has_key?("category")
27
28
  end
28
29
 
29
30
  class MissingAccessToken < Exception
30
31
  end
31
-
32
+
32
33
  end
33
-
34
+
34
35
  end
data/lib/mogli/photo.rb CHANGED
@@ -3,7 +3,7 @@ module Mogli
3
3
  define_properties :id, :name, :picture, :source, :height, :width, :link, :icon,
4
4
  :created_time, :updated_time
5
5
  creation_properties :message
6
-
6
+
7
7
  hash_populating_accessor :from, "User","Page"
8
8
  end
9
- end
9
+ end
data/lib/mogli/post.rb CHANGED
@@ -8,7 +8,7 @@ module Mogli
8
8
  creation_properties :message, :picture, :link, :name, :description, :caption, :source
9
9
 
10
10
  hash_populating_accessor :actions, "Action"
11
- hash_populating_accessor :comments, "Comment"
11
+ has_association :comments, "Comment"
12
12
  hash_populating_accessor :from, "User"
13
13
 
14
14
  def likes_create
data/lib/mogli/status.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Mogli
2
2
  class Status < Model
3
- define_properties :id, :message, :updated_time
4
-
3
+ define_properties :id, :message, :updated_time, :created_time
4
+
5
5
  hash_populating_accessor :from, "User", "Page"
6
6
  end
7
- end
7
+ end
data/lib/mogli/user.rb CHANGED
@@ -1,21 +1,22 @@
1
-
2
1
  module Mogli
3
2
  class User < Profile
4
-
3
+ set_search_type
4
+
5
5
  define_properties :first_name, :last_name, :link, :about, :birthday, :gender,
6
- :email, :website, :timezone, :updated_time, :verified, :political, :relationship_status, :locale
7
-
6
+ :email, :website, :timezone, :updated_time, :verified, :political,
7
+ :relationship_status, :locale, :religion, :quotes
8
+
8
9
  def self.recognize?(hash)
9
10
  !hash.has_key?("category")
10
11
  end
11
-
12
+
12
13
  hash_populating_accessor :work, "Work"
13
14
  hash_populating_accessor :education, "Education"
14
-
15
+
15
16
  hash_populating_accessor :location, "Page"
16
17
  hash_populating_accessor :hometown, "Page"
17
18
 
18
- has_association :activities,"Activity"
19
+ has_association :activities, "Activity"
19
20
  has_association :friends, "User"
20
21
  has_association :interests, "Interest"
21
22
  has_association :music, "Music"
@@ -26,4 +27,4 @@ module Mogli
26
27
  has_association :home, "Post"
27
28
  has_association :accounts, "Page"
28
29
  end
29
- end
30
+ end
data/lib/mogli/video.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  module Mogli
2
2
  class Video < Model
3
-
4
- define_properties :id, :message, :name, :description, :length, :created_time, :updated_time, :icon, :picture, :embed_html
5
-
3
+
4
+ define_properties :id, :message, :name, :description, :length, :created_time,
5
+ :updated_time, :icon, :picture, :embed_html, :caption, :link, :source, :likes
6
+
6
7
  hash_populating_accessor :from, "User", "Page"
7
-
8
+
8
9
  has_association :comments, "Comment"
9
-
10
+
10
11
  end
11
- end
12
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mogli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Mangino
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-08-20 00:00:00 -04:00
12
+ date: 2010-10-05 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -59,6 +59,7 @@ files:
59
59
  - lib/mogli/interest.rb
60
60
  - lib/mogli/link.rb
61
61
  - lib/mogli/location.rb
62
+ - lib/mogli/model/search.rb
62
63
  - lib/mogli/model.rb
63
64
  - lib/mogli/movie.rb
64
65
  - lib/mogli/music.rb