mogli 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mogli/action.rb +8 -2
- data/lib/mogli/application.rb +13 -0
- data/lib/mogli/client.rb +26 -5
- data/lib/mogli/group.rb +1 -1
- data/lib/mogli/insight.rb +6 -0
- data/lib/mogli/model.rb +17 -3
- data/lib/mogli/movie.rb +1 -1
- data/lib/mogli/post.rb +8 -6
- data/lib/mogli/profile.rb +19 -2
- data/lib/mogli/television.rb +1 -1
- metadata +39 -13
    
        data/lib/mogli/action.rb
    CHANGED
    
    | @@ -1,6 +1,12 @@ | |
| 1 1 | 
             
            module Mogli
         | 
| 2 2 | 
             
              class Action < Model
         | 
| 3 3 | 
             
                define_properties :name, :link
         | 
| 4 | 
            -
             | 
| 4 | 
            +
             | 
| 5 | 
            +
                # simple implementation of to_json, ignoring options like :only, :except,
         | 
| 6 | 
            +
                # :include, :methods because this is primarily intended for being submitted
         | 
| 7 | 
            +
                # to facebook
         | 
| 8 | 
            +
                def to_json(options = nil)
         | 
| 9 | 
            +
                  "{\"name\":\"#{name}\",\"link\":\"#{link}\"}"
         | 
| 10 | 
            +
                end
         | 
| 5 11 | 
             
              end
         | 
| 6 | 
            -
            end
         | 
| 12 | 
            +
            end
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            module Mogli
         | 
| 2 | 
            +
              class Application < Model
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                define_properties :id, :name, :description, :category, :subcategory, :link
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                has_association :feed, "Post"
         | 
| 7 | 
            +
                has_association :posts, "Post"
         | 
| 8 | 
            +
                has_association :albums, "Album"
         | 
| 9 | 
            +
                has_association :insights, "Insight"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
             | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
    
        data/lib/mogli/client.rb
    CHANGED
    
    | @@ -11,10 +11,12 @@ module Mogli | |
| 11 11 | 
             
                include Mogli::Client::Event
         | 
| 12 12 | 
             
                include Mogli::Client::User
         | 
| 13 13 |  | 
| 14 | 
            -
                class  | 
| 15 | 
            -
                class  | 
| 16 | 
            -
                class  | 
| 17 | 
            -
                class  | 
| 14 | 
            +
                class ClientException < Exception; end
         | 
| 15 | 
            +
                class UnrecognizeableClassError < ClientException; end
         | 
| 16 | 
            +
                class QueryParseException < ClientException; end
         | 
| 17 | 
            +
                class OAuthAccessTokenException < ClientException; end
         | 
| 18 | 
            +
                class OAuthUnauthorizedClientException < ClientException; end
         | 
| 19 | 
            +
                class OAuthException < ClientException; end
         | 
| 18 20 |  | 
| 19 21 | 
             
                def api_path(path)
         | 
| 20 22 | 
             
                  "https://graph.facebook.com/#{path}"
         | 
| @@ -38,6 +40,9 @@ module Mogli | |
| 38 40 |  | 
| 39 41 | 
             
                def self.create_from_code_and_authenticator(code,authenticator)
         | 
| 40 42 | 
             
                  post_data = get(authenticator.access_token_url(code))
         | 
| 43 | 
            +
                  if (response_is_error?(post_data))
         | 
| 44 | 
            +
                    raise_client_exception(post_data)
         | 
| 45 | 
            +
                  end        
         | 
| 41 46 | 
             
                  parts = post_data.split("&")
         | 
| 42 47 | 
             
                  hash = {}
         | 
| 43 48 | 
             
                  parts.each do |p| (k,v) = p.split("=")
         | 
| @@ -45,6 +50,22 @@ module Mogli | |
| 45 50 | 
             
                  end
         | 
| 46 51 | 
             
                  new(hash["access_token"],hash["expires"].to_s.to_i)
         | 
| 47 52 | 
             
                end
         | 
| 53 | 
            +
                
         | 
| 54 | 
            +
                def self.raise_client_exception(post_data)
         | 
| 55 | 
            +
                  type=post_data["error"]["type"]
         | 
| 56 | 
            +
                  message=post_data["error"]["message"]
         | 
| 57 | 
            +
                  if Mogli::Client.const_defined?(type)
         | 
| 58 | 
            +
                    raise Mogli::Client.const_get(type).new(message) 
         | 
| 59 | 
            +
                  else
         | 
| 60 | 
            +
                    raise ClientException.new("#{type}: #{message}")      
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
                
         | 
| 64 | 
            +
                def self.response_is_error?(post_data)
         | 
| 65 | 
            +
                  post_data.is_a?(HTTParty::Response) and
         | 
| 66 | 
            +
                   post_data.parsed_response.kind_of?(Hash) and
         | 
| 67 | 
            +
                   !post_data.parsed_response["error"].blank?
         | 
| 68 | 
            +
                end
         | 
| 48 69 |  | 
| 49 70 | 
             
                def self.create_from_session_key(session_key, client_id, secret)
         | 
| 50 71 | 
             
                  authenticator = Mogli::Authenticator.new(client_id, secret, nil)
         | 
| @@ -140,7 +161,7 @@ module Mogli | |
| 140 161 | 
             
                      type = data["error"]["type"]
         | 
| 141 162 | 
             
                      message = data["error"]["message"]
         | 
| 142 163 | 
             
                      raise Mogli::Client.const_get(type).new(message) if Mogli::Client.const_defined?(type)
         | 
| 143 | 
            -
                      raise  | 
| 164 | 
            +
                      raise ClientException.new("#{type}: #{message}")
         | 
| 144 165 | 
             
                    end
         | 
| 145 166 | 
             
                  end
         | 
| 146 167 | 
             
                end
         | 
    
        data/lib/mogli/group.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module Mogli
         | 
| 2 2 | 
             
              class Group < Model
         | 
| 3 3 | 
             
                set_search_type
         | 
| 4 | 
            -
                define_properties :id, :name, :description, :link, :privacy, :updated_time
         | 
| 4 | 
            +
                define_properties :id, :name, :description, :link, :privacy, :updated_time, :version, :administrator
         | 
| 5 5 |  | 
| 6 6 | 
             
                hash_populating_accessor :owner, "User", "Page"
         | 
| 7 7 | 
             
                hash_populating_accessor :venue, "Address"
         | 
    
        data/lib/mogli/model.rb
    CHANGED
    
    | @@ -25,7 +25,23 @@ module Mogli | |
| 25 25 | 
             
                  post_params = {}
         | 
| 26 26 | 
             
                  self.class.creation_keys.each do |key|
         | 
| 27 27 | 
             
                    post_params[key] = self[key]
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    # make sure actions and any other creation_properties that aren't just
         | 
| 30 | 
            +
                    # hash entries get added...
         | 
| 31 | 
            +
                    if post_params[key].nil? &&
         | 
| 32 | 
            +
                       self.respond_to?(key.to_sym) && !self.send(key.to_sym).nil?
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                      val = self.send(key.to_sym)
         | 
| 35 | 
            +
                      post_params[key] = if val.respond_to?(:to_json)
         | 
| 36 | 
            +
                                           val.to_json
         | 
| 37 | 
            +
                                         elsif val.is_a?(Array)
         | 
| 38 | 
            +
                                           "[#{val.map { |v| v.respond_to?(:to_json) ? v.to_json : nil }.compact.join(',')}]"
         | 
| 39 | 
            +
                                         else
         | 
| 40 | 
            +
                                           nil
         | 
| 41 | 
            +
                                         end
         | 
| 42 | 
            +
                    end
         | 
| 28 43 | 
             
                  end
         | 
| 44 | 
            +
             | 
| 29 45 | 
             
                  post_params
         | 
| 30 46 | 
             
                end
         | 
| 31 47 |  | 
| @@ -100,7 +116,7 @@ module Mogli | |
| 100 116 |  | 
| 101 117 | 
             
                def fetch()
         | 
| 102 118 | 
             
                  raise ArgumentError.new("You cannot fetch models without a populated id attribute") if id.nil?
         | 
| 103 | 
            -
                  other = self.class.find(id,client) | 
| 119 | 
            +
                  other = self.class.find(id,client)
         | 
| 104 120 | 
             
                  merge!(other) if other
         | 
| 105 121 | 
             
                end
         | 
| 106 122 |  | 
| @@ -116,5 +132,3 @@ module Mogli | |
| 116 132 |  | 
| 117 133 | 
             
              end
         | 
| 118 134 | 
             
            end
         | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
    
        data/lib/mogli/movie.rb
    CHANGED
    
    
    
        data/lib/mogli/post.rb
    CHANGED
    
    | @@ -1,16 +1,18 @@ | |
| 1 | 
            +
            require 'json'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Mogli
         | 
| 2 4 | 
             
              class Post < Model
         | 
| 3 | 
            -
             | 
| 4 | 
            -
                define_properties :id, :to, :message, :picture, :link, :name, :caption, | 
| 5 | 
            +
             | 
| 6 | 
            +
                define_properties :id, :to, :message, :picture, :link, :name, :caption,
         | 
| 5 7 | 
             
                  :description, :source, :icon, :attribution, :actions, :likes,
         | 
| 6 8 | 
             
                  :created_time, :updated_time, :privacy, :type
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                creation_properties :message, :picture, :link, :name, :description, :caption, :source
         | 
| 9 | 
            -
             | 
| 9 | 
            +
             | 
| 10 | 
            +
                creation_properties :message, :picture, :link, :name, :description, :caption, :source, :actions
         | 
| 11 | 
            +
             | 
| 10 12 | 
             
                hash_populating_accessor :actions, "Action"
         | 
| 11 13 | 
             
                has_association :comments, "Comment"
         | 
| 12 14 | 
             
                hash_populating_accessor :from, "User"
         | 
| 13 | 
            -
             | 
| 15 | 
            +
             | 
| 14 16 | 
             
                def likes_create
         | 
| 15 17 | 
             
                  client.post("#{id}/likes",nil,{})
         | 
| 16 18 | 
             
                end
         | 
    
        data/lib/mogli/profile.rb
    CHANGED
    
    | @@ -14,14 +14,31 @@ module Mogli | |
| 14 14 | 
             
                has_association :links, "Link"
         | 
| 15 15 | 
             
                has_association :statuses, "Status"
         | 
| 16 16 | 
             
                has_association :checkins, "Checkin"
         | 
| 17 | 
            -
             | 
| 17 | 
            +
             | 
| 18 18 | 
             
                hash_populating_accessor :location, "Location"
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                # Facebook's defaults image url, which seems to be the same as square_image_url at this time
         | 
| 19 21 | 
             
                def image_url
         | 
| 20 22 | 
             
                  "https://graph.facebook.com/#{id}/picture"
         | 
| 21 23 | 
             
                end
         | 
| 22 24 |  | 
| 25 | 
            +
                # 50x50 pixel image url
         | 
| 26 | 
            +
                def square_image_url
         | 
| 27 | 
            +
                  "#{image_url}?type=square"
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                # 50 pixels wide, variable height image url
         | 
| 31 | 
            +
                def small_image_url
         | 
| 32 | 
            +
                  "#{image_url}?type=small"
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                # About 200 pixels wide, variable height image url
         | 
| 36 | 
            +
                def large_image_url
         | 
| 37 | 
            +
                  "#{image_url}?type=large"
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 23 40 | 
             
                def to_s
         | 
| 24 41 | 
             
                  name
         | 
| 25 42 | 
             
                end
         | 
| 26 43 | 
             
              end
         | 
| 27 | 
            -
            end
         | 
| 44 | 
            +
            end
         | 
    
        data/lib/mogli/television.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: mogli
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
               | 
| 4 | 
            +
              hash: 63
         | 
| 5 | 
            +
              prerelease: false
         | 
| 6 | 
            +
              segments: 
         | 
| 7 | 
            +
              - 0
         | 
| 8 | 
            +
              - 0
         | 
| 9 | 
            +
              - 16
         | 
| 10 | 
            +
              version: 0.0.16
         | 
| 5 11 | 
             
            platform: ruby
         | 
| 6 12 | 
             
            authors: 
         | 
| 7 13 | 
             
            - Mike Mangino
         | 
| @@ -9,29 +15,41 @@ autorequire: | |
| 9 15 | 
             
            bindir: bin
         | 
| 10 16 | 
             
            cert_chain: []
         | 
| 11 17 |  | 
| 12 | 
            -
            date: 2010- | 
| 18 | 
            +
            date: 2010-11-08 00:00:00 -05:00
         | 
| 13 19 | 
             
            default_executable: 
         | 
| 14 20 | 
             
            dependencies: 
         | 
| 15 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 16 22 | 
             
              name: hashie
         | 
| 17 | 
            -
               | 
| 18 | 
            -
               | 
| 19 | 
            -
             | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         | 
| 25 | 
            +
                none: false
         | 
| 20 26 | 
             
                requirements: 
         | 
| 21 27 | 
             
                - - ">="
         | 
| 22 28 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 29 | 
            +
                    hash: 23
         | 
| 30 | 
            +
                    segments: 
         | 
| 31 | 
            +
                    - 0
         | 
| 32 | 
            +
                    - 2
         | 
| 33 | 
            +
                    - 0
         | 
| 23 34 | 
             
                    version: 0.2.0
         | 
| 24 | 
            -
             | 
| 35 | 
            +
              type: :runtime
         | 
| 36 | 
            +
              version_requirements: *id001
         | 
| 25 37 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 26 38 | 
             
              name: httparty
         | 
| 27 | 
            -
               | 
| 28 | 
            -
               | 
| 29 | 
            -
             | 
| 39 | 
            +
              prerelease: false
         | 
| 40 | 
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         | 
| 41 | 
            +
                none: false
         | 
| 30 42 | 
             
                requirements: 
         | 
| 31 43 | 
             
                - - ">="
         | 
| 32 44 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 45 | 
            +
                    hash: 9
         | 
| 46 | 
            +
                    segments: 
         | 
| 47 | 
            +
                    - 0
         | 
| 48 | 
            +
                    - 4
         | 
| 49 | 
            +
                    - 3
         | 
| 33 50 | 
             
                    version: 0.4.3
         | 
| 34 | 
            -
             | 
| 51 | 
            +
              type: :runtime
         | 
| 52 | 
            +
              version_requirements: *id002
         | 
| 35 53 | 
             
            description: Simple library for accessing the facebook Open Graph API
         | 
| 36 54 | 
             
            email: mmangino@elevatedrails.com
         | 
| 37 55 | 
             
            executables: []
         | 
| @@ -45,6 +63,7 @@ files: | |
| 45 63 | 
             
            - lib/mogli/activity.rb
         | 
| 46 64 | 
             
            - lib/mogli/address.rb
         | 
| 47 65 | 
             
            - lib/mogli/album.rb
         | 
| 66 | 
            +
            - lib/mogli/application.rb
         | 
| 48 67 | 
             
            - lib/mogli/authenticator.rb
         | 
| 49 68 | 
             
            - lib/mogli/book.rb
         | 
| 50 69 | 
             
            - lib/mogli/checkin.rb
         | 
| @@ -56,6 +75,7 @@ files: | |
| 56 75 | 
             
            - lib/mogli/event.rb
         | 
| 57 76 | 
             
            - lib/mogli/fetching_array.rb
         | 
| 58 77 | 
             
            - lib/mogli/group.rb
         | 
| 78 | 
            +
            - lib/mogli/insight.rb
         | 
| 59 79 | 
             
            - lib/mogli/interest.rb
         | 
| 60 80 | 
             
            - lib/mogli/link.rb
         | 
| 61 81 | 
             
            - lib/mogli/location.rb
         | 
| @@ -84,21 +104,27 @@ rdoc_options: [] | |
| 84 104 | 
             
            require_paths: 
         | 
| 85 105 | 
             
            - lib
         | 
| 86 106 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 107 | 
            +
              none: false
         | 
| 87 108 | 
             
              requirements: 
         | 
| 88 109 | 
             
              - - ">="
         | 
| 89 110 | 
             
                - !ruby/object:Gem::Version 
         | 
| 111 | 
            +
                  hash: 3
         | 
| 112 | 
            +
                  segments: 
         | 
| 113 | 
            +
                  - 0
         | 
| 90 114 | 
             
                  version: "0"
         | 
| 91 | 
            -
              version: 
         | 
| 92 115 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 116 | 
            +
              none: false
         | 
| 93 117 | 
             
              requirements: 
         | 
| 94 118 | 
             
              - - ">="
         | 
| 95 119 | 
             
                - !ruby/object:Gem::Version 
         | 
| 120 | 
            +
                  hash: 3
         | 
| 121 | 
            +
                  segments: 
         | 
| 122 | 
            +
                  - 0
         | 
| 96 123 | 
             
                  version: "0"
         | 
| 97 | 
            -
              version: 
         | 
| 98 124 | 
             
            requirements: []
         | 
| 99 125 |  | 
| 100 126 | 
             
            rubyforge_project: 
         | 
| 101 | 
            -
            rubygems_version: 1.3. | 
| 127 | 
            +
            rubygems_version: 1.3.7
         | 
| 102 128 | 
             
            signing_key: 
         | 
| 103 129 | 
             
            specification_version: 3
         | 
| 104 130 | 
             
            summary: Open Graph Library for Ruby
         |