vhx-ruby 0.0.8 → 0.0.9

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: 134b9c8e24549b65fe6d38d553c0d786ab86cd55
4
- data.tar.gz: 608cef9093c267377aa41769e5fd47233f9530a2
3
+ metadata.gz: 56058d63c232a5221d030477f8de29ebea8efd62
4
+ data.tar.gz: 807adb8c7fc959aaa2fe7749a9618aaa07d2d1c1
5
5
  SHA512:
6
- metadata.gz: f6095076d2b38e520bccc62395f64ca787c3b4c32f8a829fbc9e9bd8b393c7d176bae1d6b948abfcbf42db3630f7c824dc9b156481314c782f2fafe364ab31e7
7
- data.tar.gz: f771ba677ea096b041cc86f251d8b4584e61a7487a3de372c86228b96537db1dd7a39b1c45200e618aef620c5ba4a091e531c1fad66abbdc02713120df88b955
6
+ metadata.gz: 574e551381081eb677a163544611b61d1daec286b5441f3cd60328df803ab80d0356413afe850ac1ec27fe3f151bb35691d505c2e467742a4c6d660408112504
7
+ data.tar.gz: 9714c5b4e9e6a702afa07db4ca965d187afa1dbbc5efdc3c9287f8d52a422deb1d2da796bdc9402b7162df0ee3d2c6a6e8fe63b1fb0fbf194bd50f4e83c27048
data/README.md CHANGED
@@ -6,6 +6,29 @@ The VHX API is currently Private Beta. You can request an API key by emailing ap
6
6
 
7
7
  `gem install vhx-ruby`
8
8
 
9
+ #### Building Locally
10
+
11
+ ```shell
12
+ $ gem build vhx.gemspec
13
+ Successfully built RubyGem
14
+ Name: vhx
15
+ Version: 0.0.0
16
+ File: vhx-0.0.0.gem
17
+
18
+ $ gem install vhx-0.0.0.gem
19
+ Successfully installed vhx-0.0.0
20
+ 1 gem installed
21
+
22
+ $ irb
23
+ irb(main)> require 'vhx'
24
+ ```
25
+
26
+ #### Running Specs
27
+
28
+ ```shell
29
+ rspec .
30
+ ```
31
+
9
32
  ### Documentation
10
33
 
11
34
  Documentation is available at http://dev.vhx.tv/docs/api/ruby.
@@ -16,7 +39,7 @@ Full API reference is available at http://dev.vhx.tv/docs/api?ruby.
16
39
  Before requesting your first resource, you must setup an instance of the Vhx Client:
17
40
 
18
41
  ```ruby
19
- vhx = Vhx.setup({ api_key: 'your VHX API key'} )
42
+ vhx = Vhx.setup({ api_key: 'your VHX API key' })
20
43
  ```
21
44
 
22
45
  Here's an example of creating a Vhx resource with payload options. You can handle errors by rescuing Vhx::VhxError.
data/lib/vhx.rb CHANGED
@@ -36,20 +36,20 @@ module Vhx
36
36
 
37
37
  class << self
38
38
  def setup(options = {})
39
- options[:client_id] ||= @client_id
40
- options[:client_secret] ||= @client_secret
41
- options[:api_key] ||= @api_key
42
- options[:api_base] ||= @api_base_url
43
- options[:auto_refresh] = @auto_refresh || false
39
+ options[:client_id] ||= @client_id
40
+ options[:client_secret] ||= @client_secret
41
+ options[:api_key] ||= @api_key
42
+ options[:api_base] ||= @api_base_url
43
+ options[:auto_refresh] = @auto_refresh || false
44
44
  Vhx.client = Vhx::Client.new(options)
45
45
  end
46
46
 
47
47
  def config(config = {})
48
- @client_id = config[:client_id]
49
- @client_secret = config[:client_secret]
50
- @api_key = config[:api_key]
51
- @auto_refresh = config[:auto_refresh] || false
52
- @api_base_url = config[:api_base]
48
+ @client_id = config[:client_id]
49
+ @client_secret = config[:client_secret]
50
+ @api_key = config[:api_key]
51
+ @auto_refresh = config[:auto_refresh] || false
52
+ @api_base_url = config[:api_base]
53
53
  end
54
54
 
55
55
  def client
@@ -1,6 +1,7 @@
1
1
  module Vhx
2
2
  class Video < VhxObject
3
3
  include Vhx::ApiOperations::Create
4
+ include Vhx::ApiOperations::Update
4
5
  include Vhx::ApiOperations::Request
5
6
  include Vhx::ApiOperations::List
6
7
 
@@ -2,10 +2,17 @@ module Vhx
2
2
  module ApiOperations
3
3
  module Create
4
4
  module ClassMethods
5
- def create(payload)
5
+ def create(payload, headers = {})
6
6
  klass = get_klass
7
7
  response = Vhx.connection.post do |req|
8
- req.url('/' + klass.downcase + 's') #This url is based purely on VHX's API convention.
8
+ req.url('/' + klass.downcase + 's') # This url is based purely on VHX's API convention.
9
+
10
+ if headers.length > 0
11
+ headers.each do |key, value|
12
+ req.headers[key] = value
13
+ end
14
+ end
15
+
9
16
  req.body = payload
10
17
  end
11
18
 
@@ -2,8 +2,12 @@ module Vhx
2
2
  module ApiOperations
3
3
  module Delete
4
4
  module ClassMethods
5
- def delete(identifier, payload = {})
6
- Vhx.connection.delete(get_hypermedia(identifier), payload)
5
+ def delete(identifier, payload = {}, headers = {})
6
+ Vhx.connection.delete(
7
+ get_hypermedia(identifier),
8
+ payload,
9
+ headers,
10
+ )
7
11
  end
8
12
  end
9
13
 
@@ -13,4 +17,4 @@ module Vhx
13
17
  end
14
18
  end
15
19
  end
16
- end
20
+ end
@@ -4,13 +4,17 @@ module Vhx
4
4
  module ApiOperations
5
5
  module List
6
6
  module ClassMethods
7
- def all(payload = {})
8
- response = Vhx.connection.get('/' + get_klass.downcase + 's', payload)
7
+ def all(payload = {}, headers = {})
8
+ response = Vhx.connection.get(
9
+ '/' + get_klass.downcase + 's',
10
+ payload,
11
+ headers,
12
+ )
9
13
  VhxListObject.new(response.body, get_klass.downcase + 's')
10
14
  end
11
15
 
12
- def list(payload = {})
13
- self.all(payload)
16
+ def list(payload = {}, headers = {})
17
+ self.all(payload, headers)
14
18
  end
15
19
  end
16
20
 
@@ -2,13 +2,17 @@ module Vhx
2
2
  module ApiOperations
3
3
  module Request
4
4
  module ClassMethods
5
- def find(identifier)
6
- response = Vhx.connection.get(get_hypermedia(identifier))
5
+ def find(identifier, payload = {}, headers = {})
6
+ response = Vhx.connection.get(
7
+ get_hypermedia(identifier),
8
+ payload,
9
+ headers,
10
+ )
7
11
  self.new(response.body)
8
12
  end
9
13
 
10
- def retrieve(identifier)
11
- self.find(identifier)
14
+ def retrieve(identifier, payload = {}, headers = {})
15
+ self.find(identifier, payload, headers)
12
16
  end
13
17
  end
14
18
 
@@ -2,8 +2,8 @@ module Vhx
2
2
  module ApiOperations
3
3
  module Update
4
4
  module InstanceMethods
5
- def update(payload)
6
- Vhx.connection.put(self.href, payload)
5
+ def update(payload, headers = {})
6
+ Vhx.connection.put(self.href, payload, headers)
7
7
  end
8
8
  end
9
9
 
@@ -12,4 +12,4 @@ module Vhx
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Vhx
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -12,34 +12,34 @@ describe Vhx::Customer do
12
12
  before{
13
13
  Vhx.setup({api_key: 'testapikey'})
14
14
  }
15
-
15
+
16
16
  describe 'api operations' do
17
17
 
18
18
  describe '::find' do
19
19
  it 'does not error' do
20
20
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: customer_response))
21
- expect{Vhx::Customer.find(123)}.to_not raise_error
21
+ expect{Vhx::Customer.find(123)}.to_not raise_error
22
22
  end
23
- end
23
+ end
24
24
 
25
25
  describe '::retrieve' do
26
26
  it 'does not error' do
27
27
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: customer_response))
28
- expect{Vhx::Customer.retrieve(123)}.to_not raise_error
28
+ expect{Vhx::Customer.retrieve(123)}.to_not raise_error
29
29
  end
30
30
  end
31
31
 
32
32
  describe '::list' do
33
33
  it 'does not error' do
34
34
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: customers_response))
35
- expect{Vhx::Customer.list()}.to_not raise_error
35
+ expect{Vhx::Customer.list()}.to_not raise_error
36
36
  end
37
37
  end
38
38
 
39
39
  describe '::all' do
40
40
  it 'does not error' do
41
41
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: customers_response))
42
- expect{Vhx::Customer.all()}.to_not raise_error
42
+ expect{Vhx::Customer.all()}.to_not raise_error
43
43
  end
44
44
  end
45
45
 
@@ -61,13 +61,29 @@ describe Vhx::Customer do
61
61
  Vhx.connection.stub(:delete).and_return(OpenStruct.new(body: ""))
62
62
  expect{Vhx::Customer.delete(1)}.to_not raise_error
63
63
  end
64
+
65
+ it "supports headers" do
66
+ params = [
67
+ :delete,
68
+ "https://api.vhx.tv/customers/1",
69
+ nil,
70
+ { "VHX-Client-IP" => "1.2.3.4" },
71
+ ]
72
+ response = OpenStruct.new(body: "")
73
+
74
+ expect_any_instance_of(Faraday::Connection).to receive(:run_request).
75
+ with(*params).
76
+ and_return(response)
77
+
78
+ Vhx::Customer.delete(1, {}, { 'VHX-Client-IP' => '1.2.3.4' })
79
+ end
64
80
  end
65
81
 
66
82
  describe '#add_product' do
67
83
  it 'returns customer' do
68
84
  Vhx.connection.stub(:put).and_return(OpenStruct.new(body: customer_response))
69
85
  customer = Vhx::Customer.new(customer_response).add_product(1)
70
- expect(customer.class).to eq(Vhx::Customer)
86
+ expect(customer.class).to eq(Vhx::Customer)
71
87
  end
72
88
  end
73
89
 
@@ -75,7 +91,7 @@ describe Vhx::Customer do
75
91
  it 'returns customer' do
76
92
  Vhx.connection.stub(:delete).and_return(OpenStruct.new(body: customer_response))
77
93
  customer = Vhx::Customer.new(customer_response).remove_product(1)
78
- expect(customer.class).to eq(Vhx::Customer)
94
+ expect(customer.class).to eq(Vhx::Customer)
79
95
  end
80
96
  end
81
97
  end
@@ -13,34 +13,66 @@ describe Vhx::Video do
13
13
  before{
14
14
  Vhx.setup({api_key: 'testapikey'})
15
15
  }
16
-
16
+
17
17
  describe 'api operations' do
18
18
 
19
19
  describe '::find' do
20
20
  it 'does not error' do
21
21
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: video_response))
22
- expect{Vhx::Video.find(123)}.to_not raise_error
22
+ expect{Vhx::Video.find(123)}.to_not raise_error
23
+ end
24
+
25
+ it "supports headers" do
26
+ params = [
27
+ :get,
28
+ "https://api.vhx.tv/videos/123",
29
+ nil,
30
+ { "VHX-Client-IP" => "1.2.3.4" },
31
+ ]
32
+ response = OpenStruct.new(body: video_response)
33
+
34
+ expect_any_instance_of(Faraday::Connection).to receive(:run_request).
35
+ with(*params).
36
+ and_return(response)
37
+
38
+ Vhx::Video.find(123, {}, { 'VHX-Client-IP' => '1.2.3.4' })
23
39
  end
24
- end
40
+ end
25
41
 
26
42
  describe '::retrieve' do
27
43
  it 'does not error' do
28
44
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: video_response))
29
- expect{Vhx::Video.retrieve(123)}.to_not raise_error
45
+ expect{Vhx::Video.retrieve(123)}.to_not raise_error
30
46
  end
31
47
  end
32
48
 
33
49
  describe '::list' do
34
50
  it 'does not error' do
35
51
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: videos_response))
36
- expect{Vhx::Video.list()}.to_not raise_error
52
+ expect{Vhx::Video.list()}.to_not raise_error
53
+ end
54
+
55
+ it "supports headers" do
56
+ params = [
57
+ :get,
58
+ "/videos",
59
+ nil,
60
+ { "VHX-Client-IP" => "1.2.3.4" },
61
+ ]
62
+ response = OpenStruct.new(body: videos_response)
63
+
64
+ expect_any_instance_of(Faraday::Connection).to receive(:run_request).
65
+ with(*params).
66
+ and_return(response)
67
+
68
+ Vhx::Video.list({}, { 'VHX-Client-IP' => '1.2.3.4' })
37
69
  end
38
70
  end
39
71
 
40
72
  describe '::all' do
41
73
  it 'does not error' do
42
74
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: videos_response))
43
- expect{Vhx::Video.all()}.to_not raise_error
75
+ expect{Vhx::Video.all()}.to_not raise_error
44
76
  end
45
77
  end
46
78
 
@@ -51,9 +83,26 @@ describe Vhx::Video do
51
83
  end
52
84
  end
53
85
 
54
- describe '#udpate' do
86
+ describe '#update' do
55
87
  it 'raises error' do
56
- expect{Vhx::Video.new({}).update}.to raise_error(NoMethodError)
88
+ Vhx.connection.stub(:put).and_return(OpenStruct.new(body: video_response))
89
+ expect{Vhx::Video.new(video_response).update({})}.to_not raise_error(NoMethodError)
90
+ end
91
+
92
+ it "supports headers" do
93
+ params = [
94
+ :put,
95
+ "https://api.vhx.tv/videos/1",
96
+ { title: "Video" },
97
+ { "VHX-Client-IP" => "1.2.3.4" },
98
+ ]
99
+ response = OpenStruct.new(body: videos_response)
100
+
101
+ expect_any_instance_of(Faraday::Connection).to receive(:run_request).
102
+ with(*params).
103
+ and_return(response)
104
+ video = Vhx::Video.new(video_response)
105
+ video.update({ title: "Video" }, { 'VHX-Client-IP' => '1.2.3.4' })
57
106
  end
58
107
  end
59
108
 
@@ -64,15 +113,14 @@ describe Vhx::Video do
64
113
  end
65
114
 
66
115
  describe '#files' do
67
-
68
116
  def files_response
69
117
  JSON.parse(File.read("spec/fixtures/sample_files_response.json"))
70
118
  end
71
-
119
+
72
120
  it 'fetches linked association' do
73
121
  Vhx.connection.stub(:get).and_return(OpenStruct.new(body: files_response))
74
122
  files = Vhx::Video.new(video_response).files
75
- expect(files.first.class).to eq(Vhx::Video::File)
123
+ expect(files.first.class).to eq(Vhx::Video::File)
76
124
  expect(Vhx.connection).to have_received(:get)
77
125
  end
78
126
  end
@@ -5,10 +5,10 @@ require 'vhx/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'vhx-ruby'
7
7
  spec.version = Vhx::VERSION
8
- spec.authors = ['Sagar Shah']
9
- spec.date = '2017-01-06'
10
- spec.description = 'A Ruby wrapper for the Vhx developer API.'
11
- spec.summary = 'A Ruby wrapper for the Vhx developer API.'
8
+ spec.authors = ['Sagar Shah', 'Kevin Sheurs']
9
+ spec.date = '2017-02-03'
10
+ spec.description = 'A Ruby wrapper for the VHX developer API.'
11
+ spec.summary = 'A Ruby wrapper for the VHX developer API.'
12
12
  spec.email = ['sagar@vhx.tv', 'dev@vhx.tv', 'wontae@vhx.tv', 'charlie@vhx.tv', 'kevin@vhx.tv', 'scott@vhx.tv']
13
13
  spec.homepage = 'http://dev.vhx.tv/docs/api/'
14
14
  spec.license = 'MIT'
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vhx-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sagar Shah
8
+ - Kevin Sheurs
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-01-06 00:00:00.000000000 Z
12
+ date: 2017-02-03 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
@@ -66,7 +67,7 @@ dependencies:
66
67
  - - ">="
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
69
- description: A Ruby wrapper for the Vhx developer API.
70
+ description: A Ruby wrapper for the VHX developer API.
70
71
  email:
71
72
  - sagar@vhx.tv
72
73
  - dev@vhx.tv
@@ -165,7 +166,7 @@ rubyforge_project:
165
166
  rubygems_version: 2.5.1
166
167
  signing_key:
167
168
  specification_version: 4
168
- summary: A Ruby wrapper for the Vhx developer API.
169
+ summary: A Ruby wrapper for the VHX developer API.
169
170
  test_files:
170
171
  - spec/client_spec.rb
171
172
  - spec/fixtures/sample_array_list.json