hyper-graph 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -54,7 +54,7 @@ You can make connection requests, too:
54
54
  => true
55
55
  irb > graph.object('514569082_115714061789461').delete(:likes)
56
56
  => true
57
-
57
+
58
58
  Or, you can request from the graph directly:
59
59
  irb > graph.get('me')
60
60
  => {:updated_time=>Wed Mar 17 16:19:03 -0400 2010, :first_name=>"Chris", :last_name=>"Dinn", ...
@@ -68,7 +68,13 @@ Similarly, make a post or delete request directly from the graph:
68
68
  => true
69
69
  irb > graph.delete('514569082_115714061789461/likes')
70
70
  => true
71
-
71
+
72
+ You can search, using the search function:
73
+ irb > graph.search('big band')
74
+ => [{ :id => '113412341299949562_134212343177', :from => { :name => "Big Band Ballroom"...
75
+ irb > HyperGraph.search('big band')
76
+ => [{ :id => '113412341299949562_134212343177', :from => { :name => "Big Band Ballroom"...
77
+
72
78
  As well, you can make requests directly from HyperGraph, with or without an access token (though you'll need an access token for most requests):
73
79
  irb > HyperGraph.get('518018845')
74
80
  => {:first_name=>"Chris", :last_name=>"Dinn", :name=>"Chris Dinn", ...
data/lib/hyper_graph.rb CHANGED
@@ -20,7 +20,7 @@ class HyperGraph
20
20
  request_path = "/#{requested_object_id}"
21
21
 
22
22
  query = build_query(options)
23
- request_path << "?#{query}" unless query==""
23
+ request_path << "?#{URI.escape(query)}" unless query==""
24
24
 
25
25
  http_response = http.get(request_path)
26
26
  data = extract_data(JSON.parse(http_response.body))
@@ -55,7 +55,11 @@ class HyperGraph
55
55
  request_path = "/oauth/access_token"
56
56
  request_path << "?#{build_query(:client_id => client_id, :client_secret => client_secret, :redirect_uri => redirect_uri, :code => code)}"
57
57
  http_response = http.get(request_path)
58
- http_response.body.split('=')[1]
58
+ http_response.body.split(/\=|&/)[1]
59
+ end
60
+
61
+ def search(query, options = {})
62
+ get('search', options.merge(:q => query))
59
63
  end
60
64
 
61
65
  protected
@@ -93,7 +97,7 @@ class HyperGraph
93
97
  when "error"
94
98
  raise FacebookError.new("#{v['type']} - #{v['message']}")
95
99
  when "id"
96
- if (v.to_i == v.to_s.to_i)
100
+ if (v == v.to_i.to_s)
97
101
  normalized_hash[k.to_sym] = v.to_i
98
102
  else
99
103
  normalized_hash[k.to_sym] = v
@@ -149,4 +153,8 @@ class HyperGraph
149
153
  def delete(requested_object_id, options = {})
150
154
  self.class.delete(requested_object_id, options.merge(:access_token => @access_token))
151
155
  end
156
+
157
+ def search(query, options = {})
158
+ self.class.get('search', options.merge(:access_token => @access_token, :q => query))
159
+ end
152
160
  end
@@ -162,6 +162,32 @@ class HyperGraphTest < Test::Unit::TestCase
162
162
  graph = HyperGraph.new(access_token)
163
163
  assert_equal true, graph.delete('514569082_115714061789461/likes')
164
164
  end
165
+
166
+ def test_graph_search
167
+ json_api_response = %'{"data": [
168
+ {"id": "113412341299949562_134212343177", "from": {"name": "Big Band Ballroom", "category": "Local_business", "id": "1334523899949562"}, "message": "Big band at our ballroom", "link": "http://www.facebook.com/", "type": "link" },
169
+ {"id": "100123706392497_142067305819279", "from": {"name": "Big Band Guy", "id": "100000706392497"},"message": "What a band", "type": "status" }
170
+ ]}'
171
+ expected_parsed_response = [ { :id => '113412341299949562_134212343177',
172
+ :from => { :name => "Big Band Ballroom", :category=> "Local_business", :id => 1334523899949562 },
173
+ :message => "Big band at our ballroom",
174
+ :link => "http://www.facebook.com/",
175
+ :type => "link"},
176
+ { :id => "100123706392497_142067305819279",
177
+ :from => { :name => "Big Band Guy", :id => 100000706392497 },
178
+ :message => "What a band",
179
+ :type => "status" }
180
+ ]
181
+ access_token = "test-access-token"
182
+ mock_response = stub(:body => json_api_response)
183
+ @mock_connection.stubs(:use_ssl=).with(true)
184
+ @mock_connection.stubs(:get).with("/search?access_token=#{access_token}&q=big%20band").returns(mock_response)
185
+
186
+ assert_equal expected_parsed_response, HyperGraph.search('big band', :access_token => access_token)
187
+
188
+ graph = HyperGraph.new('test-access-token')
189
+ assert_equal expected_parsed_response, graph.search('big band', :access_token => access_token)
190
+ end
165
191
 
166
192
  def test_authorize_url
167
193
  client_id = "your-client-id"
@@ -187,7 +213,7 @@ class HyperGraphTest < Test::Unit::TestCase
187
213
  client_secret = "your-client-secret"
188
214
  code = "facebook-oauth-code"
189
215
  callback_url = "http://yoursite.com/callback"
190
- api_response = "access_token=#{access_token}"
216
+ api_response = "access_token=#{access_token}&expires=5008"
191
217
 
192
218
  mock_response = stub(:body => api_response)
193
219
  @mock_connection.expects(:use_ssl=).with(true)
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 1
9
- version: 0.3.1
8
+ - 2
9
+ version: 0.3.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Chris Dinn
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-04 00:00:00 -04:00
17
+ date: 2010-07-22 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency