samba_api 0.1.0 → 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: 198428da5c0b11b5a758fd11ca9b85145010d920
4
- data.tar.gz: 339fb6f03b358b5ddeca0aa527a4a63ed750acee
3
+ metadata.gz: 9b40d270ead9f3fbe1d181a1b7303ad798bebe98
4
+ data.tar.gz: 6778444eb04562a7e1dfb8a7a20612fc85bb8f1b
5
5
  SHA512:
6
- metadata.gz: dd06fb53a184b9aba02198ce810d016519e04f8fcf0215ec05cf7dba94782abc3be643af017e575e62b0c8451bb150bf0e5bfdf8674487846eadfcad2ffc4f9e
7
- data.tar.gz: 67ca913311dc9573520c8f1ff8ddd4944afbdaf1b211c385e43ded17e0402d7191f471fa1bf19f119890ac0f835676d71e808689def7788f213c7d2d65a88cf6
6
+ metadata.gz: d39838c87be6f0061d39d9a864d6a14f934eb3f61d1dd5a7d11a7d24490db55f7a7b678939fd128881c6147a33a41bf48d49344b0f9fbe89016c4c2912b2fc15
7
+ data.tar.gz: af9b43939bc325cb9393c0a18a66ebb5d2dced79e00efb19b72bfe2c27b9bce5b468ebee9dccf438798011dfee562eedf0ba69c22c753a55cfc2d9308ec71d94
data/.gitignore CHANGED
@@ -7,3 +7,7 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /.byebug_history
11
+ */.gem
12
+ # Ignore application configuration
13
+ /config/application.yml
data/.rake_tasks~ ADDED
@@ -0,0 +1,6 @@
1
+ build
2
+ clean
3
+ clobber
4
+ install
5
+ install:local
6
+ release[remote]
data/.simplecov ADDED
@@ -0,0 +1,3 @@
1
+ SimpleCov.start do
2
+ add_group 'lib', 'lib'
3
+ end
data/.spec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ cache: bundler
3
+
4
+ rvm:
5
+ - jruby
6
+ - ruby 2.4.0p0
7
+
8
+ script: 'bundle exec rake'
9
+
10
+ notifications:
11
+ email:
12
+ recipients:
13
+ - lndr.figueredo@gmail.com
14
+ on_failure: change
15
+ on_success: change
data/Rakefile CHANGED
@@ -1,7 +1,14 @@
1
- require "bundler/gem_tasks"
2
- task :default => :spec
3
-
1
+ require 'rake/testtask'
2
+ require 'bundler/gem_tasks'
3
+ task default: :spec
4
4
 
5
5
  task :console do
6
- exec "irb -r samba_api -I ./lib"
7
- end
6
+ exec 'irb -r samba_api -I ./lib'
7
+ end
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.libs << 'test'
11
+ end
12
+
13
+ desc 'Run tests'
14
+ task default: :test
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "samba_api"
3
+ require 'bundler/setup'
4
+ require 'samba_api'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "samba_api"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
@@ -0,0 +1,47 @@
1
+ require 'samba_api'
2
+ # lib/samba/categories.rb
3
+ module SambaApi
4
+ # category class
5
+ module Categories
6
+
7
+ def all_categories(project_id)
8
+ endpoint_url = base_url + 'categories' + access_token + '&pid=' + project_id.to_s
9
+ response = self.class.get(endpoint_url)
10
+ JSON.parse(response.body)
11
+ end
12
+
13
+ def category(category_id, project_id)
14
+ endpoint_url = category_base_url + category_id.to_s + access_token + '&pid=' + project_id.to_s
15
+ response = self.class.get(endpoint_url)
16
+ JSON.parse(response.body)
17
+ end
18
+
19
+ def create_category(project_id, options = {})
20
+ endpoint_url = category_base_url + access_token + '&pid=' + project_id.to_s
21
+ body = { 'name' => options[:name], 'parent' => options[:parent], 'genre' => options[:genre], 'connectedAccounts' => options[:connectedAccounts], 'children' => options[:children]}.to_json
22
+ response = self.class.post(endpoint_url, body: body, headers: header_request)
23
+ JSON.parse response.body, symbolize_names: true
24
+ end
25
+
26
+ #TODO incorrect formating body to send request
27
+ def update_category(category_id, project_id, options = {})
28
+ # endpoint_url = category_base_url + category_id.to_s + access_token + '&pid=' + project_id.to_s
29
+ # body = { "name" => options[:name], "parent" => options[:parent], "genre" => options[:genre], "connectedAccounts" => options[:connectedAccounts], "children" => options[:children]}.to_json
30
+ # response = self.class.put(endpoint_url, body: body.to_json, headers: header_request)
31
+ # JSON.parse response.body, symbolize_names: true
32
+ end
33
+
34
+ def delete_category(category_id, project_id)
35
+ endpoint_url = category_base_url + category_id.to_s + access_token + '&pid=' + project_id.to_s
36
+ response = self.class.delete(endpoint_url, header_request)
37
+ JSON.parse(response.body)
38
+ end
39
+
40
+ private
41
+
42
+ #TODO Refactor the module name in namespace
43
+ def namespace
44
+ SambaApi.demodulize_class(self.class.ancestors[1])
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,14 @@
1
+ require 'samba_api'
2
+
3
+ # samba_api/lib/samba_api/client.rb
4
+ module SambaApi
5
+ # initialize class client
6
+ class Client
7
+ def initialize(options={})
8
+ options.each do |key, value|
9
+ instance_variable_set("@#{key}", value)
10
+ yield(self) if block_given?
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,47 @@
1
+ require 'samba_api'
2
+ require 'samba_api/projects'
3
+ require 'samba_api/categories'
4
+ require 'samba_api/medias'
5
+
6
+ # samba_api/ĺib/samba_api/init.rb
7
+ module SambaApi
8
+ # class init access
9
+ class Init
10
+ include HTTParty
11
+ include SambaApi::Projects
12
+ include SambaApi::Categories
13
+ include SambaApi::Medias
14
+
15
+ def initialize(options={})
16
+ options.each do |key, value|
17
+ instance_variable_set("@#{key}", value)
18
+ yield(self) if block_given?
19
+ end
20
+ end
21
+ private
22
+ #TODO Refactor the module name in namespace
23
+ def namespace
24
+ SambaApi.demodulize_class(self.class.ancestors[1])
25
+ end
26
+
27
+ def base_url
28
+ SambaApi::BASE_URL
29
+ end
30
+
31
+ def category_base_url
32
+ SambaApi::CATEGORY_BASE_URL
33
+ end
34
+
35
+ def media_base_url
36
+ SambaApi::MEDIA_BASE_URL
37
+ end
38
+
39
+ def access_token
40
+ "?access_token=#{@access_token}"
41
+ end
42
+
43
+ def header_request
44
+ {"Content-Type" => "application/json"}
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,60 @@
1
+ require 'samba_api'
2
+ require 'open3'
3
+
4
+ # lib/samba/medias.rb
5
+ module SambaApi
6
+ # medias class
7
+ module Medias
8
+
9
+ def all_medias(project_id)
10
+ endpoint_url = base_url + 'medias' + access_token + '&pid=' + project_id.to_s
11
+ response = self.class.get(endpoint_url)
12
+ JSON.parse(response.body)
13
+ end
14
+
15
+ def get_media(media_id, project_id)
16
+ endpoint_url = media_base_url + media_id.to_s + access_token + '&pid=' + project_id.to_s
17
+ response = self.class.get(endpoint_url)
18
+ JSON.parse(response.body)
19
+ end
20
+
21
+ def upload_media(media_path)
22
+ upload_url = prepare_upload['uploadUrl']
23
+ stdin, stdout, stderr, wait_thr = *Open3.popen3(
24
+ 'curl', '--silent', '--show-error',
25
+ '-X', 'POST', upload_url,
26
+ '--header', 'Content-Type: multipart/form-data',
27
+ '-F', "file=@#{media_path}"
28
+ )
29
+ wait_thr.join
30
+ return false unless stderr.eof?
31
+ return stdout.read
32
+ end
33
+
34
+ def delete_media(media_id, project_id)
35
+ endpoint_url = media_base_url + media_id.to_s + access_token + '&pid=' + project_id.to_s
36
+ response = self.class.delete(endpoint_url, header_request)
37
+ JSON.parse(response.body)
38
+ end
39
+
40
+ def active_media(media_id, body)
41
+ #TODO better way to get project
42
+ project_id = all_projects.first['id']
43
+ endpoint_url = media_base_url + media_id.to_s + access_token + '&pid=' + project_id.to_s
44
+ response = self.class.put(endpoint_url, body: body, headers: header_request)
45
+ response = JSON.parse(response.body)
46
+ end
47
+ #/home/lean/Downloads/a26328a25bab97a8e802a3c3cde23d81.mp4
48
+ private
49
+ #'{ "publishDate": ' + Time.now.to_i.to_s + ', "categoryId": "6" }'
50
+ # Before to send media, its necessary to create a url to pass the file, this method do this
51
+ def prepare_upload
52
+ body = '{ "qualifier": "VIDEO" }'
53
+ #TODO better way to get project
54
+ project_id = all_projects.first['id']
55
+ endpoint_url = media_base_url + access_token + '&pid=' + project_id.to_s
56
+ response = self.class.post(endpoint_url, body: body, headers: header_request)
57
+ response = JSON.parse(response.body)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,32 @@
1
+ require 'samba_api'
2
+ require 'samba_api/init'
3
+ # lib/samba/projects.rb
4
+ module SambaApi
5
+ # projects class
6
+ module Projects
7
+ def all_projects
8
+ endpoint_url = base_url + 'projects' + access_token
9
+ response = self.class.get(endpoint_url)
10
+ JSON.parse(response.body)
11
+ end
12
+
13
+ def project(project_id)
14
+ endpoint_url = base_url + 'projects/' + project_id.to_s + access_token
15
+ response = self.class.get(endpoint_url)
16
+ JSON.parse(response.body)
17
+ end
18
+
19
+ def create_project(name, desc)
20
+ values = { "name" => name.to_s, "description" => desc.to_s }.to_json
21
+ endpoint_url = base_url + 'projects' + access_token
22
+ response = HTTParty.post(endpoint_url, body: values, headers: header_request)
23
+ JSON.parse response.body, symbolize_names: true
24
+ end
25
+
26
+ def delete_project(project_id)
27
+ endpoint_url = base_url + 'projects' + '/' + project_id.to_s + access_token
28
+ response = self.class.delete(endpoint_url, header_request)
29
+ response.code
30
+ end
31
+ end
32
+ end
@@ -1,18 +1,14 @@
1
1
  require 'open3'
2
+
3
+ # samba_class
2
4
  class Samba
3
5
  include HTTParty
4
- BASE_API_URL = 'https://api.sambavideos.sambatech.com/v1'
6
+ BASE_API_URL = 'https://api.sambavideos.sambatech.com/v1'.freeze
5
7
 
6
8
  def initialize(attributes)
7
9
  @options = { 'access_token' => attributes[:access_token], 'Content-Type' => 'application/json' }
8
10
  end
9
11
 
10
- def get_projects
11
- endpoint_projects = Samba::BASE_API_URL+"/projects?access_token=#{@options["access_token"]}"
12
- response = self.class.get(endpoint_projects)
13
- response = JSON.parse(response.body)
14
- end
15
-
16
12
  def get_project(project_id)
17
13
  endpoint_project = Samba::BASE_API_URL+"/projects/#{project_id}?access_token=#{@options["access_token"]}"
18
14
  response = self.class.get(endpoint_project)
@@ -48,4 +44,17 @@ class Samba
48
44
  response = JSON.parse(response.body)
49
45
  end
50
46
 
47
+ def get_all_categries
48
+ project_id = get_projects.first["id"]
49
+ url = Samba::BASE_API_URL+"/categories?access_token=#{@options["access_token"]}&pid=#{project_id}"
50
+ response = self.class.get(url, headers: @options )
51
+ end
52
+
53
+ def get_category_chiligum
54
+ project_id = get_projects.first["id"]
55
+ url = Samba::BASE_API_URL+"/categories/33?&access_token=#{@options["access_token"]}&pid=#{project_id}"
56
+ response = self.class.get(url, headers: @options)
57
+ response = JSON.parse(response.body)
58
+ end
59
+
51
60
  end
@@ -1,3 +1,7 @@
1
1
  module SambaApi
2
- VERSION = "0.1.0"
2
+
3
+ VERSION = '0.2.0'.freeze
4
+ BASE_URL = 'http://api.sambavideos.sambatech.com/v1/'.freeze
5
+ CATEGORY_BASE_URL = 'http://api.sambavideos.sambatech.com/v1/categories/'.freeze
6
+ MEDIA_BASE_URL = 'http://api.sambavideos.sambatech.com/v1/medias/'.freeze
3
7
  end
data/lib/samba_api.rb CHANGED
@@ -1,9 +1,14 @@
1
1
  require 'httparty'
2
2
  require 'json'
3
3
  require 'byebug'
4
- require "samba_api/version"
5
- require "samba_api/samba"
4
+ require 'samba_api/version'
5
+ require 'samba_api/init'
6
6
 
7
+ # lib/samba_api.rb
7
8
  module SambaApi
8
-
9
+ class << self
10
+ def demodulize_class class_name
11
+ class_name.to_s.split('::').last.downcase
12
+ end
13
+ end
9
14
  end
data/samba_api.gemspec CHANGED
@@ -32,8 +32,11 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "bundler", "~> 1.13"
33
33
  spec.add_development_dependency "rake", "~> 10.0"
34
34
  spec.add_development_dependency "minitest"
35
+ spec.add_development_dependency "rubocop"
36
+ spec.add_development_dependency "byebug"
37
+ spec.add_development_dependency "simplecov"
38
+ spec.add_development_dependency "figaro"
35
39
  spec.add_dependency "httparty"
36
40
  spec.add_dependency "json"
37
- spec.add_dependency "byebug"
41
+ spec.add_dependency "rest-client"
38
42
  end
39
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samba_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2017-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,62 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: figaro
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
55
111
  - !ruby/object:Gem::Dependency
56
112
  name: httparty
57
113
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +137,7 @@ dependencies:
81
137
  - !ruby/object:Gem::Version
82
138
  version: '0'
83
139
  - !ruby/object:Gem::Dependency
84
- name: byebug
140
+ name: rest-client
85
141
  requirement: !ruby/object:Gem::Requirement
86
142
  requirements:
87
143
  - - ">="
@@ -101,14 +157,22 @@ executables: []
101
157
  extensions: []
102
158
  extra_rdoc_files: []
103
159
  files:
104
- - ".byebug_history"
105
160
  - ".gitignore"
161
+ - ".rake_tasks~"
162
+ - ".simplecov"
163
+ - ".spec"
164
+ - ".travis.yml"
106
165
  - Gemfile
107
166
  - README.md
108
167
  - Rakefile
109
168
  - bin/console
110
169
  - bin/setup
111
170
  - lib/samba_api.rb
171
+ - lib/samba_api/categories.rb
172
+ - lib/samba_api/client.rb
173
+ - lib/samba_api/init.rb
174
+ - lib/samba_api/medias.rb
175
+ - lib/samba_api/projects.rb
112
176
  - lib/samba_api/samba.rb
113
177
  - lib/samba_api/version.rb
114
178
  - samba_api.gemspec
@@ -132,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
196
  version: '0'
133
197
  requirements: []
134
198
  rubyforge_project:
135
- rubygems_version: 2.4.8
199
+ rubygems_version: 2.6.12
136
200
  signing_key:
137
201
  specification_version: 4
138
202
  summary: Samba Videos API
data/.byebug_history DELETED
@@ -1,93 +0,0 @@
1
- exit
2
- response["uploadUrl"]
3
- response
4
- exit
5
- response = JSON.parse(response.body)
6
- response = JSON.parse(response)
7
- response
8
- exit
9
- xi
10
- exit
11
- response.size
12
- response = JSON.parse(response.body)
13
- response.body
14
- response
15
- exit
16
- response
17
- response[:id]
18
- response.map(&:id)
19
- response.first.map()
20
- response.first.map(&:id)
21
- response.first
22
- response.each { |r| r.map(&:id) }
23
- response.first
24
- response.map().map()
25
- response.map().map(&:id)
26
- response.map(&:id)
27
- response.map(&:[id])
28
- response.map(&:id)
29
- response.size
30
- response
31
- response.map(&:id)
32
- response.first["id"]
33
- response.first
34
- response
35
- response = JSON.parse(response.body)
36
- JSON.parse(response.body)
37
- response.body
38
- response.body.size
39
- response.body
40
- response.code
41
- response.status
42
- response
43
- exit
44
- response
45
- exit
46
- response.server_error?
47
- response.code
48
- response.parsed_response
49
- response.request
50
- response.non_authoritative_information?
51
- response.methods
52
- params
53
- response
54
- exit
55
- HTTParty.get(endpoint_projects, access_token: 'af4bdfdf-781a-4846-b75e-8bf024586f9b')
56
- HTTParty.get(endpoint_projects, 'af4bdfdf-781a-4846-b75e-8bf024586f9b')
57
- exit
58
- response
59
- exit
60
- response
61
- continue
62
- endpoint_projects
63
- response
64
- exit
65
- response
66
- continue
67
- @options
68
- response
69
- continue
70
- next
71
- @options
72
- exit
73
- response
74
- exit
75
- response
76
- exit
77
- response
78
- exit
79
- exigt
80
- @options["access_token"]
81
- @options[:access_token]
82
- @options
83
- exit
84
- self.class
85
- endpoint_projects
86
- exit
87
- response
88
- exit
89
- endpoint_projects
90
- response
91
- exit
92
- response.headers
93
- response.body