samba_api 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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