keepcon 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f093d11f5dc02d932d469116465fd8ee808a61be
4
- data.tar.gz: 7c3b90f9ccda09f5b27e27346b972c1f3df86e3f
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZDAzNjJhNzBjNDU5MWFiZTE4MDQ4YWE1NjAzNTIxYjBjNDc3M2FiNA==
5
+ data.tar.gz: !binary |-
6
+ YTFiYTYyN2ZjNDNlYjFkZWY1MjVmMjQzOTQ2NzQ2M2ZiNDc3YmYwNw==
5
7
  SHA512:
6
- metadata.gz: efe51e9cbe85a6e07b5eb769c2bde7052bc84e79048b871cccd830cf6c80453d80ec58f31e07dd3bd801d6ffbf82760f09566f4b2219c10f7832d49842c5d954
7
- data.tar.gz: ee225c3e49b905b0902cfa7797ec196b294e84dbe9ca0e068d2ee04599ffc3fc49a7813752d5ff2e781ade9f7e088a9deed0f5611a5c50641d0016bea0ec4bd7
8
+ metadata.gz: !binary |-
9
+ MzAzNjhkZWE1NWI5M2Y4ODI1MGE4NGMxZDJhNGRhMjM2Mjc1NWM4YWJlNTg2
10
+ NzhiNmU1YWEzZDBjNTU1NWNhZGU2YzZlZjk4NmRmMzlkNzE3MTMyNGQwZWJh
11
+ MTcxOTNlNTExNzkzZTgxYTFlZTg4ZTk4MzczMmZkNDAyYWY3MTk=
12
+ data.tar.gz: !binary |-
13
+ MGQzOTJhYjQ1YTdmNjgzMzFiZGE5YzQwMGM0M2NkYTA2MGZjY2Q1Y2JmYzEz
14
+ OTlkMDU0YjIxZWIwM2ZlNDMxNjFlYmVkMjcwMDk3MTNkZGU2MmZiYjc5MGNi
15
+ OGM2OWIxNzU5ZDdhNjliZDBlYTZlNGYwYmNlNzkwNjE1OWFjMDQ=
@@ -9,8 +9,17 @@ rvm:
9
9
  git:
10
10
  depth: 1
11
11
  script:
12
- - bundle exec rspec
13
12
  - bundle exec rubocop
13
+ - bundle exec rspec
14
14
  addons:
15
15
  code_climate:
16
- repo_token: 217146fc082e87b5e4b2352141a8832d0da78d66a9d22cb0b5189344648e821e
16
+ repo_token: 217146fc082e87b5e4b2352141a8832d0da78d66a9d22cb0b5189344648e821e
17
+ deploy:
18
+ provider: rubygems
19
+ api_key:
20
+ secure: ZEWuQ/N6qbm6CZ0jjyje3NI6Ah88GLn6Mka8SzNHlx37n1vTORTgpmnwH3L5Gq02m4E+UanpJC7u2yxZa2xloIx6rh3XPvZQFmBlLyraZbRqB+JQQV+4zX2DXQW157vS9czZ1iLnHVAtd89xNOoL254+LMoqHdT3OHUWmpBk9kU=
21
+ gem: keepcon
22
+ on:
23
+ tags: true
24
+ repo: LoveMondays/keepcon
25
+ branch: master
data/Rakefile CHANGED
@@ -17,9 +17,9 @@ require 'rspec/core'
17
17
  require 'rspec/core/rake_task'
18
18
  require 'rubocop/rake_task'
19
19
 
20
- RSpec::Core::RakeTask.new(:spec)
21
-
22
20
  desc 'Run RuboCop'
23
21
  RuboCop::RakeTask.new(:style)
24
22
 
25
- task default: [:spec, :style]
23
+ RSpec::Core::RakeTask.new(:spec)
24
+
25
+ task default: [:style, :spec]
@@ -4,36 +4,42 @@ module Keepcon
4
4
  attr_writer :password
5
5
 
6
6
  def initialize
7
- self.config = {}
8
- config['urls'] = YAML.load_file(urls_config_path)
9
- config['client'] = YAML.load_file(client_config_path)
7
+ self.config = {
8
+ 'urls' => load_yml('config/urls.yml'),
9
+ 'client' => load_yml('config/client.yml')
10
+ }
11
+
10
12
  yield self if block_given?
11
13
  end
12
14
 
13
- def content_request(data, mode = :sync)
15
+ def content_request(data, mode)
14
16
  fail ArgumentError, 'The data can not be empty' unless data.present?
15
17
 
16
18
  request(:put, config['urls']['content']['request'][mode.to_s], data, mode)
17
19
  end
18
20
 
21
+ def async_results_request
22
+ url = config['urls']['content']['response']['async']
23
+ url = url % { context_name: user }
24
+
25
+ request(:put, url)
26
+ end
27
+
19
28
  private
20
29
 
21
- def request(method, path, data, mode = :sync)
30
+ def request(method, path, data = '', mode = :async)
22
31
  connection(mode).send(method, path, data.to_s, headers)
23
32
  end
24
33
 
25
- def connection(mode = :sync)
34
+ def connection(mode)
26
35
  Faraday.new(url: config['urls']['keepcon'][mode.to_s]).tap do |c|
27
36
  c.basic_auth(user, @password)
28
37
  end
29
38
  end
30
39
 
31
- def urls_config_path
32
- File.expand_path('../config/urls.yml', __FILE__)
33
- end
34
-
35
- def client_config_path
36
- File.expand_path('../config/client.yml', __FILE__)
40
+ def load_yml(file)
41
+ path = File.expand_path("../#{file}", __FILE__)
42
+ YAML.load_file(path)
37
43
  end
38
44
 
39
45
  def headers
@@ -24,7 +24,7 @@ module Keepcon
24
24
  Gyoku.xml(xml_hash)
25
25
  end
26
26
 
27
- def send_data(mode = :sync)
27
+ def send_data(mode)
28
28
  parse_response(context.client.content_request(to_xml, mode))
29
29
  end
30
30
 
@@ -1,6 +1,6 @@
1
1
  module Keepcon
2
2
  module Integration
3
- def send_to_keepcon(context, mode = :sync)
3
+ def send_to_keepcon(context, mode)
4
4
  keepcon_entity(context).send_data(mode)
5
5
  end
6
6
 
@@ -14,10 +14,7 @@ module Keepcon
14
14
 
15
15
  module ClassMethods
16
16
  def keepcon_integration(context_name, mappings = {})
17
- unless (context = find_context(context_name))
18
- fail 'The context does not exist'
19
- end
20
-
17
+ context = find_context(context_name)
21
18
  context.map(mappings)
22
19
 
23
20
  define_method("send_#{context_name}_to_keepcon") do |mode = :sync|
@@ -25,10 +22,18 @@ module Keepcon
25
22
  end
26
23
  end
27
24
 
25
+ def fetch_keepcon_results(context_name)
26
+ context = find_context(context_name)
27
+
28
+ results = context.client.async_results_request
29
+ Entity::Response.new(results)
30
+ end
31
+
28
32
  private
29
33
 
30
34
  def find_context(context)
31
- Keepcon.contexts[context]
35
+ Keepcon.contexts[context] ||
36
+ fail("The context=#{context} does not exist")
32
37
  end
33
38
  end
34
39
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Keepcon
3
- VERSION = '0.1.2'
3
+ VERSION = '0.2.0'
4
4
  end
@@ -66,4 +66,30 @@ describe Keepcon::Client do
66
66
  end
67
67
  end
68
68
  end
69
+
70
+ describe '#async_results_request' do
71
+ subject { client.async_results_request }
72
+
73
+ let!(:faraday) { Faraday.new { |f| f.adapter :test, adapter } }
74
+ let(:adapter) do
75
+ Faraday::Adapter::Test::Stubs.new do |stub|
76
+ stub.put('/output/contentSet?contextName=user', '', headers) do |_env|
77
+ [200, {}, 'all-results-body']
78
+ end
79
+ end
80
+ end
81
+ let(:headers) do
82
+ {
83
+ 'User-Agent' => 'Keepcon Client API REST v1.0 - Context Name: [user]',
84
+ 'Authorization' => 'Basic dXNlcjpwYXNzd29yZA=='
85
+ }
86
+ end
87
+
88
+ before do
89
+ allow(Faraday).to receive(:new).and_return(faraday)
90
+ end
91
+
92
+ it { expect(subject.status).to eq(200) }
93
+ it { expect(subject.body).to eq('all-results-body') }
94
+ end
69
95
  end
@@ -12,29 +12,29 @@ describe Keepcon::Integration do
12
12
  end
13
13
  end
14
14
  let(:instance) { dummy_class.new }
15
- let(:added_context) { Keepcon.contexts[:user] }
15
+ let(:added_context) { Keepcon.contexts[:context] }
16
16
 
17
- before { Keepcon.add_context(:user, user: 'user', password: 'password') }
17
+ before { Keepcon.add_context(:context, user: 'user', password: 'password') }
18
18
 
19
19
  describe '.keepcon_integration' do
20
20
  context 'when context do not exists' do
21
- subject { dummy_class.keepcon_integration(:test) }
21
+ subject { dummy_class.keepcon_integration(:missing_context) }
22
22
 
23
23
  it { expect { subject }.to raise_error }
24
24
  end
25
25
 
26
26
  context 'when context exists' do
27
- subject { dummy_class.keepcon_integration(:user, a: :b) }
27
+ subject { dummy_class.keepcon_integration(:context, a: :b) }
28
28
 
29
29
  before { subject }
30
30
 
31
31
  it { expect(added_context.translate(:a)).to eq(:b) }
32
- it { expect(instance.respond_to?(:send_user_to_keepcon)).to be true }
32
+ it { expect(instance.respond_to?(:send_context_to_keepcon)).to be true }
33
33
  end
34
34
  end
35
35
 
36
36
  context 'with some integration defined' do
37
- before { dummy_class.keepcon_integration(:user, a: :b) }
37
+ before { dummy_class.keepcon_integration(:context, a: :b) }
38
38
 
39
39
  describe '#send_to_keepcon' do
40
40
  subject { instance.send_to_keepcon(added_context, mode) }
@@ -72,7 +72,7 @@ describe Keepcon::Integration do
72
72
  end
73
73
 
74
74
  describe '#send_context_to_keepcon' do
75
- subject { instance.send_user_to_keepcon(mode) }
75
+ subject { instance.send_context_to_keepcon(mode) }
76
76
 
77
77
  context 'sync request' do
78
78
  let(:mode) { :sync }
@@ -95,4 +95,27 @@ describe Keepcon::Integration do
95
95
  end
96
96
  end
97
97
  end
98
+
99
+ describe '.fetch_keepcon_results' do
100
+ subject { dummy_class.fetch_keepcon_results(context) }
101
+
102
+ let(:results) { double status: 200, body: 'keepcon-xml-response' }
103
+
104
+ context 'when context do not exists' do
105
+ let(:context) { :missing_context }
106
+
107
+ it { expect { subject }.to raise_error }
108
+ end
109
+
110
+ context 'when context exists' do
111
+ let(:context) { :context }
112
+
113
+ it 'calls client async_results_request for that context' do
114
+ expect(added_context.client).to receive(:async_results_request) do
115
+ results
116
+ end
117
+ subject
118
+ end
119
+ end
120
+ end
98
121
  end
metadata CHANGED
@@ -1,195 +1,195 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keepcon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane O'Grady
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-27 00:00:00.000000000 Z
11
+ date: 2015-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: retryable-rb
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: actionview
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: gyoku
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - ! '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - ! '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - ! '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: factory_girl
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - ! '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - ! '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - ! '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - ! '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: vcr
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - ! '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - ! '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: webmock
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - ! '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - ! '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: codeclimate-test-reporter
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - ! '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - ! '>='
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  description:
@@ -201,10 +201,10 @@ executables:
201
201
  extensions: []
202
202
  extra_rdoc_files: []
203
203
  files:
204
- - ".gitignore"
205
- - ".rspec"
206
- - ".rubocop.yml"
207
- - ".travis.yml"
204
+ - .gitignore
205
+ - .rspec
206
+ - .rubocop.yml
207
+ - .travis.yml
208
208
  - Gemfile
209
209
  - LICENSE.txt
210
210
  - README.md
@@ -248,12 +248,12 @@ require_paths:
248
248
  - lib
249
249
  required_ruby_version: !ruby/object:Gem::Requirement
250
250
  requirements:
251
- - - ">="
251
+ - - ! '>='
252
252
  - !ruby/object:Gem::Version
253
253
  version: '0'
254
254
  required_rubygems_version: !ruby/object:Gem::Requirement
255
255
  requirements:
256
- - - ">="
256
+ - - ! '>='
257
257
  - !ruby/object:Gem::Version
258
258
  version: '0'
259
259
  requirements: []