cortex-client 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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