alephant-publisher-request 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,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 212638793ae63c57e1e7884d4b9734a366e2a87c
4
- data.tar.gz: d1150ed44ef1be7842248ebb986c29eca9e85e35
3
+ metadata.gz: 47fd46ef1bd5568a5d4ea6672a68fef0ebf3b16a
4
+ data.tar.gz: 8f90c8b8391c9fab241e0f7840af7eb565b08069
5
5
  SHA512:
6
- metadata.gz: 14e04aac1d08505fdfceb01d1752eb3f19d390400a0770d6ffa77c80fa414708988554afecafe90f9a70cd0aeb8291da100c9c44bb7b394f4ede71b4daa342f8
7
- data.tar.gz: 15796375af93d17e6922f02e602819e787ea16d1ae655eab6782eb34dfc9ed6981575d11d8a89557d8ab2db192e9537b7ce2c6fd2ad6501f4a2ce8ecd47e55d8
6
+ metadata.gz: 274ca023dc2e42790602def922158b8e63d71026c0b67f0b375402200fd83cdaef66a9f981d4d3638ce365719b56dd217d3cac5b97bb4859d1b3d1b0ac3a5870
7
+ data.tar.gz: 2120ecc5fb640e3019f4a968b21013c2e251ca35653242b932bb12b5f77f5545c69e7157b9a7ea72c2d112e47efb8be77c48f165b74299bf016b52f369b86d87
@@ -0,0 +1,36 @@
1
+ require "alephant/logger"
2
+
3
+ module Alephant
4
+ module Publisher
5
+ module Request
6
+ class Connection
7
+ include Logger
8
+ attr_reader :driver
9
+
10
+ def initialize(driver)
11
+ @driver = driver
12
+ end
13
+
14
+ def get(uri)
15
+ before = Time.new
16
+ response = driver.get(uri)
17
+ logger.metric(:name => "PublisherRequestDataMapperRequestHTTPTime", :unit => 'Seconds', :value => Time.new - before)
18
+ raise InvalidApiStatus, response.status unless response.status == 200
19
+ JSON::parse(response.body, :symbolize_names => true)
20
+ rescue Faraday::ConnectionFailed
21
+ logger.metric(:name => "PublisherRequestDataMapperConnectionFailed", :unit => "Count", :value => 1)
22
+ raise ConnectionFailed
23
+ rescue JSON::ParserError
24
+ logger.metric(:name => "PublisherRequestDataMapperInvalidApiResponse", :unit => "Count", :value => 1)
25
+ raise InvalidApiResponse, "JSON parsing error: #{response.body}"
26
+ rescue InvalidApiStatus => e
27
+ logger.metric(:name => "PublisherRequestDataMapperInvalidStatus#{e.status}", :unit => "Count", :value => 1)
28
+ raise e
29
+ rescue StandardError => e
30
+ logger.metric(:name => "PublisherRequestDataMapperApiError", :unit => "Count", :value => 1)
31
+ raise ApiError, e.message
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,12 +1,9 @@
1
- require 'alephant/logger'
2
1
  require 'json'
3
2
 
4
3
  module Alephant
5
4
  module Publisher
6
5
  module Request
7
6
  class DataMapper
8
- include Logger
9
-
10
7
  attr_reader :connection, :context
11
8
 
12
9
  def initialize(connection, context = {})
@@ -21,23 +18,7 @@ module Alephant
21
18
  protected
22
19
 
23
20
  def get(uri)
24
- before = Time.new
25
- response = connection.get(uri)
26
- logger.metric(:name => "PublisherRequestDataMapperRequestHTTPTime", :unit => 'Seconds', :value => Time.new - before)
27
- raise InvalidApiStatus, response.status unless response.status == 200
28
- JSON::parse(response.body, :symbolize_names => true)
29
- rescue Faraday::ConnectionFailed
30
- logger.metric(:name => "PublisherRequestDataMapperConnectionFailed", :unit => "Count", :value => 1)
31
- raise ConnectionFailed
32
- rescue JSON::ParserError
33
- logger.metric(:name => "PublisherRequestDataMapperInvalidApiResponse", :unit => "Count", :value => 1)
34
- raise InvalidApiResponse, "JSON parsing error: #{response.body}"
35
- rescue InvalidApiStatus => e
36
- logger.metric(:name => "PublisherRequestDataMapperInvalidStatus#{e.status}", :unit => "Count", :value => 1)
37
- raise e
38
- rescue StandardError => e
39
- logger.metric(:name => "PublisherRequestDataMapperApiError", :unit => "Count", :value => 1)
40
- raise ApiError, e.message
21
+ connection.get uri
41
22
  end
42
23
  end
43
24
  end
@@ -1,7 +1,7 @@
1
1
  module Alephant
2
2
  module Publisher
3
3
  module Request
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.0"
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,47 @@
1
+ require "spec_helper"
2
+
3
+ describe Alephant::Publisher::Request::Connection do
4
+ let (:driver) { instance_double(Faraday::Connection, :get => nil) }
5
+ let (:uri) { "/foo/bar/baz" }
6
+
7
+ subject { described_class.new driver }
8
+
9
+ describe "#get" do
10
+ let (:expected_raw_data) do
11
+ {
12
+ :some => 'data'
13
+ }
14
+ end
15
+ let (:expected_data) { JSON.generate(expected_raw_data, :symbolize_names => true) }
16
+ let (:expected_response) { instance_double(Faraday::Response, :body => expected_data, :status => 200) }
17
+
18
+ context "with a valid endpoint" do
19
+ before(:each) do
20
+ allow(driver).to receive(:get).and_return(expected_response)
21
+ end
22
+
23
+ specify { expect(subject.get(uri)).to eq expected_raw_data }
24
+ end
25
+
26
+ context "invalid hostname" do
27
+ let (:expected_exception) { Alephant::Publisher::Request::ConnectionFailed }
28
+ let (:faraday_exception) { Faraday::ConnectionFailed.new(StandardError) }
29
+
30
+ before(:each) do
31
+ allow(driver).to receive(:get).and_raise(faraday_exception)
32
+ end
33
+
34
+ specify { expect { subject.get(uri)}.to raise_error expected_exception }
35
+ end
36
+
37
+ context "invalid status code" do
38
+ let (:status_code) { 503 }
39
+ let (:expected_exception) { Alephant::Publisher::Request::InvalidApiStatus }
40
+ before(:each) do
41
+ allow(driver).to receive(:get).and_return(OpenStruct.new(:status => status_code))
42
+ end
43
+
44
+ specify { expect { subject.get(uri)}.to raise_error expected_exception }
45
+ end
46
+ end
47
+ end
@@ -5,7 +5,8 @@ describe Alephant::Publisher::Request do
5
5
  let (:response) { instance_double(Faraday::Response, :status => 200, :body => nil) }
6
6
  let (:base_path) { File.join(File.dirname(__FILE__), '..', 'fixtures', 'components') }
7
7
  let (:processor) { Alephant::Publisher::Request::Processor.new(base_path) }
8
- let (:connection) { instance_double(Faraday::Connection, :get => response) }
8
+ let (:driver) { instance_double(Faraday::Connection, :get => response) }
9
+ let (:connection) { Alephant::Publisher::Request::Connection.new driver }
9
10
  let (:data_mapper_factory) { Alephant::Publisher::Request::DataMapperFactory.new(connection, base_path) }
10
11
  let (:app) { subject.create(processor, data_mapper_factory, { :debug => true }) }
11
12
 
@@ -1,11 +1,13 @@
1
- require 'pry'
1
+ require "pry"
2
2
 
3
- require 'aws-sdk'
4
- require 'faraday'
5
- require 'alephant/renderer'
6
- require 'alephant/publisher/request'
7
- require 'alephant/publisher/request/error'
8
- require 'alephant/publisher/request/data_mapper'
9
- require 'alephant/publisher/request/data_mapper_factory'
3
+ require "json"
4
+ require "aws-sdk"
5
+ require "faraday"
6
+ require "alephant/renderer"
7
+ require "alephant/publisher/request"
8
+ require "alephant/publisher/request/error"
9
+ require "alephant/publisher/request/data_mapper"
10
+ require "alephant/publisher/request/connection"
11
+ require "alephant/publisher/request/data_mapper_factory"
10
12
 
11
- require_relative './fixtures/components/foo/mapper'
13
+ require_relative "./fixtures/components/foo/mapper"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alephant-publisher-request
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
  - Integralist
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-17 00:00:00.000000000 Z
11
+ date: 2015-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -251,14 +251,15 @@ files:
251
251
  - Rakefile
252
252
  - alephant-publisher-request.gemspec
253
253
  - lib/alephant/publisher/request.rb
254
+ - lib/alephant/publisher/request/connection.rb
254
255
  - lib/alephant/publisher/request/data_mapper.rb
255
256
  - lib/alephant/publisher/request/data_mapper_factory.rb
256
257
  - lib/alephant/publisher/request/error.rb
257
258
  - lib/alephant/publisher/request/processor.rb
258
259
  - lib/alephant/publisher/request/processor/base.rb
259
260
  - lib/alephant/publisher/request/version.rb
261
+ - spec/connection_spec.rb
260
262
  - spec/data_mapper_factory_spec.rb
261
- - spec/data_mapper_spec.rb
262
263
  - spec/fixtures/components/foo/mapper.rb
263
264
  - spec/fixtures/components/foo/models/foo.rb
264
265
  - spec/fixtures/components/foo/templates/foo.mustache
@@ -294,8 +295,8 @@ signing_key:
294
295
  specification_version: 4
295
296
  summary: '...'
296
297
  test_files:
298
+ - spec/connection_spec.rb
297
299
  - spec/data_mapper_factory_spec.rb
298
- - spec/data_mapper_spec.rb
299
300
  - spec/fixtures/components/foo/mapper.rb
300
301
  - spec/fixtures/components/foo/models/foo.rb
301
302
  - spec/fixtures/components/foo/templates/foo.mustache
@@ -1,53 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe FooMapper do
4
- let (:connection) { instance_double(Faraday::Connection, :get => nil) }
5
- let (:context) do
6
- {
7
- :foo => :bar
8
- }
9
- end
10
-
11
- subject { described_class.new(connection, context) }
12
-
13
- describe "#data" do
14
- let (:expected_raw_data) do
15
- {
16
- :some => 'data'
17
- }
18
- end
19
- let (:expected_data) { JSON::generate(expected_raw_data, :symbolize_names => true) }
20
- let (:expected_response) { instance_double(Faraday::Response, :body => expected_data, :status => 200) }
21
-
22
- context "with a valid endpoint" do
23
- before(:each) do
24
- allow(connection).to receive(:get).with("/some/test/endpoint/#{context.values[0]}").and_return(expected_response)
25
- end
26
-
27
- specify { expect(subject.data).to eq expected_raw_data }
28
- end
29
-
30
- context "invalid hostname" do
31
- let (:expected_exception) { Alephant::Publisher::Request::ConnectionFailed }
32
- let (:faraday_exception) { Faraday::ConnectionFailed.new(StandardError) }
33
-
34
- before(:each) do
35
- allow(connection).to receive(:get).and_raise(faraday_exception)
36
- end
37
-
38
- specify { expect { subject.data }.to raise_error expected_exception }
39
- end
40
-
41
- context "invalid status code" do
42
- let (:status_code) { 503 }
43
- let (:expected_exception) { Alephant::Publisher::Request::InvalidApiStatus }
44
- before(:each) do
45
- allow(connection).to receive(:get).and_return(OpenStruct.new(:status => status_code))
46
- end
47
-
48
- specify { expect { subject.data }.to raise_error expected_exception }
49
- end
50
-
51
-
52
- end
53
- end