Class: ACTV::Client
Overview
Wrapper for the ACTV REST API
Constant Summary
Constants included from Configurable
ACTV::Configurable::AUTH_KEYS, ACTV::Configurable::CONFIG_KEYS
Instance Attribute Summary collapse
-
#oauth_token ⇒ Object
readonly
Returns the value of attribute oauth_token.
Instance Method Summary collapse
-
#article(id, params = {}) ⇒ ACTV::Article
Returns an article with the specified ID.
-
#articles(q, params = {}) ⇒ ACTV::SearchResults
Returns articles that match a specified query.
- #asset(id, params = {}) ⇒ Object
- #asset_stats(asset_id) ⇒ Object
-
#assets(q, params = {}) ⇒ ACTV::SearchResults
(also: #search)
Returns assets that match a specified query.
- #avatar_url(options = {}) ⇒ Object
-
#connection ⇒ Faraday::Connection
Returns a Faraday::Connection object.
-
#credentials? ⇒ Boolean
Check whether credentials are present.
-
#delete(path, params = {}, options = {}) ⇒ Object
Perform an HTTP DELETE request.
- #display_name_exists?(display_name, params = {}) ⇒ Boolean
- #event(id, params = {}) ⇒ Object
-
#event_results(assetId, assetTypeId, options = {}) ⇒ ACTV::EventResult
Returns a result with the specified asset ID and asset type ID.
- #events(q, params = {}) ⇒ Object
-
#find_asset_by_url(url) ⇒ ACTV::Asset
Returns an asset with the specified url path.
- #find_by_endurance_id(endurance_id) ⇒ Object
-
#get(path, params = {}, options = {}) ⇒ Object
Perform an HTTP GET request.
-
#initialize(options = {}) ⇒ Client
constructor
Initialized a new Client object.
- #is_advantage_member?(options = {}) ⇒ Boolean
-
#me(params = {}) ⇒ ACTV::User
Returns the currently logged in user.
-
#organizer(id, params = {}) ⇒ Object
Returns an organizer with the specified ID.
-
#organizers(params = {}) ⇒ ACTV::Organizer
Returns all organizers.
-
#popular_articles(params = {}) ⇒ ACTV::SearchResults
Returns popular assets that match a specified query.
-
#popular_events(params = {}) ⇒ ACTV::SearchResults
Returns popular assets that match a specified query.
-
#popular_interests(params = {}, options = {}) ⇒ ACTV::PopularInterestSearchResults
Returns popular interests.
-
#popular_searches(options = {}) ⇒ ACTV::PopularSearchSearchResults
Returns popular searches.
-
#post(path, params = {}, options = {}) ⇒ Object
Perform an HTTP POST request.
-
#put(path, params = {}, options = {}) ⇒ Object
Perform an HTTP UPDATE request.
-
#request(method, path, params, options) ⇒ Object
Perform an HTTP Request.
-
#upcoming_events(params = {}) ⇒ ACTV::SearchResults
Returns upcoming assets that match a specified query.
- #update_me(user, params = {}) ⇒ Object
- #user_name_exists?(user_name, params = {}) ⇒ Boolean
Methods included from Configurable
Constructor Details
Instance Attribute Details
#oauth_token ⇒ Object (readonly)
Returns the value of attribute oauth_token.
35 36 37 |
# File 'lib/actv/client.rb', line 35 def oauth_token @oauth_token end |
Instance Method Details
#article(id, params = {}) ⇒ ACTV::Article
Returns an article with the specified ID
139 140 141 142 143 144 145 146 147 148 |
# File 'lib/actv/client.rb', line 139 def article id, params={} request_string = "/v2/assets/#{id}" is_preview, params = params_include_preview? params request_string += '/preview' if is_preview response = get "#{request_string}.json", params article = ACTV::Article.new response[:body] article.is_article? ? article : nil end |
#articles(q, params = {}) ⇒ ACTV::SearchResults
Returns articles that match a specified query.
126 127 128 129 |
# File 'lib/actv/client.rb', line 126 def articles(q, params={}) response = get("/v2/search.json", params.merge({query: q, category: 'articles'})) ACTV::ArticleSearchResults.from_response(response) end |
#asset(id, params = {}) ⇒ Object
62 63 64 65 66 67 |
# File 'lib/actv/client.rb', line 62 def asset id, params={} params = params.with_indifferent_access is_preview = params.delete(:preview) == "true" response = request_response id, params, is_preview asset_from_response response end |
#asset_stats(asset_id) ⇒ Object
256 257 258 259 |
# File 'lib/actv/client.rb', line 256 def asset_stats asset_id response = get("/v2/assets/#{asset_id}/stats") ACTV::AssetStatsResult.new response[:body] end |
#assets(q, params = {}) ⇒ ACTV::SearchResults Also known as: search
Returns assets that match a specified query.
56 57 58 59 |
# File 'lib/actv/client.rb', line 56 def assets(q, params={}) response = get("/v2/search.json", params.merge(query: q)) ACTV::SearchResults.from_response(response) end |
#avatar_url(options = {}) ⇒ Object
294 295 296 |
# File 'lib/actv/client.rb', line 294 def avatar_url(={}) get("/v2/me/avatar_url", )[:body][:avatar_url] end |
#connection ⇒ Faraday::Connection
Returns a Faraday::Connection object
321 322 323 |
# File 'lib/actv/client.rb', line 321 def connection @connection ||= Faraday.new(@endpoint, .merge(:builder => @middleware)) end |
#credentials? ⇒ Boolean
Check whether credentials are present
361 362 363 |
# File 'lib/actv/client.rb', line 361 def credentials? credentials.values.all? end |
#delete(path, params = {}, options = {}) ⇒ Object
Perform an HTTP DELETE request
314 315 316 |
# File 'lib/actv/client.rb', line 314 def delete(path, params={}, ={}) request(:delete, path, params, ) end |
#display_name_exists?(display_name, params = {}) ⇒ Boolean
286 287 288 |
# File 'lib/actv/client.rb', line 286 def display_name_exists?(display_name, params={}) get("/v2/users/display_name/#{URI.escape(display_name)}", params)[:body][:exists] end |
#event(id, params = {}) ⇒ Object
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/actv/client.rb', line 155 def event(id, params={}) request_string = "/v2/assets/#{id}" is_preview, params = params_include_preview? params request_string += '/preview' if is_preview response = get("#{request_string}.json", params) if response[:body].is_a? Array response[:body].map do |item| ACTV::Event.new item end else event = ACTV::Event.new response[:body] event = ACTV::Evergreen.new(event) if event.evergreen? event.is_article? ? nil : event end end |
#event_results(assetId, assetTypeId, options = {}) ⇒ ACTV::EventResult
Returns a result with the specified asset ID and asset type ID
247 248 249 250 251 252 253 254 |
# File 'lib/actv/client.rb', line 247 def event_results(assetId, assetTypeId, ={}) begin response = get("/api/v1/events/#{assetId}/#{assetTypeId}.json", {}, ) ACTV::EventResult.from_response(response) rescue nil end end |
#events(q, params = {}) ⇒ Object
150 151 152 153 |
# File 'lib/actv/client.rb', line 150 def events(q, params={}) response = get("/v2/search.json", params.merge({query: q, category: 'event'})) ACTV::EventSearchResults.from_response(response) end |
#find_asset_by_url(url) ⇒ ACTV::Asset
Returns an asset with the specified url path
103 104 105 106 107 108 |
# File 'lib/actv/client.rb', line 103 def find_asset_by_url(url) url_md5 = Digest::MD5.hexdigest(url) response = get("/v2/seourls/#{url_md5}?load_asset=true") ACTV::Asset.from_response(response) end |
#find_by_endurance_id(endurance_id) ⇒ Object
110 111 112 113 114 115 |
# File 'lib/actv/client.rb', line 110 def find_by_endurance_id endurance_id response = get "/v2/search.json", find_by_endurance_id_params(endurance_id) ACTV::SearchResults.from_response(response).results.select do |asset| asset.registrationUrlAdr.end_with?(endurance_id.to_s) and asset.assetParentAsset[:assetGuid].nil? end end |
#get(path, params = {}, options = {}) ⇒ Object
Perform an HTTP GET request
299 300 301 |
# File 'lib/actv/client.rb', line 299 def get(path, params={}, ={}) request(:get, path, params, ) end |
#is_advantage_member?(options = {}) ⇒ Boolean
290 291 292 |
# File 'lib/actv/client.rb', line 290 def is_advantage_member?(={}) get("/v2/me/is_advantage_member", )[:body][:is_advantage_member] end |
#me(params = {}) ⇒ ACTV::User
Returns the currently logged in user
268 269 270 271 272 273 |
# File 'lib/actv/client.rb', line 268 def me(params={}) response = get("/v2/me.json", params) user = ACTV::User.from_response(response) user.access_token = @oauth_token user end |
#organizer(id, params = {}) ⇒ Object
Returns an organizer with the specified ID
77 78 79 80 |
# File 'lib/actv/client.rb', line 77 def organizer(id, params={}) response = get("/v3/organizers/#{id}.json", params) ACTV::Organizer.from_response response end |
#organizers(params = {}) ⇒ ACTV::Organizer
Returns all organizers
91 92 93 94 |
# File 'lib/actv/client.rb', line 91 def organizers(params={}) response = get("/v3/organizers.json", params) ACTV::OrganizerResults.from_response response end |
#popular_articles(params = {}) ⇒ ACTV::SearchResults
Returns popular assets that match a specified query.
207 208 209 210 |
# File 'lib/actv/client.rb', line 207 def popular_articles(params={}) response = get("/v2/articles/popular", params) ACTV::ArticleSearchResults.from_response(response) end |
#popular_events(params = {}) ⇒ ACTV::SearchResults
Returns popular assets that match a specified query.
181 182 183 184 |
# File 'lib/actv/client.rb', line 181 def popular_events(params={}) response = get("/v2/events/popular", params) ACTV::SearchResults.from_response(response) end |
#popular_interests(params = {}, options = {}) ⇒ ACTV::PopularInterestSearchResults
Returns popular interests
220 221 222 223 |
# File 'lib/actv/client.rb', line 220 def popular_interests(params={}, ={}) response = get("/interest/_search", params, ) ACTV::PopularInterestSearchResults.from_response(response) end |
#popular_searches(options = {}) ⇒ ACTV::PopularSearchSearchResults
Returns popular searches
233 234 235 236 237 |
# File 'lib/actv/client.rb', line 233 def popular_searches(={}) #response = get("/v2/articles/popular", params) #ACTV::ArticleSearchResults.from_response(response) ["Couch to 5k","Kids' Camps","Swimming Classes","Half Marathons in Southern CA","Gyms in Solana Beach","Dignissim Qui Blandit","Dolore Te Feugait","Lorem Ipsum","Convnetio Ibidem","Aliquam Jugis"] end |
#post(path, params = {}, options = {}) ⇒ Object
Perform an HTTP POST request
304 305 306 |
# File 'lib/actv/client.rb', line 304 def post(path, params={}, ={}) request(:post, path, params, ) end |
#put(path, params = {}, options = {}) ⇒ Object
Perform an HTTP UPDATE request
309 310 311 |
# File 'lib/actv/client.rb', line 309 def put(path, params={}, ={}) request(:put, path, params, ) end |
#request(method, path, params, options) ⇒ Object
Perform an HTTP Request
326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 |
# File 'lib/actv/client.rb', line 326 def request(method, path, params, ) uri = [:endpoint] || @endpoint uri = URI(uri) unless uri.respond_to?(:host) uri += path request_headers = {} params[:api_key] = @api_key unless @api_key.nil? if self.credentials? # When posting a file, don't sign any params signature_params = if [:post, :put].include?(method.to_sym) && params.values.any?{|value| value.is_a?(File) || (value.is_a?(Hash) && (value[:io].is_a?(IO) || value[:io].is_a?(StringIO)))} {} else params end = SimpleOAuth::Header.new(method, uri, signature_params, credentials) request_headers[:authorization] = .to_s.sub('OAuth', "Bearer") end connection.url_prefix = [:endpoint] || @endpoint connection.run_request(method.to_sym, path, nil, request_headers) do |request| unless params.empty? case request.method when :post, :put request.body = params else request.params.update(params) end end yield request if block_given? end.env rescue Faraday::Error::ClientError raise ACTV::Error::ClientError end |
#upcoming_events(params = {}) ⇒ ACTV::SearchResults
Returns upcoming assets that match a specified query.
194 195 196 197 |
# File 'lib/actv/client.rb', line 194 def upcoming_events(params={}) response = get("/v2/events/upcoming", params) ACTV::SearchResults.from_response(response) end |
#update_me(user, params = {}) ⇒ Object
275 276 277 278 279 280 |
# File 'lib/actv/client.rb', line 275 def update_me(user, params={}) response = put("/v2/me.json", params.merge(user)) user = ACTV::User.from_response(response) user.access_token = @oauth_token user end |
#user_name_exists?(user_name, params = {}) ⇒ Boolean
282 283 284 |
# File 'lib/actv/client.rb', line 282 def user_name_exists?(user_name, params={}) get("/v2/users/user_name/#{user_name}", params)[:body][:exists] end |