restapi 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -1
- data/Gemfile.lock +83 -64
- data/README.rdoc +375 -2
- data/app/controllers/restapi/restapis_controller.rb +21 -3
- data/app/helpers/restapi/restapis_helper.rb +31 -0
- data/app/public/restapi/javascripts/bundled/prettify.js +28 -0
- data/app/public/restapi/javascripts/restapi.js +4 -13
- data/app/public/restapi/stylesheets/bundled/prettify.css +30 -0
- data/app/views/layouts/restapi/restapi.html.erb +36 -0
- data/app/views/restapi/restapis/index.html.erb +35 -33
- data/app/views/restapi/restapis/method.html.erb +59 -0
- data/app/views/restapi/restapis/resource.html.erb +71 -0
- data/app/views/restapi/restapis/static.html.erb +103 -0
- data/lib/restapi.rb +0 -10
- data/lib/restapi/application.rb +25 -10
- data/lib/restapi/dsl_definition.rb +38 -32
- data/lib/restapi/markup.rb +12 -12
- data/lib/restapi/method_description.rb +10 -8
- data/lib/restapi/param_description.rb +23 -10
- data/lib/restapi/resource_description.rb +1 -1
- data/lib/restapi/restapi_module.rb +15 -0
- data/lib/restapi/validator.rb +37 -14
- data/lib/restapi/version.rb +1 -1
- data/lib/tasks/restapi.rake +157 -0
- data/restapi.gemspec +1 -1
- data/spec/controllers/restapis_controller_spec.rb +84 -0
- data/spec/controllers/users_controller_spec.rb +273 -221
- data/spec/dummy/app/controllers/twitter_example_controller.rb +209 -208
- data/spec/dummy/app/controllers/users_controller.rb +23 -33
- data/spec/dummy/config/initializers/restapi.rb +45 -23
- data/spec/dummy/config/routes.rb +12 -7
- metadata +26 -15
- data/app/public/restapi/javascripts/bundled/backbone.js +0 -1431
- data/app/public/restapi/javascripts/bundled/json2.js +0 -487
- data/app/public/restapi/javascripts/bundled/underscore.js +0 -999
- data/app/public/restapi/javascripts/jst.js +0 -127
- data/app/public/restapi/javascripts/routers/documentation_router.js +0 -52
- data/app/public/restapi/stylesheets/bundled/bootstrap-responsive.css +0 -686
- data/app/public/restapi/stylesheets/bundled/bootstrap.css +0 -3990
- data/spec/dummy/app/controllers/dogs_controller.rb +0 -20
- data/spec/dummy/app/helpers/application_helper.rb +0 -2
@@ -3,12 +3,11 @@ class TwitterExampleController < ApplicationController
|
|
3
3
|
resource_description do
|
4
4
|
name 'Users'
|
5
5
|
short_description 'Users are at the center of everything Twitter: they follow, they favorite, and tweet & retweet.'
|
6
|
-
path '/
|
6
|
+
path '/twitter_example/'
|
7
|
+
description "Long description of this resource."
|
7
8
|
end
|
8
9
|
|
9
|
-
api :
|
10
|
-
:path => '/users/lookup',
|
11
|
-
:method => 'GET'
|
10
|
+
api :GET, '/twitter_example/lookup', 'Return up to 100 users worth of extended information, specified by either ID, screen name, or combination of the two.'
|
12
11
|
param :screen_name, String, :desc => 'A comma separated list of screen names, up to 100 are allowed in a single request. You are strongly encouraged to use a POST for larger (up to 100 screen names) requests.'
|
13
12
|
param :user_id, Integer, :desc => 'A comma separated list of user IDs, up to 100 are allowed in a single request. You are strongly encouraged to use a POST for larger requests.'
|
14
13
|
param :include_entities, String, :desc => 'When set to either <code>true</code>, <code>t</code> or <code>1</code>, each tweet will include a node called "entities,". This node offers a variety of metadata about the tweet in a discreet structure, including: user_mentions, urls, and hashtags. While entities are opt-in on timelines at present, they will be made a default component of output in the future. See Tweet Entities for more detail on entities.'
|
@@ -30,9 +29,7 @@ class TwitterExampleController < ApplicationController
|
|
30
29
|
render :text => "lookup"
|
31
30
|
end
|
32
31
|
|
33
|
-
api :
|
34
|
-
:path => '/users/profile_image/:screen_name',
|
35
|
-
:method => 'GET'
|
32
|
+
api :GET, '/twitter_example/profile_image/:screen_name', 'Access the profile image in various sizes for the user with the indicated screen_name.'
|
36
33
|
param :screen_name, String, :required => true, :desc => 'The screen name of the user for whom to return results for. Helpful for disambiguating when a valid screen name is also a user ID.'
|
37
34
|
param :size, ['bigger','normal','mini','original'], :desc => <<-EOS
|
38
35
|
Specifies the size of image to fetch. Not specifying a size will give the default, normal size of 48px by 48px. Valid options include:
|
@@ -50,11 +47,10 @@ class TwitterExampleController < ApplicationController
|
|
50
47
|
This method should only be used by application developers to lookup or check the profile image URL for a user. This method must not be used as the image source URL presented to users of your application.
|
51
48
|
EOS
|
52
49
|
def profile_image
|
53
|
-
render :text => "profile_image"
|
50
|
+
render :text => "profile_image of '#{params[:screen_name]}'"
|
54
51
|
end
|
55
52
|
|
56
|
-
api :
|
57
|
-
:desc => 'Runs a search for users similar to Find People button on Twitter.com.'
|
53
|
+
api :GET, '/twitter_example/search', 'Runs a search for users similar to Find People button on Twitter.com.'
|
58
54
|
param :q, String, :desc => 'The search query to run against people search.', :required => true
|
59
55
|
param :page, Integer, :desc => 'Specifies the page of results to retrieve.'
|
60
56
|
param :per_page, Integer, :desc => 'The number of people to retrieve. Maxiumum of 20 allowed per page.'
|
@@ -66,93 +62,95 @@ class TwitterExampleController < ApplicationController
|
|
66
62
|
|
67
63
|
=== Extended description
|
68
64
|
This method has a feature-specific rate limit of 60 calls per hour that is applied in conjunction with the main REST API rate limit. Calls to this method will count against the feature-specific rate limit and the main REST API rate limit. If either limit is exhausted, the request will fail. You can monitor the status of the feature-specific rate limit by inspecting the HTTP response headers <tt>X-FeatureRateLimit-Limit</tt>, <tt>X-FeatureRateLimit-Remaining</tt>, and <tt>X-FeatureRateLimit-Reset</tt>. These headers correspond to the <tt>X-RateLimit</tt> headers provided by the main REST API limit.
|
69
|
-
[
|
70
|
-
{
|
71
|
-
"name": "Twitter API",
|
72
|
-
"profile_sidebar_border_color": "87bc44",
|
73
|
-
"profile_background_tile": false,
|
74
|
-
"profile_sidebar_fill_color": "e0ff92",
|
75
|
-
"location": "San Francisco, CA",
|
76
|
-
"profile_image_url": "http://a3.twimg.com/profile_images/689684365/api_normal.png",
|
77
|
-
"created_at": "Wed May 23 06:01:13 +0000 2007",
|
78
|
-
"profile_link_color": "0000ff",
|
79
|
-
"favourites_count": 2,
|
80
|
-
"url": "http://apiwiki.twitter.com",
|
81
|
-
"contributors_enabled": true,
|
82
|
-
"utc_offset": -28800,
|
83
|
-
"id": 6253282,
|
84
|
-
"profile_use_background_image": true,
|
85
|
-
"profile_text_color": "000000",
|
86
|
-
"protected": false,
|
87
|
-
"followers_count": 160753,
|
88
|
-
"lang": "en",
|
89
|
-
"verified": true,
|
90
|
-
"profile_background_color": "c1dfee",
|
91
|
-
"geo_enabled": true,
|
92
|
-
"notifications": null,
|
93
|
-
"description": "The Real Twitter API. I tweet about API changes, service issues and happily answer questions about Twitter and our API. Don't get an answer? It's on my website.",
|
94
|
-
"time_zone": "Pacific Time (US & Canada)",
|
95
|
-
"friends_count": 19,
|
96
|
-
"statuses_count": 1858,
|
97
|
-
"profile_background_image_url": "http://a3.twimg.com/profile_background_images/59931895/twitterapi-background-new.png",
|
98
|
-
"status": {
|
99
|
-
"coordinates": null,
|
100
|
-
"favorited": false,
|
101
|
-
"created_at": "Tue Jun 22 16:53:28 +0000 2010",
|
102
|
-
"truncated": false,
|
103
|
-
"text": "@Demonicpagan possible some part of your signature generation is incorrect & fails for real reasons.. follow up on the list if you suspect",
|
104
|
-
"contributors": null,
|
105
|
-
"id": 16783999399,
|
106
|
-
"geo": null,
|
107
|
-
"in_reply_to_user_id": 6339722,
|
108
|
-
"place": null,
|
109
|
-
"source": "<a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a>",
|
110
|
-
"in_reply_to_screen_name": "Demonicpagan",
|
111
|
-
"in_reply_to_status_id": 16781827477
|
112
|
-
},
|
113
|
-
"screen_name": "twitterapi",
|
114
|
-
"following": null
|
115
|
-
},
|
116
|
-
...
|
117
|
-
{
|
118
|
-
"name": "twitterAPI",
|
119
|
-
"profile_sidebar_border_color": "87bc44",
|
120
|
-
"profile_background_tile": false,
|
121
|
-
"profile_sidebar_fill_color": "e0ff92",
|
122
|
-
"location": null,
|
123
|
-
"profile_image_url": "http://s.twimg.com/a/1277162817/images/default_profile_6_normal.png",
|
124
|
-
"created_at": "Fri Jun 04 12:07:25 +0000 2010",
|
125
|
-
"profile_link_color": "0000ff",
|
126
|
-
"favourites_count": 0,
|
127
|
-
"url": null,
|
128
|
-
"contributors_enabled": false,
|
129
|
-
"utc_offset": null,
|
130
|
-
"id": 151851125,
|
131
|
-
"profile_use_background_image": true,
|
132
|
-
"profile_text_color": "000000",
|
133
|
-
"protected": false,
|
134
|
-
"followers_count": 0,
|
135
|
-
"lang": "ja",
|
136
|
-
"verified": false,
|
137
|
-
"profile_background_color": "9ae4e8",
|
138
|
-
"geo_enabled": false,
|
139
|
-
"notifications": false,
|
140
|
-
"description": null,
|
141
|
-
"time_zone": null,
|
142
|
-
"friends_count": 0,
|
143
|
-
"statuses_count": 0,
|
144
|
-
"profile_background_image_url": "http://s.twimg.com/a/1277162817/images/themes/theme1/bg.png",
|
145
|
-
"screen_name": "popoAPI",
|
146
|
-
"following": false
|
147
|
-
}
|
148
|
-
]
|
149
65
|
EOS
|
66
|
+
|
67
|
+
example <<-EDOC
|
68
|
+
[
|
69
|
+
{
|
70
|
+
"name": "Twitter API",
|
71
|
+
"profile_sidebar_border_color": "87bc44",
|
72
|
+
"profile_background_tile": false,
|
73
|
+
"profile_sidebar_fill_color": "e0ff92",
|
74
|
+
"location": "San Francisco, CA",
|
75
|
+
"profile_image_url": "http://a3.twimg.com/profile_images/689684365/api_normal.png",
|
76
|
+
"created_at": "Wed May 23 06:01:13 +0000 2007",
|
77
|
+
"profile_link_color": "0000ff",
|
78
|
+
"favourites_count": 2,
|
79
|
+
"url": "http://apiwiki.twitter.com",
|
80
|
+
"contributors_enabled": true,
|
81
|
+
"utc_offset": -28800,
|
82
|
+
"id": 6253282,
|
83
|
+
"profile_use_background_image": true,
|
84
|
+
"profile_text_color": "000000",
|
85
|
+
"protected": false,
|
86
|
+
"followers_count": 160753,
|
87
|
+
"lang": "en",
|
88
|
+
"verified": true,
|
89
|
+
"profile_background_color": "c1dfee",
|
90
|
+
"geo_enabled": true,
|
91
|
+
"notifications": null,
|
92
|
+
"description": "The Real Twitter API. I tweet about API changes, service issues and happily answer questions about Twitter and our API. Don't get an answer? It's on my website.",
|
93
|
+
"time_zone": "Pacific Time (US & Canada)",
|
94
|
+
"friends_count": 19,
|
95
|
+
"statuses_count": 1858,
|
96
|
+
"profile_background_image_url": "http://a3.twimg.com/profile_background_images/59931895/twitterapi-background-new.png",
|
97
|
+
"status": {
|
98
|
+
"coordinates": null,
|
99
|
+
"favorited": false,
|
100
|
+
"created_at": "Tue Jun 22 16:53:28 +0000 2010",
|
101
|
+
"truncated": false,
|
102
|
+
"text": "@Demonicpagan possible some part of your signature generation is incorrect & fails for real reasons.. follow up on the list if you suspect",
|
103
|
+
"contributors": null,
|
104
|
+
"id": 16783999399,
|
105
|
+
"geo": null,
|
106
|
+
"in_reply_to_user_id": 6339722,
|
107
|
+
"place": null,
|
108
|
+
"source": "<a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a>",
|
109
|
+
"in_reply_to_screen_name": "Demonicpagan",
|
110
|
+
"in_reply_to_status_id": 16781827477
|
111
|
+
},
|
112
|
+
"screen_name": "twitterapi",
|
113
|
+
"following": null
|
114
|
+
},
|
115
|
+
...
|
116
|
+
{
|
117
|
+
"name": "twitterAPI",
|
118
|
+
"profile_sidebar_border_color": "87bc44",
|
119
|
+
"profile_background_tile": false,
|
120
|
+
"profile_sidebar_fill_color": "e0ff92",
|
121
|
+
"location": null,
|
122
|
+
"profile_image_url": "http://s.twimg.com/a/1277162817/images/default_profile_6_normal.png",
|
123
|
+
"created_at": "Fri Jun 04 12:07:25 +0000 2010",
|
124
|
+
"profile_link_color": "0000ff",
|
125
|
+
"favourites_count": 0,
|
126
|
+
"url": null,
|
127
|
+
"contributors_enabled": false,
|
128
|
+
"utc_offset": null,
|
129
|
+
"id": 151851125,
|
130
|
+
"profile_use_background_image": true,
|
131
|
+
"profile_text_color": "000000",
|
132
|
+
"protected": false,
|
133
|
+
"followers_count": 0,
|
134
|
+
"lang": "ja",
|
135
|
+
"verified": false,
|
136
|
+
"profile_background_color": "9ae4e8",
|
137
|
+
"geo_enabled": false,
|
138
|
+
"notifications": false,
|
139
|
+
"description": null,
|
140
|
+
"time_zone": null,
|
141
|
+
"friends_count": 0,
|
142
|
+
"statuses_count": 0,
|
143
|
+
"profile_background_image_url": "http://s.twimg.com/a/1277162817/images/themes/theme1/bg.png",
|
144
|
+
"screen_name": "popoAPI",
|
145
|
+
"following": false
|
146
|
+
}
|
147
|
+
]
|
148
|
+
EDOC
|
150
149
|
def search
|
151
150
|
render :text => 'search'
|
152
151
|
end
|
153
152
|
|
154
|
-
api :
|
155
|
-
:desc => 'Returns extended information of a given user, specified by ID or screen name as per the required id parameter.'
|
153
|
+
api :GET, '/twitter_example/show', 'Returns extended information of a given user, specified by ID or screen name as per the required id parameter.'
|
156
154
|
param :user_id, Integer, :required => true, :desc => <<-EOS
|
157
155
|
The ID of the user for whom to return results for. Either an id or screen_name is required for this method.
|
158
156
|
_Note_: Specifies the ID of the user to befriend. Helpful for disambiguating when a valid user ID is also a valid screen name.
|
@@ -163,137 +161,140 @@ class TwitterExampleController < ApplicationController
|
|
163
161
|
|
164
162
|
You must be following a protected user to be able to see their most recent status update. If you don't follow a protected user, or request this method without autenticating, the users status will be removed.
|
165
163
|
|
166
|
-
The URL pattern <tt>/version/
|
164
|
+
The URL pattern <tt>/version/twitter_example/show/:screen_name_or_user_id.format</tt> is still accepted but not recommended. As a sequence of numbers is a valid screen name we recommend using the +screen_name+ or +user_id+ parameter instead.
|
167
165
|
EDOC
|
168
166
|
def show
|
169
167
|
render :text => 'show'
|
170
168
|
end
|
171
169
|
|
172
|
-
api :
|
173
|
-
:description => 'Returns an array of users who can contribute to the specified account.'
|
170
|
+
api :GET, '/twitter_example/contributors', 'Returns an array of users who can contribute to the specified account.'
|
174
171
|
param :user_id, Integer, :desc => 'The ID of the user for whom to return results for. Helpful for disambiguating when a valid user ID is also a valid screen name.'
|
175
172
|
param :screen_name, String, :desc => 'The screen name of the user for whom to return results for. Helpful for disambiguating when a valid screen name is also a user ID.'
|
176
173
|
param :include_entities, String
|
177
174
|
param :skip_status, ['t','true','1'],
|
178
175
|
:description => 'When set to either true, t or 1 statuses will not be included in the returned user objects.'
|
179
|
-
|
180
|
-
description <<-EDOC
|
181
|
-
=== Example request
|
182
|
-
GET https://api.twitter.com/1/users/contributors.json?screen_name=twitterapi&include_entities=true&skip_status=true
|
183
|
-
[
|
184
|
-
{
|
185
|
-
"profile_sidebar_border_color": "C0DEED",
|
186
|
-
"profile_background_tile": false,
|
187
|
-
"name": "Matt Harris",
|
188
|
-
"profile_sidebar_fill_color": "DDEEF6",
|
189
|
-
"expanded_url": "http://themattharris.com",
|
190
|
-
"created_at": "Sat Feb 17 20:49:54 +0000 2007",
|
191
|
-
"location": "SFO/LHR/YVR/JAX/IAD/AUS",
|
192
|
-
"profile_image_url": "http://a1.twimg.com/profile_images/554181350/matt_normal.jpg",
|
193
|
-
"follow_request_sent": false,
|
194
|
-
"is_translator": false,
|
195
|
-
"profile_link_color": "0084B4",
|
196
|
-
"id_str": "777925",
|
197
|
-
"entities": {
|
198
|
-
"urls": [
|
199
176
|
|
200
|
-
|
201
|
-
|
177
|
+
description "Look at examples."
|
178
|
+
|
179
|
+
example <<-EDOC
|
180
|
+
GET https://api.twitter.com/1/twitter_example/contributors.json?screen_name=twitterapi&include_entities=true&skip_status=true
|
181
|
+
[
|
182
|
+
{
|
183
|
+
"profile_sidebar_border_color": "C0DEED",
|
184
|
+
"profile_background_tile": false,
|
185
|
+
"name": "Matt Harris",
|
186
|
+
"profile_sidebar_fill_color": "DDEEF6",
|
187
|
+
"expanded_url": "http://themattharris.com",
|
188
|
+
"created_at": "Sat Feb 17 20:49:54 +0000 2007",
|
189
|
+
"location": "SFO/LHR/YVR/JAX/IAD/AUS",
|
190
|
+
"profile_image_url": "http://a1.twimg.com/profile_images/554181350/matt_normal.jpg",
|
191
|
+
"follow_request_sent": false,
|
192
|
+
"is_translator": false,
|
193
|
+
"profile_link_color": "0084B4",
|
194
|
+
"id_str": "777925",
|
195
|
+
"entities": {
|
196
|
+
"urls": [
|
197
|
+
|
198
|
+
],
|
199
|
+
"hashtags": [
|
202
200
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
},
|
217
|
-
"default_profile": true,
|
218
|
-
"url": "http://t.co/292MnqA",
|
219
|
-
"contributors_enabled": false,
|
220
|
-
"favourites_count": 120,
|
221
|
-
"id": 777925,
|
222
|
-
"utc_offset": -28800,
|
223
|
-
"listed_count": 271,
|
224
|
-
"profile_use_background_image": true,
|
225
|
-
"followers_count": 6242,
|
226
|
-
"lang": "en",
|
227
|
-
"protected": false,
|
228
|
-
"profile_text_color": "333333",
|
229
|
-
"profile_background_color": "C0DEED",
|
230
|
-
"time_zone": "Pacific Time (US & Canada)",
|
231
|
-
"geo_enabled": true,
|
232
|
-
"description": "Developer Advocate at Twitter and married to @cindyli. NASA enthusiast, British expat and all around geek living in San Francisco.",
|
233
|
-
"notifications": false,
|
234
|
-
"verified": false,
|
235
|
-
"profile_background_image_url": "http://a0.twimg.com/images/themes/theme1/bg.png",
|
236
|
-
"statuses_count": 3835,
|
237
|
-
"display_url": "themattharris.com",
|
238
|
-
"friends_count": 360,
|
239
|
-
"default_profile_image": false,
|
240
|
-
"following": false,
|
241
|
-
"show_all_inline_media": false,
|
242
|
-
"screen_name": "themattharris"
|
201
|
+
],
|
202
|
+
"user_mentions": [
|
203
|
+
{
|
204
|
+
"name": "Cindy Li",
|
205
|
+
"id_str": "29733",
|
206
|
+
"id": 29733,
|
207
|
+
"indices": [
|
208
|
+
45,
|
209
|
+
53
|
210
|
+
],
|
211
|
+
"screen_name": "cindyli"
|
212
|
+
}
|
213
|
+
]
|
243
214
|
},
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
215
|
+
"default_profile": true,
|
216
|
+
"url": "http://t.co/292MnqA",
|
217
|
+
"contributors_enabled": false,
|
218
|
+
"favourites_count": 120,
|
219
|
+
"id": 777925,
|
220
|
+
"utc_offset": -28800,
|
221
|
+
"listed_count": 271,
|
222
|
+
"profile_use_background_image": true,
|
223
|
+
"followers_count": 6242,
|
224
|
+
"lang": "en",
|
225
|
+
"protected": false,
|
226
|
+
"profile_text_color": "333333",
|
227
|
+
"profile_background_color": "C0DEED",
|
228
|
+
"time_zone": "Pacific Time (US & Canada)",
|
229
|
+
"geo_enabled": true,
|
230
|
+
"description": "Developer Advocate at Twitter and married to @cindyli. NASA enthusiast, British expat and all around geek living in San Francisco.",
|
231
|
+
"notifications": false,
|
232
|
+
"verified": false,
|
233
|
+
"profile_background_image_url": "http://a0.twimg.com/images/themes/theme1/bg.png",
|
234
|
+
"statuses_count": 3835,
|
235
|
+
"display_url": "themattharris.com",
|
236
|
+
"friends_count": 360,
|
237
|
+
"default_profile_image": false,
|
238
|
+
"following": false,
|
239
|
+
"show_all_inline_media": false,
|
240
|
+
"screen_name": "themattharris"
|
241
|
+
},
|
242
|
+
...
|
243
|
+
]
|
244
|
+
EDOC
|
245
|
+
example <<-EDOC
|
246
|
+
Another example...
|
247
|
+
{
|
248
|
+
"profile_sidebar_border_color": "547980",
|
249
|
+
"profile_background_tile": true,
|
250
|
+
"name": "Ryan Sarver",
|
251
|
+
"profile_sidebar_fill_color": "F8FCF2",
|
252
|
+
"expanded_url": "http://sarver.org",
|
253
|
+
"created_at": "Mon Feb 26 18:05:55 +0000 2007",
|
254
|
+
"location": "San Francisco, CA",
|
255
|
+
"profile_image_url": "http://a2.twimg.com/profile_images/644997837/ryan_sarver_twitter_big_normal.jpg",
|
256
|
+
"follow_request_sent": false,
|
257
|
+
"is_translator": false,
|
258
|
+
"profile_link_color": "547980",
|
259
|
+
"id_str": "795649",
|
260
|
+
"entities": {
|
261
|
+
"urls": [
|
260
262
|
|
261
|
-
|
262
|
-
|
263
|
+
],
|
264
|
+
"hashtags": [
|
263
265
|
|
264
|
-
|
265
|
-
|
266
|
+
],
|
267
|
+
"user_mentions": [
|
266
268
|
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
]
|
269
|
+
]
|
270
|
+
},
|
271
|
+
"default_profile": false,
|
272
|
+
"contributors_enabled": true,
|
273
|
+
"url": "http://t.co/Lzsetyk",
|
274
|
+
"favourites_count": 246,
|
275
|
+
"id": 795649,
|
276
|
+
"utc_offset": -28800,
|
277
|
+
"profile_use_background_image": true,
|
278
|
+
"listed_count": 1384,
|
279
|
+
"followers_count": 280756,
|
280
|
+
"lang": "en",
|
281
|
+
"protected": false,
|
282
|
+
"profile_text_color": "594F4F",
|
283
|
+
"profile_background_color": "45ADA8",
|
284
|
+
"time_zone": "Pacific Time (US & Canada)",
|
285
|
+
"geo_enabled": true,
|
286
|
+
"description": "platform/api at twitter",
|
287
|
+
"notifications": false,
|
288
|
+
"verified": false,
|
289
|
+
"friends_count": 1022,
|
290
|
+
"profile_background_image_url": "http://a0.twimg.com/profile_background_images/113854313/xa60e82408188860c483d73444d53e21.png",
|
291
|
+
"display_url": "sarver.org",
|
292
|
+
"default_profile_image": false,
|
293
|
+
"statuses_count": 7031,
|
294
|
+
"following": false,
|
295
|
+
"show_all_inline_media": true,
|
296
|
+
"screen_name": "rsarver"
|
297
|
+
}
|
297
298
|
EDOC
|
298
299
|
def contributors
|
299
300
|
render :text => 'contributors'
|
@@ -303,4 +304,4 @@ class TwitterExampleController < ApplicationController
|
|
303
304
|
render :text => 'twitter example'
|
304
305
|
end
|
305
306
|
|
306
|
-
end
|
307
|
+
end
|