s3_media_server_api 0.1.0 → 0.1.0.2

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: 49178c41050a932cd11ba20ab661e0e3353e64d4
4
- data.tar.gz: bf5572843932b79e5424b649b1fa3db92432be50
3
+ metadata.gz: 38ba4e51274bac69d7af53286c338b5a216f9240
4
+ data.tar.gz: 13dcaede9a9a023111ba792322ab8cab7d2b882c
5
5
  SHA512:
6
- metadata.gz: 415b6b8a82653c15cd62d9bbca6b0f4cabd12cd44951d9c5bc954fa55ab29dd302bf1fe7845bdb084d6ce2b3b4987d7f402ba9d1782f657307436cd26603d50e
7
- data.tar.gz: 0e2df36585d3c516f74a322de409580c2c07da68a2ea1386b8b02760b4543786504fee4ffc2e524806f00e8ca70ec03ad47ef50596f224383bc0fa3f111ff7d6
6
+ metadata.gz: f77b81060a59a2a27aae2ae8c76a1b80549e558ab830ce1742599ab587a66b9a63a4360de7ae23cd7bac31215b48f25bac65d08d14f9dd6764ab2d3bff99550b
7
+ data.tar.gz: fcbd78d7989a66cbf90b35ac90e20b2b3a565132135066791a1d627697d4189166b10e6ded29a22ed4c6f575eca12b16d417ae67e0c3b3f223f63b6e9a2dd606
@@ -0,0 +1,9 @@
1
+ module S3MediaServerApi
2
+ class Cache
3
+ class << self
4
+ def fetch(key, params = {}, &block)
5
+ yield
6
+ end
7
+ end
8
+ end
9
+ end
@@ -2,25 +2,39 @@ require 'yaml'
2
2
 
3
3
  module S3MediaServerApi
4
4
  class ConfigError < S3MediaServerApiError; end
5
- #
6
- # By default 4 threads is used for file uploading. To change
7
- # this value you can create config/s3_media_server_api.yml and specify
8
- # upload_thread_count
9
- #
10
- # Example
11
- # prosuction:
12
- # upload_thread_count: 10
13
- #
14
5
  class Config
15
- attr_reader :upload_thread_count
6
+ class << self
7
+ def add_config(name, default_value = nil)
16
8
 
17
- def initialize
18
- @upload_thread_count = nil
19
- environment = ENV['RUBY_ENV'] || ENV['RAILS_ENV']
20
- if File.exists?('config/s3_media_server_api.yml')
21
- @attributes = YAML.load_file('config/s3_media_server_api.yml')[environment][:upload_thread_count]
9
+ define_singleton_method "#{name}=".to_sym do |value|
10
+ instance_variable_set("@#{name}".to_sym,value)
11
+ end
12
+
13
+ define_singleton_method "#{name}".to_sym do
14
+ value = instance_variable_get(:"@#{name}")
15
+ raise ConfigError.new("Key: '#{name}' cannot be nil.") if @required_keys.include?(name.to_sym) && value.nil?
16
+ value
17
+ end
18
+
19
+ self.send("#{name}=".to_sym, default_value)
20
+ end
21
+
22
+ def required(*args)
23
+ @required_keys = args
24
+ end
25
+
26
+ def configure
27
+ yield self
28
+ @required_keys.each do |key|
29
+ raise ConfigError.new("Key: #{key} cannot be nil.") if instance_variable_get(:"@#{key}").nil?
30
+ end
22
31
  end
23
- @upload_thread_count ||= 4
24
32
  end
33
+
34
+ add_config :mocked
35
+ add_config :cache_class, S3MediaServerApi::Cache
36
+ add_config :upload_thread_count, 4
37
+
38
+ required :mocked, :cache_class, :upload_thread_count
25
39
  end
26
40
  end
@@ -14,21 +14,25 @@ module S3MediaServerApi
14
14
  end
15
15
 
16
16
  def uuid
17
- @params[:uuid]
17
+ @params[:uuid] if exist?
18
18
  end
19
19
 
20
20
  def name
21
- @params[:name]
21
+ @params[:name] if exist?
22
22
  end
23
23
 
24
24
  def size
25
- @params[:size]
25
+ @params[:size] if exist?
26
26
  end
27
27
 
28
- def as_hash
28
+ def as_hash if exist?
29
29
  @params
30
30
  end
31
31
 
32
+ def exist?
33
+ !@params.nil?
34
+ end
35
+
32
36
  class << self
33
37
  #
34
38
  # creates media file
@@ -58,7 +62,10 @@ module S3MediaServerApi
58
62
  # returns: response with file information
59
63
  #
60
64
  def resolve(uuid)
61
- AsynkRequest.sync_request(base_path, :resolve, uuid: uuid)
65
+ cache_key = "#{media_type}/#{uuid}"
66
+ Config.cache_class.fetch(cache_key) do
67
+ AsynkRequest.sync_request(base_path, :resolve, uuid: uuid)
68
+ end
62
69
  end
63
70
  #
64
71
  # this method should be used to send custom synchronous request to
@@ -4,7 +4,7 @@ module S3MediaServerApi
4
4
  DOCUMENT = 'document'
5
5
 
6
6
  def url
7
- @params[:url]
7
+ @params[:url if exist?
8
8
  end
9
9
 
10
10
  class << self
@@ -27,11 +27,11 @@ module S3MediaServerApi
27
27
  end
28
28
 
29
29
  def source
30
- ImageObject.new(@params[:source])
30
+ ImageObject.new(@params[:source]) if exist?
31
31
  end
32
32
 
33
33
  def thumb
34
- ImageObject.new(@params[:thumb])
34
+ ImageObject.new(@params[:thumb]) if exist?
35
35
  end
36
36
 
37
37
  class << self
@@ -26,31 +26,31 @@ module S3MediaServerApi
26
26
  end
27
27
 
28
28
  def preview
29
- @params[:preview]
29
+ @params[:preview] if exist?
30
30
  end
31
31
 
32
32
  def duration
33
- @params[:duration]
33
+ @params[:duration] if exist?
34
34
  end
35
35
 
36
36
  def transcoded
37
- @params[:transcoded]
37
+ @params[:transcoded] if exist?
38
38
  end
39
39
 
40
40
  def embed_url
41
- @params[:embed_url]
41
+ @params[:embed_url] if exist?
42
42
  end
43
43
 
44
44
  def provider
45
- @params[:provider]
45
+ @params[:provider] if exist?
46
46
  end
47
47
 
48
48
  def screenshots
49
- @params[:screenshots].map { |screenshot| Image::ImageObject.new(screenshot) }
49
+ @params[:screenshots].map { |screenshot| Image::ImageObject.new(screenshot) } if exist?
50
50
  end
51
51
 
52
52
  def versions
53
- @params[:versions].map { |version| Version.new(version) }
53
+ @params[:versions].map { |version| Version.new(version) } if exist?
54
54
  end
55
55
 
56
56
  class << self
@@ -29,7 +29,7 @@ module S3MediaServerApi
29
29
  aws_file_uuid = file.uuid
30
30
  uploads_count = file.uploads_count
31
31
  parts = compute_parts(file_path, default_part_size)
32
- Parallel.each(parts, in_threads: S3MediaServerApi.upload_thread_count) do |part|
32
+ Parallel.each(parts, in_threads: S3MediaServerApi::Config.upload_thread_count) do |part|
33
33
  signed_upload_url = AwsFile.get_signed_upload_url(aws_file_uuid, part[:part_number])
34
34
 
35
35
  raise PartUploadError.new("Part #{part[:part_number]} wasn't uploaded") unless upload_part(signed_upload_url, part[:body].read)
@@ -1,3 +1,3 @@
1
1
  module S3MediaServerApi
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.0.2"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require "s3_media_server_api/version"
2
2
  require "s3_media_server_api/error"
3
+ require "s3_media_server_api/cache"
3
4
  require "s3_media_server_api/config"
4
5
  require "s3_media_server_api/uploader"
5
6
  require "s3_media_server_api/file_part"
@@ -8,17 +9,4 @@ require "s3_media_server_api/media"
8
9
  require "s3_media_server_api/asynk_request"
9
10
 
10
11
  module S3MediaServerApi
11
-
12
- class << self
13
-
14
- def upload_thread_count
15
- config.upload_thread_count
16
- end
17
-
18
- private
19
-
20
- def config
21
- @@config ||= Config.new
22
- end
23
- end
24
12
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3_media_server_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ayrat Badykov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-11 00:00:00.000000000 Z
11
+ date: 2016-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,6 +122,7 @@ files:
122
122
  - lib/s3_media_server_api.rb
123
123
  - lib/s3_media_server_api/asynk_request.rb
124
124
  - lib/s3_media_server_api/aws_file.rb
125
+ - lib/s3_media_server_api/cache.rb
125
126
  - lib/s3_media_server_api/config.rb
126
127
  - lib/s3_media_server_api/error.rb
127
128
  - lib/s3_media_server_api/file_part.rb
@@ -133,6 +134,7 @@ files:
133
134
  - lib/s3_media_server_api/media/video.rb
134
135
  - lib/s3_media_server_api/uploader.rb
135
136
  - lib/s3_media_server_api/version.rb
137
+ - s3_media_server_api-0.1.0.gem
136
138
  - s3_media_server_api.gemspec
137
139
  homepage:
138
140
  licenses: