Skip to content

Commit af28a5c

Browse files
committed
Restore oauth2/access_token logic (since that's not provided by FaradayMiddleware as I expected), replace default_uri_parser with Addressable::URI
1 parent bfeaefc commit af28a5c

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

cortex-client.gemspec

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@ Gem::Specification.new do |s|
1818
s.add_development_dependency 'rspec', '~> 3.5'
1919
s.add_development_dependency 'mocha', '~> 1.2'
2020

21+
s.add_dependency 'oauth2', '~> 1.1.0'
2122
s.add_dependency 'faraday', '~> 0.9'
2223
s.add_dependency 'faraday_middleware', '~> 0.10'
23-
s.add_dependency 'cortex-exceptions', '~> 0.0.4'
24+
s.add_dependency 'addressable', '~> 2.5'
2425
s.add_dependency 'hashie', '~> 3.4'
26+
s.add_dependency 'cortex-exceptions', '~> 0.0.4'
2527
end

lib/cortex/client.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
require 'oauth2'
2+
13
require 'cortex/connection'
24
require 'cortex/request'
35
require 'cortex/resource'
@@ -25,10 +27,20 @@ def initialize(hasharg)
2527
@key = hasharg[:key]
2628
@secret = hasharg[:secret]
2729
@scopes ||= hasharg[:scopes]
30+
@access_token = get_cc_token
2831
end
2932
@posts = Cortex::Posts.new(self)
3033
@users = Cortex::Users.new(self)
3134
@webpages = Cortex::Webpages.new(self)
3235
end
36+
37+
def get_cc_token
38+
begin
39+
client = OAuth2::Client.new(@key, @secret, site: @base_url)
40+
client.client_credentials.get_token({scope: @scopes})
41+
rescue Faraday::ConnectionFailed
42+
raise Cortex::Exceptions::ConnectionFailed.new(base_url: @base_url)
43+
end
44+
end
3345
end
3446
end

lib/cortex/connection.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
require 'faraday'
22
require 'faraday_middleware'
3+
require 'addressable/uri'
4+
35
require 'cortex/faraday_middleware/response_failures'
46

57
module Cortex
@@ -16,20 +18,21 @@ def connection
1618
@access_token = get_cc_token
1719
end
1820

21+
Faraday::Utils.default_uri_parser = Addressable::URI
1922
Faraday.new options do |conn|
2023
# Hello, temporal coupling. Order matters here.
2124

22-
# Request middleware first:
25+
## Request middleware first:
2326
conn.use ::FaradayMiddleware::OAuth2, access_token.is_a?(OAuth2::AccessToken) ? access_token.token : access_token
2427

25-
# Response middleware second:
28+
## Response middleware second:
2629
conn.use ::FaradayMiddleware::Mashify
2730
conn.use Cortex::FaradayMiddleware::ResponseFailures
2831

2932
conn.request :json
3033
conn.response :json, :content_type => /\bjson$/
3134

32-
# Adapter always last:
35+
## Adapter always last:
3336
conn.adapter Faraday.default_adapter
3437
end
3538
end

lib/cortex/faraday_middleware/response_failures.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'faraday'
2+
23
require 'cortex/exceptions'
34

45
module Cortex

0 commit comments

Comments
 (0)