s3_media_server_api 0.1.0 → 0.1.0.2

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: 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: