zype 0.3.0 → 0.4.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
  SHA256:
3
- metadata.gz: 9a1a13362c63c35462242041f0487a1a79ec79b102f434386d575e8fe16c3473
4
- data.tar.gz: 533def1a029421620f8da0f255c9db86a0d60ac60a6134fa1b1db2f2e9b7dc90
3
+ metadata.gz: b9a2ea73f4d8fbd2a269eac9d311b23d7d0d0a2a0c008e8f95931241c030cc4e
4
+ data.tar.gz: 7fa7fc82ca88b6aaf5a0396b68b613fec84dd764892b21e8aca866f67b8f1274
5
5
  SHA512:
6
- metadata.gz: 4ca2a4cbcaa7ce41cc5a945c2830e46e9fa6142310282fa895fa09d8feb182f0820d40e76c4eda92562d872542f8f4428b896e190bd43f453fdfd3f8bb629218
7
- data.tar.gz: d47ba8721610eeefcdc526fc4bd6759f584c3df93144a1701c6911d48cd24f86fbabe44710d44696eb6350d5e8e808457788f68528bf3c9fca73501e167b09db
6
+ metadata.gz: 561add775aca12eb095edd30a8d5b23b5d58b8603df5f2980922744cb87dad216325369ff72555cfc875ce84c985cdd04d04c7d76e4998ce48cca50739becf80
7
+ data.tar.gz: d1ca32fd59b69988dcbc3b3e7916c54986718959390bd63405400076df1a7aa4529fb2b839294b78e001d8bad8ea8493d19a1e981ed2d9121e11a80bc1228315
data/lib/zype.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'httparty'
2
- require 'zype/configuration'
3
- require 'zype/client'
4
- require 'zype/base_model'
2
+ require './lib/zype/configuration.rb'
3
+ require './lib/zype/client.rb'
4
+ require './lib/zype/base_model.rb'
5
5
  Dir[File.join(__dir__, '../lib/zype/models', '*.rb')].each { |file| require file }
6
6
 
7
7
  module Zype
@@ -1,9 +1,58 @@
1
1
  module Zype
2
2
  class BaseModel
3
- attr_reader :client
3
+ attr_reader :client, :path
4
4
 
5
5
  def initialize
6
- @client ||= Client.new
6
+ @client = Client.new
7
+ @path = generate_path
8
+ end
9
+
10
+ # Returns all objects for given class
11
+ #
12
+ # @param params [Hash] the metadata to filter objects by
13
+ # @return [Array<Hash>] the objects returned from the API
14
+ def all(params: {})
15
+ client.execute(method: :get, path: "/#{path}", params: params)
16
+ end
17
+
18
+ # Returns object matching ID
19
+ #
20
+ # @param id [String] the ID of the object
21
+ # @return [Hash] the object returned from the API
22
+ def find(id:)
23
+ client.execute(method: :get, path: "/#{path}/#{id}")
24
+ end
25
+
26
+ # Creates a new object via the API
27
+ #
28
+ # @param params [Hash] the properties of the object
29
+ # @return [Hash] the newly created object
30
+ def create(params:)
31
+ client.execute(method: :post, path: "/#{path}", params: params)
32
+ end
33
+
34
+ # Updates an existing object via the API
35
+ #
36
+ # @param id [String] the ID of the object
37
+ # @param params [Hash] the properties to be updated
38
+ # @return [Hash] the updated object
39
+ def update(id:, params:)
40
+ client.execute(method: :put, path: "/#{path}/#{id}", params: params)
41
+ end
42
+
43
+ # Deletes an existing object via the API
44
+ #
45
+ # @param id [String] the ID of the object
46
+ # @return [Hash] the deleted object
47
+ def delete(id:)
48
+ client.execute(method: :delete, path: "/#{path}/#{id}")
49
+ end
50
+
51
+ private
52
+
53
+ def generate_path
54
+ split = self.class.name.split(/(?=[A-Z])/)
55
+ split[1..split.length].join('_').downcase
7
56
  end
8
57
  end
9
58
  end
data/lib/zype/client.rb CHANGED
@@ -16,12 +16,13 @@ module Zype
16
16
  422 => UnprocessableEntity,
17
17
  500 => ServerError
18
18
  }.freeze
19
- METHODS = %w(live_events encoders)
20
19
 
20
+ # Automatically converts all files in lib/zype/models to be used as methods
21
21
  class << self
22
- METHODS.each do |method|
23
- define_method method do
24
- constant = method.split("_").map { |s| s.capitalize }.join("")
22
+ Dir["lib/zype/models/*"].each do |file|
23
+ model = file[/.*\/(.*?).rb$/, 1]
24
+ define_method model do
25
+ constant = model.split("_").map { |s| s.capitalize }.join("")
25
26
  Module.const_get("Zype::#{constant}").new
26
27
  end
27
28
  end
@@ -53,7 +54,7 @@ module Zype
53
54
 
54
55
  resp = self.send(method, path: path, params: params)
55
56
  if resp.success?
56
- resp['response']
57
+ resp['response'].nil? ? resp.parsed_response : resp['response']
57
58
  else
58
59
  error!(code: resp.code, message: resp['message'])
59
60
  end
@@ -1,20 +1,31 @@
1
1
  module Zype
2
2
  class Encoders < Zype::BaseModel
3
-
4
- def all
5
- client.execute(method: :get, path: '/live/encoders')
6
- end
7
-
3
+ # Returns encoder matching the encoder_name
4
+ #
5
+ # @param encoder_name [String] the name of the encoder
6
+ # @return [Hash] properties of the encoder
8
7
  def find(encoder_name:)
9
8
  client.execute(method: :get, path: "/live/encoders/#{encoder_name}")
10
9
  end
11
10
 
11
+ # Starts encoder matching the encoder_name
12
+ #
13
+ # @param encoder_name [String] the name of the encoder
14
+ # @return [Hash] properties of the encoder
12
15
  def start(encoder_name:)
13
16
  client.execute(method: :post, path: "/live/encoders/#{encoder_name}/start")
14
17
  end
15
18
 
19
+ # Stops encoder matching the encoder_name
20
+ #
21
+ # @param encoder_name [String] the name of the encoder
22
+ # @return [Hash] properties of the encoder
16
23
  def stop(encoder_name:)
17
24
  client.execute(method: :post, path: "/live/encoders/#{encoder_name}/stop")
18
25
  end
26
+
27
+ def path
28
+ @path = "live/encoders"
29
+ end
19
30
  end
20
31
  end
@@ -1,33 +1,25 @@
1
1
  module Zype
2
2
  class LiveEvents < Zype::BaseModel
3
- def all(params: {})
4
- client.execute(method: :get, path: '/live_events', params: params)
5
- end
6
-
7
- def find(id:)
8
- client.execute(method: :get, path: "/live_events/#{id}")
9
- end
10
-
11
- def create(params:)
12
- client.execute(method: :post, path: '/live_events', params: params)
13
- end
14
-
15
- def update(id:, params:)
16
- client.execute(method: :put, path: "/live_events/#{id}", params: params)
17
- end
18
-
19
- def delete(id:)
20
- client.execute(method: :delete, path: "/live_events/#{id}")
21
- end
22
-
3
+ # Starts broadcasting a live event
4
+ #
5
+ # @param id [String] the ID of the live event
6
+ # @return [Hash] the live event
23
7
  def start(id:)
24
8
  client.execute(method: :put, path: "/live_events/#{id}/start")
25
9
  end
26
10
 
11
+ # Stops broadcasting a live event
12
+ #
13
+ # @param id [String] the ID of the live event
14
+ # @return [Hash] the live event
27
15
  def stop(id:)
28
16
  client.execute(method: :put, path: "/live_events/#{id}/stop")
29
17
  end
30
18
 
19
+ # Archives the live event
20
+ #
21
+ # @param id [String] the ID of the live event
22
+ # @return [Hash] the live event
31
23
  def archive(id:)
32
24
  client.execute(method: :put, path: "/live_events/#{id}/archive")
33
25
  end
@@ -0,0 +1,36 @@
1
+ module Zype
2
+ class Playlists < Zype::BaseModel
3
+ # Returns videos for a playlist
4
+ #
5
+ # @param id [String] the ID of the playlist
6
+ # @return [Array<Hash>] an array of video objects
7
+ def videos(id:)
8
+ client.execute(method: :get, path: "/playlists/#{id}/videos")
9
+ end
10
+
11
+ # Adds videos to a playlist
12
+ #
13
+ # @param id [String] the ID of the playlist
14
+ # @param video_ids [Array<String>] the video IDs to add to the playlist
15
+ # @return [Array<Hash>] an array of video objects
16
+ def add_videos(id:, video_ids:)
17
+ client.execute(method: :put, path: "/playlists/#{id}/add_videos", params: { video_id: video_ids })
18
+ end
19
+
20
+ # Removes videos from a playlist
21
+ #
22
+ # @param id [String] the ID of the playlist
23
+ # @param video_ids [Array<String>] the video IDs to remove to the playlist
24
+ # @return [Array<Hash>] an array of video objects
25
+ def remove_videos(id:, video_ids:)
26
+ client.execute(method: :put, path: "/playlists/#{id}/remove_videos", params: { video_id: video_ids })
27
+ end
28
+
29
+ # Returns all playlists from the API
30
+ #
31
+ # @return [Array<Hash>] all playlists in relational order
32
+ def relationships
33
+ client.execute(method: :get, path: '/playlists/relationships')
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ module Zype
2
+ class Videos < Zype::BaseModel
3
+ # Adds zobjects to video
4
+ #
5
+ # @param id [String] the ID of the video
6
+ # @param zobject_ids [Array<String>] an array of zobject IDs
7
+ # @return [Hash] the video object
8
+ def add_zobjects(id:, zobject_ids:)
9
+ client.execute(method: :put, path: "/videos/#{id}/add_zobjects", params: { zobject_id: zobject_ids })
10
+ end
11
+
12
+ # Removes zobjects from video
13
+ #
14
+ # @param id [String] the ID of the video
15
+ # @param zobject_ids [Array<String>] an array of zobject IDs
16
+ # @return [Hash] the video object
17
+ def remove_zobjects(id:, zobject_ids:)
18
+ client.execute(method: :put, path: "/videos/#{id}/remove_zobjects", params: { zobject_id: zobject_ids })
19
+ end
20
+
21
+ # Returns the original source file for the video
22
+ #
23
+ # @param id [String] the ID of the video
24
+ # @return [Hash] object containing a "url" key for the original source file
25
+ def download(id:)
26
+ client.execute(method: :get, path: "/videos/#{id}/download")
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zype
@@ -64,6 +64,8 @@ files:
64
64
  - lib/zype/configuration.rb
65
65
  - lib/zype/models/encoders.rb
66
66
  - lib/zype/models/live_events.rb
67
+ - lib/zype/models/playlists.rb
68
+ - lib/zype/models/videos.rb
67
69
  homepage: http://rubygems.org/gems/zype
68
70
  licenses:
69
71
  - MIT