alephant-publisher-request 0.1.2 → 0.2.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: 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