rest-graph 1.8.0 → 1.9.0
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/.gitmodules +3 -0
- data/CHANGES +31 -0
- data/CONTRIBUTORS +4 -3
- data/README +24 -20
- data/README.md +24 -20
- data/TODO +0 -1
- data/doc/heroku-facebook.md +186 -0
- data/doc/tutorial.md +4 -0
- data/example/rails3/Gemfile +1 -1
- data/example/sinatra/config.ru +16 -0
- data/lib/rest-graph/core.rb +71 -57
- data/lib/rest-graph/rails_util.rb +4 -2
- data/lib/rest-graph/test_util.rb +13 -7
- data/lib/rest-graph/version.rb +1 -1
- data/rest-graph.gemspec +122 -11
- data/task/gemgem.rb +13 -2
- data/test/test_api.rb +13 -1
- data/test/test_cache.rb +3 -2
- data/test/test_misc.rb +5 -18
- data/test/test_old.rb +32 -0
- data/test/test_serialize.rb +5 -0
- data/test/test_test_util.rb +12 -0
- data/test/test_timeout.rb +5 -0
- metadata +27 -30
- data/lib/rest-graph/auto_load.rb +0 -4
- data/lib/rest-graph/autoload.rb +0 -4
data/.gitmodules
ADDED
data/CHANGES
CHANGED
@@ -1,5 +1,36 @@
|
|
1
1
|
= rest-graph changes history
|
2
2
|
|
3
|
+
== rest-graph 1.9.0 -- 2011-05-26
|
4
|
+
|
5
|
+
* [RestGraph] Removed deprecated rest-graph/auto_load.rb, and
|
6
|
+
rest-graph/autoload.rb. Please simply require 'rest-graph'
|
7
|
+
|
8
|
+
* [RestGraph] Removed deprecated strict option. Facebook had fixed their bug.
|
9
|
+
|
10
|
+
* [RestGraph] Removed deprecated broken_old_rest. Please use old_rest instead.
|
11
|
+
|
12
|
+
* [RestGraph] Removed deprecated suppress_decode. Plz use auto_decode instead.
|
13
|
+
|
14
|
+
* [RestGraph] Introduced RestGraph#attributes.
|
15
|
+
|
16
|
+
* [RestGraph] RestGraph#lighten and RestGraph#lighten! now takes an extra
|
17
|
+
argument which let you set attributes.
|
18
|
+
|
19
|
+
* [RestGraph] Now RestGraph#get/post has an option for timeout which
|
20
|
+
make this request use this timeout instead of the default one.
|
21
|
+
|
22
|
+
* [RestGraph] URI.encode on Facebook's broken paging URL. (thanks andy)
|
23
|
+
|
24
|
+
* [RestGraph] Now all old_rest based methods accept a :post option, which
|
25
|
+
means use POST for this API request, but still treating it
|
26
|
+
a GET request for rest-graph, so that caching and other
|
27
|
+
similar features would still work.
|
28
|
+
|
29
|
+
The reason for this option is that some FQL could be very long,
|
30
|
+
FQL multiquery could be even much more longer! Long URLs might
|
31
|
+
cause problems, thus we have provided this option to use POST
|
32
|
+
instead.
|
33
|
+
|
3
34
|
== rest-graph 1.8.0 -- 2011-03-08
|
4
35
|
|
5
36
|
* [RestGraph] Now require 'rest-graph/autoload' is deprecated, simply use
|
data/CONTRIBUTORS
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
Lin Jen-Shin (godfat)
|
2
|
+
Barnabas Debreczeni (keo)
|
3
|
+
John Fan (johnfan)
|
2
4
|
Jaime Cham (jcham)
|
3
5
|
Andrew Liu (eggegg)
|
4
|
-
|
5
|
-
Barnabas Debreczeni (keo)
|
6
|
+
Mariusz Pruszynski (snicky)
|
6
7
|
Florent Vaucelle (florent)
|
7
8
|
Ethan Czahor (ethanz5)
|
8
9
|
Nicolas Fouché (nfo)
|
9
|
-
|
10
|
+
andy (coopsite)
|
data/README
CHANGED
@@ -53,7 +53,7 @@ A lightweight Facebook Graph API client
|
|
53
53
|
|
54
54
|
Or if you want development version, put this in Gemfile:
|
55
55
|
|
56
|
-
gem 'rest-graph', :git => 'git://github.com/cardinalblue/rest-graph.git
|
56
|
+
gem 'rest-graph', :git => 'git://github.com/cardinalblue/rest-graph.git'
|
57
57
|
|
58
58
|
Or as a Rails2 plugin:
|
59
59
|
|
@@ -187,36 +187,36 @@ options for RestGraph instance are also valid options for rest_graph_setup.
|
|
187
187
|
|
188
188
|
1. Set upon RestGraph object creation:
|
189
189
|
|
190
|
-
|
190
|
+
rg = RestGraph.new :app_id => 1234
|
191
191
|
|
192
192
|
2. Set via the rest_graph_setup call in a Controller:
|
193
193
|
|
194
|
-
|
194
|
+
rest_graph_setup :app_id => 1234
|
195
195
|
|
196
196
|
3. Load from a YAML file
|
197
197
|
|
198
|
-
|
199
|
-
|
200
|
-
|
198
|
+
require 'rest-graph/config_util'
|
199
|
+
RestGraph.load_config('path/to/rest-graph.yaml', 'production')
|
200
|
+
rg = RestGraph.new
|
201
201
|
|
202
202
|
4. Load config automatically
|
203
203
|
|
204
|
-
|
205
|
-
|
204
|
+
require 'rest-graph' # under Rails, would load config/rest-graph.yaml
|
205
|
+
rg = RestGraph.new
|
206
206
|
|
207
207
|
5. Override directly
|
208
208
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
209
|
+
module MyDefaults
|
210
|
+
def default_app_id
|
211
|
+
'456'
|
212
|
+
end
|
213
213
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
214
|
+
def default_secret
|
215
|
+
'category theory'
|
216
|
+
end
|
217
|
+
end
|
218
|
+
RestGraph.send(:extend, MyDefaults)
|
219
|
+
rg = RestGraph.new
|
220
220
|
|
221
221
|
## API REFERENCE:
|
222
222
|
|
@@ -230,16 +230,20 @@ options for RestGraph instance are also valid options for rest_graph_setup.
|
|
230
230
|
rg.get('me', :metadata => '1')
|
231
231
|
|
232
232
|
# extra options:
|
233
|
-
# auto_decode: Bool # decode with json or not in this
|
233
|
+
# auto_decode: Bool # decode with json or not in this API request
|
234
234
|
# # default: auto_decode in rest-graph instance
|
235
|
+
# timeout: Int # the timeout for this API request
|
236
|
+
# # default: timeout in rest-graph instance
|
235
237
|
# secret: Bool # use secret_acccess_token or not
|
236
238
|
# # default: false
|
237
239
|
# cache: Bool # use cache or not; if it's false, update cache, too
|
238
240
|
# # default: true
|
239
241
|
# expires_in: Int # control when would the cache be expired
|
240
|
-
# # default:
|
242
|
+
# # default: nil
|
241
243
|
# async: Bool # use eventmachine for http client or not
|
242
244
|
# # default: false, but true in aget family
|
245
|
+
# headers: Hash # additional hash you want to pass
|
246
|
+
# # default: {}
|
243
247
|
rg.get('me', {:metadata => '1'}, :secret => true, expires_in => 600)
|
244
248
|
|
245
249
|
#### post
|
data/README.md
CHANGED
@@ -53,7 +53,7 @@ A lightweight Facebook Graph API client
|
|
53
53
|
|
54
54
|
Or if you want development version, put this in Gemfile:
|
55
55
|
|
56
|
-
gem 'rest-graph', :git => 'git://github.com/cardinalblue/rest-graph.git
|
56
|
+
gem 'rest-graph', :git => 'git://github.com/cardinalblue/rest-graph.git'
|
57
57
|
|
58
58
|
Or as a Rails2 plugin:
|
59
59
|
|
@@ -187,36 +187,36 @@ options for RestGraph instance are also valid options for rest_graph_setup.
|
|
187
187
|
|
188
188
|
1. Set upon RestGraph object creation:
|
189
189
|
|
190
|
-
|
190
|
+
rg = RestGraph.new :app_id => 1234
|
191
191
|
|
192
192
|
2. Set via the rest_graph_setup call in a Controller:
|
193
193
|
|
194
|
-
|
194
|
+
rest_graph_setup :app_id => 1234
|
195
195
|
|
196
196
|
3. Load from a YAML file
|
197
197
|
|
198
|
-
|
199
|
-
|
200
|
-
|
198
|
+
require 'rest-graph/config_util'
|
199
|
+
RestGraph.load_config('path/to/rest-graph.yaml', 'production')
|
200
|
+
rg = RestGraph.new
|
201
201
|
|
202
202
|
4. Load config automatically
|
203
203
|
|
204
|
-
|
205
|
-
|
204
|
+
require 'rest-graph' # under Rails, would load config/rest-graph.yaml
|
205
|
+
rg = RestGraph.new
|
206
206
|
|
207
207
|
5. Override directly
|
208
208
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
209
|
+
module MyDefaults
|
210
|
+
def default_app_id
|
211
|
+
'456'
|
212
|
+
end
|
213
213
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
214
|
+
def default_secret
|
215
|
+
'category theory'
|
216
|
+
end
|
217
|
+
end
|
218
|
+
RestGraph.send(:extend, MyDefaults)
|
219
|
+
rg = RestGraph.new
|
220
220
|
|
221
221
|
## API REFERENCE:
|
222
222
|
|
@@ -230,16 +230,20 @@ options for RestGraph instance are also valid options for rest_graph_setup.
|
|
230
230
|
rg.get('me', :metadata => '1')
|
231
231
|
|
232
232
|
# extra options:
|
233
|
-
# auto_decode: Bool # decode with json or not in this
|
233
|
+
# auto_decode: Bool # decode with json or not in this API request
|
234
234
|
# # default: auto_decode in rest-graph instance
|
235
|
+
# timeout: Int # the timeout for this API request
|
236
|
+
# # default: timeout in rest-graph instance
|
235
237
|
# secret: Bool # use secret_acccess_token or not
|
236
238
|
# # default: false
|
237
239
|
# cache: Bool # use cache or not; if it's false, update cache, too
|
238
240
|
# # default: true
|
239
241
|
# expires_in: Int # control when would the cache be expired
|
240
|
-
# # default:
|
242
|
+
# # default: nil
|
241
243
|
# async: Bool # use eventmachine for http client or not
|
242
244
|
# # default: false, but true in aget family
|
245
|
+
# headers: Hash # additional hash you want to pass
|
246
|
+
# # default: {}
|
243
247
|
rg.get('me', {:metadata => '1'}, :secret => true, expires_in => 600)
|
244
248
|
|
245
249
|
#### post
|
data/TODO
CHANGED
@@ -0,0 +1,186 @@
|
|
1
|
+
# Setting a Facebook app on Heroku
|
2
|
+
|
3
|
+
## Software Installation and Configuration (1)
|
4
|
+
|
5
|
+
### Mac OS
|
6
|
+
|
7
|
+
* Install Xcode from the install DVD or Apple website or Mac App Store.
|
8
|
+
|
9
|
+
* Install Homebrew (package manager).
|
10
|
+
|
11
|
+
curl https://gist.github.com/raw/323731/install_homebrew.rb > /tmp/install_homebrew.rb
|
12
|
+
ruby /tmp/install_homebrew.rb
|
13
|
+
|
14
|
+
* Install Git (source code manager).
|
15
|
+
|
16
|
+
brew install git
|
17
|
+
|
18
|
+
* Install database. You may pick anything that Rails supports, but since
|
19
|
+
Heroku uses PostgreSQL, we recommend to use the same database.
|
20
|
+
|
21
|
+
brew install postgresql
|
22
|
+
initdb /usr/local/var/postgres
|
23
|
+
pg_ctl -D /usr/local/var/postgres start
|
24
|
+
createuser --createdb YourProject
|
25
|
+
|
26
|
+
* Setup postgres to auto-start after boot.
|
27
|
+
|
28
|
+
cp `brew --prefix postgresql`/org.postgresql.postgres.plist ~/Library/LaunchAgents/
|
29
|
+
launchctl load -w ~/Library/LaunchAgents/org.postgresql.postgres.plist
|
30
|
+
|
31
|
+
* ...or start up postgres manually:
|
32
|
+
|
33
|
+
pg_ctl -D /usr/local/var/postgres start
|
34
|
+
|
35
|
+
* Install Ruby 1.9.2 (via Homebrew, but if you prefer RVM, it's fine).
|
36
|
+
|
37
|
+
brew install ruby
|
38
|
+
|
39
|
+
### Ubuntu (Linux)
|
40
|
+
|
41
|
+
* Install various tools
|
42
|
+
|
43
|
+
sudo apt-get update
|
44
|
+
sudo apt-get install gcc g++ make libssl-dev zlib1g-dev libreadline5-dev libyaml-dev libxml2-dev
|
45
|
+
|
46
|
+
* Install Git (source code manger).
|
47
|
+
|
48
|
+
sudo apt-get install git
|
49
|
+
|
50
|
+
* Install database. You may pick anything Rails supports, but since
|
51
|
+
Heroku uses PostgreSQL, we recommend to use the same database.
|
52
|
+
|
53
|
+
sudo apt-get install postgresql libpq-dev
|
54
|
+
sudo /etc/init.d/postgresql restart
|
55
|
+
sudo -u postgres createuser --createdb YourProject
|
56
|
+
|
57
|
+
You might need to edit `pg_hba.conf` (the path would be something like this:
|
58
|
+
/etc/postgresql/8.4/main/pg_hba.conf) to make sure _YourProject_ has the
|
59
|
+
access to your local database. For example, has the following line:
|
60
|
+
|
61
|
+
local all YourProject trust
|
62
|
+
|
63
|
+
And make sure there's **NO** this line: (it conflicts with the above)
|
64
|
+
|
65
|
+
local all all ident
|
66
|
+
|
67
|
+
You should restart postgresql after updating `pg_hba.conf`
|
68
|
+
|
69
|
+
sudo /etc/init.d/postgresql restart
|
70
|
+
|
71
|
+
* Install Ruby 1.9.2
|
72
|
+
|
73
|
+
bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
|
74
|
+
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"' >> ~/.bash_profile
|
75
|
+
source $HOME/.rvm/scripts/rvm
|
76
|
+
rvm install 1.9.2
|
77
|
+
rvm use 1.9.2
|
78
|
+
|
79
|
+
### Windows (not tested)
|
80
|
+
|
81
|
+
* Install Git <http://code.google.com/p/msysgit/downloads/list>
|
82
|
+
* Install Ruby 1.9.2 <http://rubyinstaller.org/downloads/>
|
83
|
+
* Install PostgreSQL <http://www.postgresql.org/download/>
|
84
|
+
|
85
|
+
## Software Installation and Configuration (2)
|
86
|
+
|
87
|
+
### General (OS-independent)
|
88
|
+
|
89
|
+
* Depending on the OS and your configuration, you may need to prefix with
|
90
|
+
"sudo" to install the gems. You don't have to if you're following the
|
91
|
+
instructions above to install Ruby (RVM or Homebrew), or running on Windows.
|
92
|
+
|
93
|
+
* Configure Git (~/.gitconfig)
|
94
|
+
|
95
|
+
git config --global user.name 'Your Name'
|
96
|
+
git config --global user.email 'your@email.com'
|
97
|
+
|
98
|
+
* Install gems
|
99
|
+
|
100
|
+
echo 'gem: --no-ri --no-rdoc' >> ~/.gemrc
|
101
|
+
gem install rails pg heroku
|
102
|
+
|
103
|
+
Note: on newer Macs, if pg fails to install, try this:
|
104
|
+
|
105
|
+
env ARCHFLAGS='-arch x86_64' gem install pg
|
106
|
+
|
107
|
+
* Generate RSA keys and upload to Heroku. (you'll need a [Heroku][] account)
|
108
|
+
|
109
|
+
ssh-keygen -t rsa -C 'your@email.com'
|
110
|
+
heroku keys:add ~/.ssh/id_rsa.pub
|
111
|
+
|
112
|
+
[Heroku]: http://heroku.com
|
113
|
+
|
114
|
+
## Create a Rails application and push to Heroku
|
115
|
+
|
116
|
+
* Rails 3 project
|
117
|
+
|
118
|
+
rails new 'YourProject'
|
119
|
+
cd 'YourProject'
|
120
|
+
|
121
|
+
* Git initialization
|
122
|
+
|
123
|
+
git init
|
124
|
+
git add .
|
125
|
+
git commit -m 'first commit'
|
126
|
+
|
127
|
+
* Switch to PostgreSQL. Edit the Gemfile and change `gem 'sqlite3'` to `gem 'pg'`:
|
128
|
+
|
129
|
+
bundle check
|
130
|
+
git add Gemfile Gemfile.lock
|
131
|
+
git commit -m 'switch to postgresql'
|
132
|
+
|
133
|
+
* Set up the Heroku application
|
134
|
+
|
135
|
+
heroku create 'YourProject'
|
136
|
+
|
137
|
+
* Push to Heroku. (from local master branch to remote master branch)
|
138
|
+
|
139
|
+
git push heroku master:master
|
140
|
+
|
141
|
+
* Take a look at yourproject.heroku.com. If you have terminal browser lynx
|
142
|
+
installed, you can run this:
|
143
|
+
|
144
|
+
lynx yourproject.heroku.com
|
145
|
+
|
146
|
+
Otherwise, just use your favorite browser to view it.
|
147
|
+
|
148
|
+
## For development, set up the application to run locally on your computer
|
149
|
+
|
150
|
+
* Edit `config/database.yml` with following:
|
151
|
+
|
152
|
+
development:
|
153
|
+
adapter: postgresql
|
154
|
+
username: YourProject
|
155
|
+
database: YourProject_development
|
156
|
+
|
157
|
+
test:
|
158
|
+
adapter: postgresql
|
159
|
+
username: YourProject
|
160
|
+
database: YourProject_test
|
161
|
+
|
162
|
+
* Setup local database
|
163
|
+
|
164
|
+
rake db:create
|
165
|
+
rake db:migrate
|
166
|
+
rake db:schema:dump # update schema.rb for reference
|
167
|
+
rake db:test:prepare # sometimes this is needed to run tests
|
168
|
+
|
169
|
+
* Run Ruby server (WEBrick)
|
170
|
+
|
171
|
+
rails server
|
172
|
+
|
173
|
+
* or run Thin server (need to update Gemfile with `gem 'thin'`)
|
174
|
+
|
175
|
+
gem install thin
|
176
|
+
rails server thin
|
177
|
+
|
178
|
+
## Create a Facebook Application
|
179
|
+
|
180
|
+
* <http://devcenter.heroku.com/articles/facebook>
|
181
|
+
|
182
|
+
## Using rest-graph
|
183
|
+
|
184
|
+
### Tutorial
|
185
|
+
|
186
|
+
* <https://github.com/cardinalblue/samplergthree>
|
data/doc/tutorial.md
CHANGED
@@ -28,6 +28,10 @@ The code in this tutorial could be found on [samplergthree][]
|
|
28
28
|
gem 'rest-client', '>=1.6'
|
29
29
|
gem 'json' # you may also use other JSON parsers/generators, i.e. 'yajl-ruby' or 'json_pure'
|
30
30
|
|
31
|
+
And run:
|
32
|
+
|
33
|
+
bundle install
|
34
|
+
|
31
35
|
|
32
36
|
5. In order to configure your Rails application for the Facebook application you created, you must create a rest-graph.yaml file in your /config directory and fill it with your Facebook configuration. If you plan to run your application in the Facebook canvas, also provide a canvas name.
|
33
37
|
|
data/example/rails3/Gemfile
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
require 'sinatra'
|
3
|
+
require 'rest-graph'
|
4
|
+
|
5
|
+
app_id = '123'
|
6
|
+
secret = 'abc'
|
7
|
+
config = {:app_id => app_id,
|
8
|
+
:secret => secret}
|
9
|
+
|
10
|
+
post '/' do
|
11
|
+
rg = RestGraph.new(config)
|
12
|
+
rg.parse_signed_request!(params['signed_request'])
|
13
|
+
"#{rg.get('me').inspect.gsub('<', '<')}\n"
|
14
|
+
end
|
15
|
+
|
16
|
+
run Sinatra::Application
|