botr 0.1.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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.document +3 -0
  3. data/.gitignore +31 -0
  4. data/.rspec +1 -0
  5. data/.yardopts +1 -0
  6. data/ChangeLog.md +4 -0
  7. data/LICENSE.txt +20 -0
  8. data/README.md +278 -0
  9. data/Rakefile +43 -0
  10. data/botr.gemspec +24 -0
  11. data/botr.watchr +3 -0
  12. data/certs/cacert.pem +3554 -0
  13. data/lib/botr.rb +34 -0
  14. data/lib/botr/api/api.rb +83 -0
  15. data/lib/botr/api/authentication.rb +24 -0
  16. data/lib/botr/channels/channel.rb +137 -0
  17. data/lib/botr/channels/channel_thumbnail.rb +88 -0
  18. data/lib/botr/channels/channel_video.rb +130 -0
  19. data/lib/botr/channels/channel_view.rb +88 -0
  20. data/lib/botr/common/logger.rb +31 -0
  21. data/lib/botr/configuration.rb +18 -0
  22. data/lib/botr/http/http.rb +88 -0
  23. data/lib/botr/http/http_backend.rb +66 -0
  24. data/lib/botr/http/http_response.rb +48 -0
  25. data/lib/botr/http/multipart.rb +84 -0
  26. data/lib/botr/http/uri_ext.rb +28 -0
  27. data/lib/botr/object.rb +20 -0
  28. data/lib/botr/players/player.rb +149 -0
  29. data/lib/botr/players/player_view.rb +88 -0
  30. data/lib/botr/version.rb +3 -0
  31. data/lib/botr/videos/video.rb +187 -0
  32. data/lib/botr/videos/video_caption.rb +154 -0
  33. data/lib/botr/videos/video_conversion.rb +114 -0
  34. data/lib/botr/videos/video_engagement.rb +51 -0
  35. data/lib/botr/videos/video_tag.rb +52 -0
  36. data/lib/botr/videos/video_thumbnail.rb +87 -0
  37. data/lib/botr/videos/video_view.rb +89 -0
  38. data/spec/authentication_spec.rb +31 -0
  39. data/spec/botr_spec.rb +8 -0
  40. data/spec/http_backend_spec.rb +93 -0
  41. data/spec/http_response_spec.rb +48 -0
  42. data/spec/multipart_spec.rb +35 -0
  43. data/spec/spec_helper.rb +5 -0
  44. data/spec/test.txt +1 -0
  45. metadata +150 -0
@@ -0,0 +1,154 @@
1
+ module BOTR
2
+
3
+ class VideoCaption < BOTR::Object
4
+
5
+ class << self
6
+
7
+ attr_reader :last_status
8
+
9
+ def show(key)
10
+ json = get_request({:method => 'show',
11
+ :caption_key => key})
12
+ res = JSON.parse(json.body)
13
+
14
+ if json.status == 200
15
+ params = process_show_response(res)
16
+ else
17
+ raise "HTTP Error #{json.status}: #{json.body}"
18
+ end
19
+
20
+ return new(params)
21
+ end
22
+
23
+ alias :find :show
24
+
25
+ def list(key, **options)
26
+ json = get_request(options.merge(:method => 'list',
27
+ :video_key => key))
28
+ res = JSON.parse(json.body)
29
+
30
+ if json.status == 200
31
+ results = process_list_response(res)
32
+ else
33
+ raise "HTTP Error #{json.status}: #{json.body}"
34
+ end
35
+
36
+ return results
37
+ end
38
+
39
+ private
40
+
41
+ def process_show_response(body)
42
+ @last_status = body["status"]
43
+
44
+ return body["caption"]
45
+ end
46
+
47
+ def process_list_response(body)
48
+ res = []
49
+
50
+ body["captions"].each do |caption|
51
+ res << new(caption)
52
+ end
53
+
54
+ return res
55
+ end
56
+
57
+ end
58
+
59
+ attr_reader :last_status, :key, :label, :format, :link, :position,
60
+ :md5, :status, :error
61
+
62
+ def initialize(params = {})
63
+ params.each do |key, val|
64
+ param = "@#{key.to_s}"
65
+ next unless methods.include? key.to_sym
66
+ instance_variable_set(param, val)
67
+ end
68
+ end
69
+
70
+ def create(video_key, **options)
71
+ json = get_request(options.merge(:method => 'create',
72
+ :video_key => video_key))
73
+ res = JSON.parse(json.body)
74
+
75
+ if json.status == 200
76
+ process_create_response(res)
77
+ else
78
+ raise "HTTP Error #{json.status}: #{json.body}"
79
+ end
80
+
81
+ return self
82
+ end
83
+
84
+ def upload(data_path, **options)
85
+ json = post_request(options, data_path)
86
+ res = JSON.parse(json.body)
87
+
88
+ if json.status == 200
89
+ process_upload_response(res)
90
+ else
91
+ raise "HTTP Error #{json.status}: #{json.body}"
92
+ end
93
+
94
+ return self
95
+ end
96
+
97
+ def update(**options)
98
+ json = put_request(options.merge(:caption_key => @key))
99
+ res = JSON.parse(json.body)
100
+
101
+ if json.status == 200
102
+ process_update_response(res, options)
103
+ else
104
+ raise "HTTP Error #{json.status}: #{json.body}"
105
+ end
106
+
107
+ return self
108
+ end
109
+
110
+ def delete
111
+ json = delete_request({:caption_key => @key})
112
+ res = JSON.parse(json.body)
113
+
114
+ if json.status == 200
115
+ process_delete_response(res)
116
+ else
117
+ raise "HTTP Error #{json.status}: #{json.body}"
118
+ end
119
+
120
+ return self
121
+ end
122
+
123
+ private
124
+
125
+ def process_create_response(body)
126
+ @last_status = body["status"]
127
+ @key = body["media"]["key"]
128
+ @link = body["link"]
129
+ end
130
+
131
+ def process_upload_response(body)
132
+ @last_status = body["status"]
133
+ @file = body["file"]
134
+ end
135
+
136
+ def process_update_response(body, updated_params)
137
+ @last_status = body["status"]
138
+ updated_params.each do |key, val|
139
+ param = "@#{key.to_s}"
140
+ next unless methods.include? key
141
+ instance_variable_set(param, val)
142
+ end
143
+ end
144
+
145
+ def process_delete_response(body)
146
+ @last_status = body["status"]
147
+ instance_variables.each do |param|
148
+ instance_variable_set(param, nil)
149
+ end
150
+ end
151
+
152
+ end
153
+
154
+ end
@@ -0,0 +1,114 @@
1
+ module BOTR
2
+
3
+ class VideoConversion < BOTR::Object
4
+
5
+ class << self
6
+
7
+ attr_reader :last_status
8
+
9
+ def show(key)
10
+ json = get_request({:method => 'show',
11
+ :conversion_key => key})
12
+ res = JSON.parse(json.body)
13
+
14
+ if json.status == 200
15
+ params = process_show_response(res)
16
+ else
17
+ raise "HTTP Error #{json.status}: #{json.body}"
18
+ end
19
+
20
+ return new(params)
21
+ end
22
+
23
+ alias :find :show
24
+
25
+ def list(key)
26
+ json = get_request({:method => 'list',
27
+ :video_key => key})
28
+ res = JSON.parse(json.body)
29
+
30
+ if json.status == 200
31
+ results = process_list_response(res)
32
+ else
33
+ raise "HTTP Error #{json.status}: #{json.body}"
34
+ end
35
+
36
+ return results
37
+ end
38
+
39
+ private
40
+
41
+ def process_show_response(body)
42
+ @last_status = body["status"]
43
+
44
+ return body["conversion"]
45
+ end
46
+
47
+ def process_list_response(body)
48
+ res = []
49
+
50
+ body["conversions"].each do |conversion|
51
+ res << new(conversion)
52
+ end
53
+
54
+ return res
55
+ end
56
+
57
+ end
58
+
59
+ attr_reader :last_status, :key, :mediatype, :status, :duration,
60
+ :filesize, :width, :height, :template, :error, :link
61
+
62
+ def initialize(params = {})
63
+ params.each do |key, val|
64
+ param = "@#{key.to_s}"
65
+ next unless methods.include? key.to_sym
66
+ instance_variable_set(param, val)
67
+ end
68
+ end
69
+
70
+ def create(video_key, template_key)
71
+ json = get_request({:method => 'create',
72
+ :video_key => video_key,
73
+ :template_key => template_key})
74
+ res = JSON.parse(json.body)
75
+
76
+ if json.status == 200
77
+ process_create_response(res)
78
+ else
79
+ raise "HTTP Error #{json.status}: #{json.body}"
80
+ end
81
+
82
+ return self
83
+ end
84
+
85
+ def delete
86
+ json = delete_request({:conversion_key => @key})
87
+ res = JSON.parse(json.body)
88
+
89
+ if json.status == 200
90
+ process_delete_response(res)
91
+ else
92
+ raise "HTTP Error #{json.status}: #{json.body}"
93
+ end
94
+
95
+ return self
96
+ end
97
+
98
+ private
99
+
100
+ def process_create_response(body)
101
+ @last_status = body["status"]
102
+ @key = body["conversion"]["key"]
103
+ end
104
+
105
+ def process_delete_response(body)
106
+ @last_status = body["status"]
107
+ instance_variables.each do |param|
108
+ instance_variable_set(param, nil)
109
+ end
110
+ end
111
+
112
+ end
113
+
114
+ end
@@ -0,0 +1,51 @@
1
+ module BOTR
2
+
3
+ class VideoEngagement < BOTR::Object
4
+
5
+ class << self
6
+
7
+ attr_reader :last_status
8
+
9
+ def call_class
10
+ "videos/engagement"
11
+ end
12
+
13
+ def show(key)
14
+ json = get_request({:method => 'show',
15
+ :video_key => key})
16
+ res = JSON.parse(json.body)
17
+
18
+ if json.status == 200
19
+ params = process_show_response(res)
20
+ else
21
+ raise "HTTP Error #{json.status}: #{json.body}"
22
+ end
23
+
24
+ return new(params)
25
+ end
26
+
27
+ alias :find :show
28
+
29
+ private
30
+
31
+ def process_show_response(body)
32
+ @last_status = body["status"]
33
+
34
+ return body["video"]
35
+ end
36
+
37
+ end
38
+
39
+ attr_reader :last_status, :key, :engagements
40
+
41
+ def initialize(params = {})
42
+ params.each do |key, val|
43
+ param = "@#{key.to_s}"
44
+ next unless methods.include? key.to_sym
45
+ instance_variable_set(param, val)
46
+ end
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,52 @@
1
+ module BOTR
2
+
3
+ class VideoTag < BOTR::Object
4
+
5
+ class << self
6
+
7
+ attr_reader :last_status
8
+
9
+ def list(**options)
10
+ json = get_request(options.merge(:method => 'list'))
11
+ res = JSON.parse(json.body)
12
+
13
+ if json.status == 200
14
+ results = process_list_response(res)
15
+ else
16
+ raise "HTTP Error #{json.status}: #{json.body}"
17
+ end
18
+
19
+ return results
20
+ end
21
+
22
+ def all
23
+ list({})
24
+ end
25
+
26
+ private
27
+
28
+ def process_list_response(body)
29
+ res = []
30
+
31
+ body["tags"].each do |tag|
32
+ res << new(tag)
33
+ end
34
+
35
+ return res
36
+ end
37
+
38
+ end
39
+
40
+ attr_reader :name ,:videos
41
+
42
+ def initialize(params = {})
43
+ params.each do |key, val|
44
+ param = "@#{key.to_s}"
45
+ next unless methods.include? key.to_sym
46
+ instance_variable_set(param, val)
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,87 @@
1
+ module BOTR
2
+
3
+ class VideoThumbnail < BOTR::Object
4
+
5
+ class << self
6
+
7
+ attr_reader :last_status
8
+
9
+ def show(key)
10
+ json = get_request({:method => 'show',
11
+ :video_key => key})
12
+ res = JSON.parse(json.body)
13
+
14
+ if json.status == 200
15
+ params = process_show_response(res)
16
+ else
17
+ raise "HTTP Error #{json.status}: #{json.body}"
18
+ end
19
+
20
+ return new(params)
21
+ end
22
+
23
+ alias :find :show
24
+
25
+ private
26
+
27
+ def process_show_response(body)
28
+ @last_status = body["status"]
29
+
30
+ return body["thumbnail"]
31
+ end
32
+
33
+ end
34
+
35
+ attr_reader :last_status, :key, :status, :strip_status, :link,
36
+ :error, :strip_error
37
+
38
+ def initialize(params = {})
39
+ params.each do |key, val|
40
+ param = "@#{key.to_s}"
41
+ next unless methods.include? key.to_sym
42
+ instance_variable_set(param, val)
43
+ end
44
+ end
45
+
46
+ def update(**options)
47
+ json = put_request(options.merge(:video_key => @key))
48
+ res = JSON.parse(json.body)
49
+
50
+ if json.status == 200
51
+ process_update_response(res)
52
+ else
53
+ raise "HTTP Error #{json.status}: #{json.body}"
54
+ end
55
+
56
+ return self
57
+ end
58
+
59
+ def upload(data_path, **options)
60
+ json = post_request(options, data_path)
61
+ res = JSON.parse(json.body)
62
+
63
+ if json.status == 200
64
+ process_upload_response(res)
65
+ else
66
+ raise "HTTP Error #{json.status}: #{json.body}"
67
+ end
68
+
69
+ return self
70
+ end
71
+
72
+ private
73
+
74
+ def process_update_response(body)
75
+ @last_status = body["status"]
76
+ @key = body["media"]["key"]
77
+ @link = body["link"]
78
+ end
79
+
80
+ def process_upload_response(body)
81
+ @last_status = body["status"]
82
+ @file = body["file"]
83
+ end
84
+
85
+ end
86
+
87
+ end