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.
43 44 45 |
# File 'lib/actv/client.rb', line 43 def oauth_token @oauth_token end |
Instance Method Details
#article(id, params = {}) ⇒ ACTV::Article
Returns an article with the specified ID
147 148 149 150 151 152 153 154 155 156 |
# File 'lib/actv/client.rb', line 147 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.
134 135 136 137 |
# File 'lib/actv/client.rb', line 134 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
70 71 72 73 74 75 |
# File 'lib/actv/client.rb', line 70 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
264 265 266 267 |
# File 'lib/actv/client.rb', line 264 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.
64 65 66 67 |
# File 'lib/actv/client.rb', line 64 def assets(q, params={}) response = get("/v2/search.json", params.merge(query: q)) ACTV::SearchResults.from_response(response) end |
#avatar_url(options = {}) ⇒ Object
302 303 304 |
# File 'lib/actv/client.rb', line 302 def avatar_url(={}) get("/v2/me/avatar_url", )[:body][:avatar_url] end |
#connection ⇒ Faraday::Connection
Returns a Faraday::Connection object
329 330 331 |
# File 'lib/actv/client.rb', line 329 def connection @connection ||= Faraday.new(@endpoint, @connection_options.merge(:builder => @middleware)) end |
#credentials? ⇒ Boolean
Check whether credentials are present
369 370 371 |
# File 'lib/actv/client.rb', line 369 def credentials? credentials.values.all? end |
#delete(path, params = {}, options = {}) ⇒ Object
Perform an HTTP DELETE request
322 323 324 |
# File 'lib/actv/client.rb', line 322 def delete(path, params={}, ={}) request(:delete, path, params, ) end |
#display_name_exists?(display_name, params = {}) ⇒ Boolean
294 295 296 |
# File 'lib/actv/client.rb', line 294 def display_name_exists?(display_name, params={}) get("/v2/users/display_name/#{URI.escape(display_name)}", params)[:body][:exists] end |
#event(id, params = {}) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/actv/client.rb', line 163 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
255 256 257 258 259 260 261 262 |
# File 'lib/actv/client.rb', line 255 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
158 159 160 161 |
# File 'lib/actv/client.rb', line 158 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
111 112 113 114 115 116 |
# File 'lib/actv/client.rb', line 111 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
118 119 120 121 122 123 |
# File 'lib/actv/client.rb', line 118 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
307 308 309 |
# File 'lib/actv/client.rb', line 307 def get(path, params={}, ={}) request(:get, path, params, ) end |
#is_advantage_member?(options = {}) ⇒ Boolean
298 299 300 |
# File 'lib/actv/client.rb', line 298 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
276 277 278 279 280 281 |
# File 'lib/actv/client.rb', line 276 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
85 86 87 88 |
# File 'lib/actv/client.rb', line 85 def organizer(id, params={}) response = get("/v3/organizers/#{id}.json", params) ACTV::Organizer.from_response response end |
#organizers(params = {}) ⇒ ACTV::Organizer
Returns all organizers
99 100 101 102 |
# File 'lib/actv/client.rb', line 99 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.
215 216 217 218 |
# File 'lib/actv/client.rb', line 215 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.
189 190 191 192 |
# File 'lib/actv/client.rb', line 189 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
228 229 230 231 |
# File 'lib/actv/client.rb', line 228 def popular_interests(params={}, ={}) response = get("/interest/_search", params, ) ACTV::PopularInterestSearchResults.from_response(response) end |
#popular_searches(options = {}) ⇒ ACTV::PopularSearchSearchResults
Returns popular searches
241 242 243 244 245 |
# File 'lib/actv/client.rb', line 241 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
312 313 314 |
# File 'lib/actv/client.rb', line 312 def post(path, params={}, ={}) request(:post, path, params, ) end |
#put(path, params = {}, options = {}) ⇒ Object
Perform an HTTP UPDATE request
317 318 319 |
# File 'lib/actv/client.rb', line 317 def put(path, params={}, ={}) request(:put, path, params, ) end |
#request(method, path, params, options) ⇒ Object
Perform an HTTP Request
334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 |
# File 'lib/actv/client.rb', line 334 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.
202 203 204 205 |
# File 'lib/actv/client.rb', line 202 def upcoming_events(params={}) response = get("/v2/events/upcoming", params) ACTV::SearchResults.from_response(response) end |
#update_me(user, params = {}) ⇒ Object
283 284 285 286 287 288 |
# File 'lib/actv/client.rb', line 283 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
290 291 292 |
# File 'lib/actv/client.rb', line 290 def user_name_exists?(user_name, params={}) get("/v2/users/user_name/#{user_name}", params)[:body][:exists] end |