cortex-client 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ae9160a1f77ff75bbdd94a1dd24c2158dd24dd2
4
- data.tar.gz: 32696a70d36bfb41f7b3769ef6d8c86f71ad7c1f
3
+ metadata.gz: b344d2092431f0f6f392a2f1ca342ce0e70f6705
4
+ data.tar.gz: c501c028bb02bee309120a3624a345114e5b6865
5
5
  SHA512:
6
- metadata.gz: a6bd08c5ae793a6aaac1e5bb8c320164cd2c776a1515a76f7860b305c7daacf59fc30a175f8d2383f2fa3bd99dcb90777fe4aee13408114adfae60aebcffc6fd
7
- data.tar.gz: 4342fc1a3198dda90259324c55b0f7bc821300eb9f7a1f98e8d461b909acc6e8e8949ba9ca13c0545afba720ae01ad617832c16c230600a488bc8629061a0595
6
+ metadata.gz: 27a6bf2e5747a8a412bdd9a337b0209e4fdeac13ec1e0c0a5510567a904d354c4877963fdfcdd12d6797e252b0aa0a40d47f35101ea137285e9ccef730e3c781
7
+ data.tar.gz: 98ab2b349ef4391bc14b87d31a5ca07e18e9e6d67fedb31d409e267bb19ddf634948ed2bceca13aafbac95d277331e681e41d1a5925abd9ce87e738fbefd7d2b
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.3.0
3
+ - 2.4.0
4
4
  notifications:
5
5
  recipients:
6
- - ContentEnablementProductTeam@careerbuilder.com
6
+ - EmployerSiteContentProducts@cb.com
@@ -1,8 +1,13 @@
1
1
  Version History
2
2
  ====
3
- * All Version bumps are required to update this file as well!!
3
+ * All Version bumps are required to update this file as well!
4
4
  ----
5
5
 
6
+ * 0.10.0:
7
+ * Utilize `Addressable::URI` as Faraday's default URI parser so that resourceful URI fragments are escaped and parsed properly
8
+ * Utilize `Faraday::Middleware` for `Hashie::Mash`ing & OAuth2 Token insertion
9
+ * Update dependencies
10
+ * No major breaking changes anticipated, but please *test* your use cases!
6
11
  * 0.9.0 - Add total pages, next page, and prev page to result object
7
12
  * 0.8.0 - Revert ETag caching flow implementation
8
13
  * 0.7.0 - Implement ability to specify OAuth scopes
@@ -6,21 +6,22 @@ Gem::Specification.new do |s|
6
6
  s.version = Cortex::VERSION
7
7
  s.summary = 'Cortex API Client'
8
8
  s.homepage = 'https://github.com/cortex-cms/cortex-client-ruby'
9
- s.authors = ['CB Content Enablement']
10
- s.email = 'ContentEnablementProductTeam@careerbuilder.com'
9
+ s.authors = ['CareerBuilder Employer Site & Content Products']
10
+ s.email = ['EmployerSiteContentProducts@cb.com']
11
11
  s.license = 'Apache-2.0'
12
12
 
13
13
  s.files = `git ls-files`.split($/).reject { |f| f == '.gitignore' }
14
14
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
15
15
  s.require_paths = ['lib']
16
16
 
17
- s.add_development_dependency 'rake', '~> 11.1'
18
- s.add_development_dependency 'rspec', '~> 3.4'
19
- s.add_development_dependency 'mocha', '~> 1.1'
17
+ s.add_development_dependency 'rake', '~> 12.0'
18
+ s.add_development_dependency 'rspec', '~> 3.5'
19
+ s.add_development_dependency 'mocha', '~> 1.2'
20
20
 
21
+ s.add_dependency 'oauth2', '~> 1.1.0'
21
22
  s.add_dependency 'faraday', '~> 0.9'
22
23
  s.add_dependency 'faraday_middleware', '~> 0.10'
23
- s.add_dependency 'oauth2', '~> 1.1.0'
24
- s.add_dependency 'cortex-exceptions', '~> 0.0.4'
24
+ s.add_dependency 'addressable', '~> 2.5'
25
25
  s.add_dependency 'hashie', '~> 3.4'
26
+ s.add_dependency 'cortex-exceptions', '~> 0.0.4'
26
27
  end
@@ -1,3 +1,5 @@
1
+ require 'oauth2'
2
+
1
3
  require 'cortex/connection'
2
4
  require 'cortex/request'
3
5
  require 'cortex/resource'
@@ -5,8 +7,6 @@ require 'cortex/posts'
5
7
  require 'cortex/users'
6
8
  require 'cortex/webpages'
7
9
  require 'cortex/result'
8
- require 'oauth2'
9
- require 'cortex/exceptions'
10
10
 
11
11
  module Cortex
12
12
  class Client
@@ -20,7 +20,7 @@ module Cortex
20
20
  include Cortex::Request
21
21
 
22
22
  def initialize(hasharg)
23
- @base_url = hasharg[:base_url] || 'https://cbcortex.com/api/v1/'
23
+ @base_url = hasharg[:base_url] || 'https://cbcortex.com/api/v1'
24
24
  if hasharg.has_key? :access_token
25
25
  @access_token = hasharg[:access_token]
26
26
  else
@@ -1,6 +1,9 @@
1
1
  require 'faraday'
2
2
  require 'faraday_middleware'
3
- require 'cortex/faraday_middleware'
3
+ require 'addressable/uri'
4
+ require 'hashie/mash'
5
+
6
+ require 'cortex/faraday_middleware/response_failures'
4
7
 
5
8
  module Cortex
6
9
  module Connection
@@ -16,11 +19,19 @@ module Cortex
16
19
  @access_token = get_cc_token
17
20
  end
18
21
 
22
+ Faraday::Utils.default_uri_parser = Addressable::URI
19
23
  Faraday.new options do |conn|
20
- conn.use Cortex::FaradayMiddleware
21
- conn.request :oauth2, access_token.is_a?(OAuth2::AccessToken) ? access_token.token : access_token
24
+ ## Request middleware first:
25
+ conn.use ::FaradayMiddleware::OAuth2, access_token.is_a?(OAuth2::AccessToken) ? access_token.token : access_token
26
+
27
+ ## Response middleware second:
28
+ conn.use ::FaradayMiddleware::Mashify
29
+ conn.use Cortex::FaradayMiddleware::ResponseFailures
30
+
22
31
  conn.request :json
23
32
  conn.response :json, :content_type => /\bjson$/
33
+
34
+ ## Adapter always last:
24
35
  conn.adapter Faraday.default_adapter
25
36
  end
26
37
  end
@@ -0,0 +1,17 @@
1
+ require 'faraday'
2
+
3
+ require 'cortex/exceptions'
4
+
5
+ module Cortex
6
+ module FaradayMiddleware
7
+ class ResponseFailures < Faraday::Middleware
8
+ def call(env)
9
+ begin
10
+ @app.call(env)
11
+ rescue Faraday::ConnectionFailed
12
+ raise Cortex::Exceptions::ConnectionFailed.new(base_url: env[:url])
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,3 @@
1
- require 'ostruct'
2
-
3
1
  module Cortex
4
2
  module Request
5
3
  def get(path, params = {})
@@ -7,4 +7,4 @@ module Cortex
7
7
  protected
8
8
  attr_accessor :client
9
9
  end
10
- end
10
+ end
@@ -1,10 +1,9 @@
1
- require 'hashie'
2
1
  module Cortex
3
2
  class Result
4
3
  attr_reader :raw_headers, :contents, :total_items, :page, :per_page, :errors, :range_start, :range_end, :range, :status, :total_pages, :next_page, :prev_page
5
4
 
6
5
  def initialize(body, headers, status)
7
- @contents = parse(body)
6
+ @contents = body
8
7
  @raw_headers = headers
9
8
  @status = status
10
9
  parse_headers(headers)
@@ -12,7 +11,7 @@ module Cortex
12
11
  end
13
12
 
14
13
  def is_error?
15
- @status >= 400 || (@contents.is_a?(Hash) && @contents.has_key?('errors'))
14
+ @status >= 400 || (@contents.is_a?(Hash) && @contents.errors?)
16
15
  end
17
16
 
18
17
  private
@@ -32,31 +31,21 @@ module Cortex
32
31
  end
33
32
  end
34
33
 
35
- def parse(body)
36
- case body
37
- when Hash
38
- ::Hashie::Mash.new(body)
39
- when Array
40
- body.map { |item| parse(item) }
41
- else
42
- body
43
- end
44
- end
45
-
46
34
  def find_errors
35
+ errors = nil
47
36
  if is_error?
48
37
  if @contents.is_a?(Hash)
49
- if @contents.has_key?('errors')
50
- Array(@contents['errors'])
38
+ if @contents.errors?
39
+ errors = @contents.errors
51
40
  else
52
- Array(@contents['message'])
41
+ errors = @contents.message
53
42
  end
54
43
  else
55
- Array(@contents)
44
+ errors = @contents
56
45
  end
57
- else
58
- Array(nil)
59
46
  end
47
+
48
+ Array(errors)
60
49
  end
61
50
  end
62
51
  end
@@ -1,3 +1,3 @@
1
1
  module Cortex
2
- VERSION = '0.9.0'
2
+ VERSION = '0.10.0'
3
3
  end
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  RSpec.describe Cortex::Posts do
4
4
 
5
+ # TODO: Stub out Faraday somewhere. See: https://github.com/lostisland/faraday#using-faraday-for-testing
5
6
  let(:client) { Cortex::Client.new(access_token: '123') }
6
7
 
7
8
  describe :get do
@@ -16,6 +17,10 @@ RSpec.describe Cortex::Posts do
16
17
  client.expects(:get).with('/posts/feed/1').returns('response')
17
18
  expect(client.posts.get_published(1)).to eq('response')
18
19
  end
20
+
21
+ it 'should work with special characters' do
22
+ expect { client.posts.get_published('1 post') }.to_not raise_error(URI::InvalidURIError)
23
+ end
19
24
  end
20
25
 
21
26
  describe :feed do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cortex-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
- - CB Content Enablement
7
+ - CareerBuilder Employer Site & Content Products
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-09 00:00:00.000000000 Z
11
+ date: 2017-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,42 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '11.1'
19
+ version: '12.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '11.1'
26
+ version: '12.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.4'
33
+ version: '3.5'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.4'
40
+ version: '3.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mocha
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.1'
47
+ version: '1.2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.1'
54
+ version: '1.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: oauth2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.1.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: faraday
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,49 +95,50 @@ dependencies:
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0.10'
83
97
  - !ruby/object:Gem::Dependency
84
- name: oauth2
98
+ name: addressable
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 1.1.0
103
+ version: '2.5'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 1.1.0
110
+ version: '2.5'
97
111
  - !ruby/object:Gem::Dependency
98
- name: cortex-exceptions
112
+ name: hashie
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.0.4
117
+ version: '3.4'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.0.4
124
+ version: '3.4'
111
125
  - !ruby/object:Gem::Dependency
112
- name: hashie
126
+ name: cortex-exceptions
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '3.4'
131
+ version: 0.0.4
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '3.4'
138
+ version: 0.0.4
125
139
  description:
126
- email: ContentEnablementProductTeam@careerbuilder.com
140
+ email:
141
+ - EmployerSiteContentProducts@cb.com
127
142
  executables: []
128
143
  extensions: []
129
144
  extra_rdoc_files: []
@@ -139,7 +154,7 @@ files:
139
154
  - lib/cortex/client.rb
140
155
  - lib/cortex/client_exceptions.rb
141
156
  - lib/cortex/connection.rb
142
- - lib/cortex/faraday_middleware.rb
157
+ - lib/cortex/faraday_middleware/response_failures.rb
143
158
  - lib/cortex/posts.rb
144
159
  - lib/cortex/request.rb
145
160
  - lib/cortex/resource.rb
@@ -173,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
188
  version: '0'
174
189
  requirements: []
175
190
  rubyforge_project:
176
- rubygems_version: 2.5.1
191
+ rubygems_version: 2.6.8
177
192
  signing_key:
178
193
  specification_version: 4
179
194
  summary: Cortex API Client
@@ -1,14 +0,0 @@
1
- require 'faraday'
2
- require 'faraday_middleware'
3
-
4
- module Cortex
5
- class FaradayMiddleware < Faraday::Middleware
6
- def call(env)
7
- begin
8
- @app.call(env)
9
- rescue Faraday::ConnectionFailed
10
- raise Cortex::Exceptions::ConnectionFailed.new(base_url: env[:url])
11
- end
12
- end
13
- end
14
- end