vault-invoice-builder-client 0.0.2 → 0.0.3

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9ad40783466009e0b45d9265d6932b1806a0377a
4
+ data.tar.gz: 9b1dc214c173b93414663554d60d77d9074f9663
5
+ SHA512:
6
+ metadata.gz: 381e2dcff4194d9f1958700e030efa7d90c83883e828454a013b84cde8b5beed3355ce45f40b13b31077d3a23bf72a65a511bc880ff6c5d491011dbb241c21e1
7
+ data.tar.gz: f74a038b8f5548521db7511bc0e880dc46cf1234fd34aa9e78536f3acc0d4fa52decb734d111e105423559f847c899134f5a5d12e5279eee1c70e4e41ef83c38
data/.gitignore CHANGED
@@ -4,3 +4,4 @@
4
4
  doc/
5
5
  vendor/
6
6
  test/.test*
7
+ pkg/
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
data/Gemfile CHANGED
@@ -1,12 +1,15 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
5
  group :development do
6
6
  gem 'rake'
7
+ gem 'yard'
8
+ gem 'debugger'
9
+ gem 'multi_json'
7
10
  end
8
11
 
9
12
  group :test do
10
13
  gem 'rr'
11
- gem 'vault-test-tools', '~> 0.2.2', :git => 'https://github.com/heroku/vault-test-tools.git'
14
+ gem 'vault-test-tools'
12
15
  end
@@ -1,56 +1,88 @@
1
- GIT
2
- remote: https://github.com/heroku/vault-test-tools.git
3
- revision: 5eabd67610f279b81cadb803cee8ef704093a05d
4
- specs:
5
- vault-test-tools (0.2.2)
6
- minitest
7
- nokogiri
8
- rack-perftools_profiler
9
- rack-test
10
- rdoc
11
- redcarpet
12
- turn
13
- yard
14
-
15
1
  PATH
16
2
  remote: .
17
3
  specs:
18
- vault-invoice-builder-client (0.0.2)
4
+ vault-invoice-builder-client (0.0.3)
19
5
  excon
6
+ multi_json
20
7
  yajl-ruby
21
8
 
22
9
  GEM
23
- remote: http://rubygems.org/
10
+ remote: https://rubygems.org/
24
11
  specs:
25
12
  ansi (1.4.3)
26
- excon (0.16.10)
27
- json (1.7.7)
28
- minitest (4.6.0)
29
- nokogiri (1.5.6)
30
- open4 (1.3.0)
31
- perftools.rb (2.0.0)
13
+ celluloid (0.15.2)
14
+ timers (~> 1.1.0)
15
+ coderay (1.1.0)
16
+ columnize (0.8.9)
17
+ debugger (1.6.6)
18
+ columnize (>= 0.3.1)
19
+ debugger-linecache (~> 1.2.0)
20
+ debugger-ruby_core_source (~> 1.3.2)
21
+ debugger-linecache (1.2.0)
22
+ debugger-ruby_core_source (1.3.2)
23
+ excon (0.38.0)
24
+ ffi (1.9.3)
25
+ formatador (0.2.5)
26
+ guard (2.6.1)
27
+ formatador (>= 0.2.4)
28
+ listen (~> 2.7)
29
+ lumberjack (~> 1.0)
30
+ pry (>= 0.9.12)
31
+ thor (>= 0.18.1)
32
+ guard-minitest (2.3.2)
33
+ guard (~> 2.0)
34
+ minitest (>= 3.0)
35
+ listen (2.7.9)
36
+ celluloid (>= 0.15.2)
37
+ rb-fsevent (>= 0.9.3)
38
+ rb-inotify (>= 0.9)
39
+ logfmt (0.0.6)
40
+ lumberjack (1.0.9)
41
+ method_source (0.8.2)
42
+ mini_portile (0.6.0)
43
+ minitest (4.7.5)
44
+ multi_json (1.10.0)
45
+ nokogiri (1.6.3.1)
46
+ mini_portile (= 0.6.0)
47
+ pry (0.10.1)
48
+ coderay (~> 1.1.0)
49
+ method_source (~> 0.8.1)
50
+ slop (~> 3.4)
32
51
  rack (1.5.2)
33
- rack-perftools_profiler (0.6.0)
34
- open4 (~> 1.0)
35
- perftools.rb (~> 2.0.0)
36
- rack (~> 1.0)
37
52
  rack-test (0.6.2)
38
53
  rack (>= 1.0)
39
54
  rake (10.0.3)
40
- rdoc (3.12.1)
41
- json (~> 1.4)
42
- redcarpet (2.2.2)
43
- rr (1.0.4)
44
- turn (0.9.6)
55
+ rb-fsevent (0.9.4)
56
+ rb-inotify (0.9.5)
57
+ ffi (>= 0.5.0)
58
+ rr (1.1.2)
59
+ scrolls (0.3.8)
60
+ slop (3.6.0)
61
+ thor (0.19.1)
62
+ timers (1.1.0)
63
+ turn (0.9.7)
45
64
  ansi
46
- yajl-ruby (1.1.0)
47
- yard (0.8.4.1)
65
+ minitest (~> 4)
66
+ vault-test-tools (0.3.8)
67
+ guard-minitest
68
+ logfmt
69
+ minitest (~> 4.7.4)
70
+ nokogiri
71
+ rack-test
72
+ rr
73
+ scrolls
74
+ turn
75
+ yajl-ruby (1.2.0)
76
+ yard (0.8.7.4)
48
77
 
49
78
  PLATFORMS
50
79
  ruby
51
80
 
52
81
  DEPENDENCIES
82
+ debugger
83
+ multi_json
53
84
  rake
54
85
  rr
55
86
  vault-invoice-builder-client!
56
- vault-test-tools (~> 0.2.2)!
87
+ vault-test-tools
88
+ yard
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
  require 'yard'
3
3
 
4
4
  desc "Test the things"
@@ -31,6 +31,24 @@ module Vault::InvoiceBuilder
31
31
  response.body
32
32
  end
33
33
 
34
+ # POST an encrypted statement URL to to the proxy-able /statement/:id
35
+ # endpoint
36
+ #
37
+ # @param statement_url [String] An encrypted URL to an object matching the
38
+ # statement format described in the `Vault::InvoiceBuilder` README.
39
+ # @raise [Excon::Errors::HTTPStatusError] Raised if the server returns an
40
+ # unsuccessful HTTP status code.
41
+ # @return [Excon::Response] The response object.
42
+ def post_url(statement_url)
43
+ connection = Excon.new(@url)
44
+ response = connection.post(
45
+ path: "/statements",
46
+ headers: {'Content-Type' => 'application/json'},
47
+ body: JSON.generate(url: statement_url),
48
+ expects: [202])
49
+ end
50
+
51
+ # @deprecated Please use {#post_url} instead
34
52
  # POST a statement to to the proxy-able /statement/:id endpoint
35
53
  #
36
54
  # @param statement [Hash] An object matching the statement format described in
@@ -2,7 +2,7 @@ module Vault
2
2
  module InvoiceBuilder
3
3
  class Client
4
4
  # The `Vault::InvoiceBuilder::Client` gem version.
5
- VERSION = '0.0.2'
5
+ VERSION = '0.0.3'
6
6
  end
7
7
  end
8
8
  end
@@ -1,4 +1,5 @@
1
1
  require 'helper'
2
+ require 'multi_json'
2
3
 
3
4
  class ClientTest < Vault::TestCase
4
5
  include Vault::Test::EnvironmentHelpers
@@ -39,8 +40,8 @@ class ClientTest < Vault::TestCase
39
40
  def test_render_html
40
41
  content = '<html><body><p>Hello, world!</p></body></html>'
41
42
  Excon.stub(method: :post) do |request|
42
- assert_equal('vault-invoice-builder.herokuapp.com:443',
43
- request[:host_port])
43
+ assert_equal('vault-invoice-builder.herokuapp.com', request[:host])
44
+ assert_equal(443, request[:port])
44
45
  assert_equal("/invoice.html", request[:path])
45
46
  Excon.stubs.pop
46
47
  {status: 200, body: content}
@@ -65,8 +66,8 @@ class ClientTest < Vault::TestCase
65
66
  # Vault::InvoiceBuilder to generate the invoice and store it to S3.
66
67
  def test_store
67
68
  Excon.stub(method: :post) do |request|
68
- assert_equal('vault-invoice-builder.herokuapp.com:443',
69
- request[:host_port])
69
+ assert_equal('vault-invoice-builder.herokuapp.com', request[:host])
70
+ assert_equal(443, request[:port])
70
71
  assert_equal('/store', request[:path])
71
72
  assert_equal('application/json', request[:headers]['Content-Type'])
72
73
  Excon.stubs.pop
@@ -92,8 +93,8 @@ class ClientTest < Vault::TestCase
92
93
  def test_post_with_symbol_id_key
93
94
  @statement[:id] = 1
94
95
  Excon.stub(method: :post) do |request|
95
- assert_equal('vault-invoice-builder.herokuapp.com:443',
96
- request[:host_port])
96
+ assert_equal('vault-invoice-builder.herokuapp.com', request[:host])
97
+ assert_equal(443, request[:port])
97
98
  assert_equal('/statement/1', request[:path])
98
99
  assert_equal('application/json', request[:headers]['Content-Type'])
99
100
  Excon.stubs.pop
@@ -107,8 +108,8 @@ class ClientTest < Vault::TestCase
107
108
  def test_post_with_string_id_key
108
109
  @statement['id'] = 1
109
110
  Excon.stub(method: :post) do |request|
110
- assert_equal('vault-invoice-builder.herokuapp.com:443',
111
- request[:host_port])
111
+ assert_equal('vault-invoice-builder.herokuapp.com', request[:host])
112
+ assert_equal(443, request[:port])
112
113
  assert_equal('/statement/1', request[:path])
113
114
  assert_equal('application/json', request[:headers]['Content-Type'])
114
115
  Excon.stubs.pop
@@ -129,4 +130,21 @@ class ClientTest < Vault::TestCase
129
130
  @client.post(@statement)
130
131
  end
131
132
  end
133
+
134
+ # Client.post_url makes a POST request to the canonical statement drain API
135
+ def test_post_url_with_url
136
+ json = { url: 'http://encrypted.url.example' }
137
+ Excon.stub(method: :post) do |request|
138
+ assert_equal('vault-invoice-builder.herokuapp.com', request[:host])
139
+ assert_equal(443, request[:port])
140
+ assert_equal('/statements', request[:path])
141
+ assert_equal('application/json', request[:headers]['Content-Type'])
142
+ assert_equal(json, MultiJson.load(request[:body], {symbolize_keys: true}))
143
+ Excon.stubs.pop
144
+ {status: 202}
145
+ end
146
+ response = @client.post_url('http://encrypted.url.example')
147
+ assert_equal(202, response.status)
148
+ end
149
+
132
150
  end
@@ -18,4 +18,5 @@ Gem::Specification.new do |gem|
18
18
 
19
19
  gem.add_dependency 'excon'
20
20
  gem.add_dependency 'yajl-ruby'
21
+ gem.add_dependency 'multi_json'
21
22
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vault-invoice-builder-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Chris Continanza
@@ -11,38 +10,48 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-05-09 00:00:00.000000000 Z
13
+ date: 2014-09-08 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: excon
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - '>='
22
20
  - !ruby/object:Gem::Version
23
21
  version: '0'
24
22
  type: :runtime
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - '>='
30
27
  - !ruby/object:Gem::Version
31
28
  version: '0'
32
29
  - !ruby/object:Gem::Dependency
33
30
  name: yajl-ruby
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
- - - ! '>='
33
+ - - '>='
38
34
  - !ruby/object:Gem::Version
39
35
  version: '0'
40
36
  type: :runtime
41
37
  prerelease: false
42
38
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
39
  requirements:
45
- - - ! '>='
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: multi_json
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
46
55
  - !ruby/object:Gem::Version
47
56
  version: '0'
48
57
  description: Client for Vault::InvoiceBuilder
@@ -55,6 +64,7 @@ extensions: []
55
64
  extra_rdoc_files: []
56
65
  files:
57
66
  - .gitignore
67
+ - .travis.yml
58
68
  - .yardopts
59
69
  - Gemfile
60
70
  - Gemfile.lock
@@ -69,33 +79,26 @@ files:
69
79
  - vault-invoice-builder-client.gemspec
70
80
  homepage: https://github.com/heroku/vault-invoice-builder-client
71
81
  licenses: []
82
+ metadata: {}
72
83
  post_install_message:
73
84
  rdoc_options: []
74
85
  require_paths:
75
86
  - lib
76
87
  required_ruby_version: !ruby/object:Gem::Requirement
77
- none: false
78
88
  requirements:
79
- - - ! '>='
89
+ - - '>='
80
90
  - !ruby/object:Gem::Version
81
91
  version: '0'
82
- segments:
83
- - 0
84
- hash: -3070326704752709441
85
92
  required_rubygems_version: !ruby/object:Gem::Requirement
86
- none: false
87
93
  requirements:
88
- - - ! '>='
94
+ - - '>='
89
95
  - !ruby/object:Gem::Version
90
96
  version: '0'
91
- segments:
92
- - 0
93
- hash: -3070326704752709441
94
97
  requirements: []
95
98
  rubyforge_project:
96
- rubygems_version: 1.8.23
99
+ rubygems_version: 2.0.14
97
100
  signing_key:
98
- specification_version: 3
101
+ specification_version: 4
99
102
  summary: A simple wrapper for the Vault::InvoiceBuilder HTTP API
100
103
  test_files: []
101
104
  has_rdoc: