postgresql_lo_streamer 1.0.0 → 1.1.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: 5028060daeb00b344cfd60c7d6d5a0677d28c290
4
- data.tar.gz: 2ffc5a2221863a7379d109e83122dc8ded49f005
3
+ metadata.gz: bbfc0cb9ae078d03087880f6b0ad6c6f32ca4f66
4
+ data.tar.gz: 55c72abfb7103f6df8a18bea5dd164fdf7be2e86
5
5
  SHA512:
6
- metadata.gz: 373c5432bbf17eaa52fd777e84751282870c1ebb3db77c2cf21d08ed98aeadf856a363001a2850600c1528010b8234749ee188c76f03467ad34a33097063b246
7
- data.tar.gz: 7185e3b987ea8f3cf8f2c0e0f4961793e6bce819791138e4ca9d4743f18ae5be9dc89e139c00e9095c1c097a5d9fd410ddad4b9153c7ac9064c1feddf325a9ca
6
+ metadata.gz: 876522e92fe8318eeae03d0630093e0052d5ed537127710fcd1909e39588e6014503f3aa46982ec6630bbfaaa806875593d9844fa82ba77c6aa605924617df69
7
+ data.tar.gz: 371246ea78633323dda68052baaa9e68748733c54645b6c0ac6419c77ee95b367c644edc014e84014bdaf981f0c8bfbcc2ab748a36bf6f73abe83375187e5e9e
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  This gem adds to your application a controller that can read PostgreSQL Large Objects and stream them to a HTTP client.
4
4
 
5
- For more information on PostgreSQL Large Objects you can take a look at the [official docs](http://www.postgresql.org/docs/9.2/static/largeobjects.html)
5
+ For more information on PostgreSQL Large Objects you can take a look at the [official docs](http://www.postgresql.org/docs/current/static/largeobjects.html)
6
6
 
7
7
  ## Installation
8
8
 
@@ -4,10 +4,17 @@ module PostgresqlLoStreamer
4
4
  class LoController < ActionController::Base
5
5
  def stream
6
6
  send_file_headers! configuration.options
7
+
8
+ object_identifier = params[:id].to_i
9
+ if !object_exists?(object_identifier)
10
+ self.status = 404
11
+ render :nothing => true and return
12
+ end
13
+
7
14
  self.status = 200
8
15
  self.response_body = Enumerator.new do |y|
9
16
  connection.transaction do
10
- lo = connection.lo_open(params[:id].to_i, ::PG::INV_READ)
17
+ lo = connection.lo_open(object_identifier, ::PG::INV_READ)
11
18
  while data = connection.lo_read(lo, 4096) do
12
19
  y << data
13
20
  end
@@ -21,7 +28,21 @@ module PostgresqlLoStreamer
21
28
  end
22
29
 
23
30
  private
31
+
32
+ def object_exists?(identifier)
33
+ begin
34
+ connection.lo_open(identifier, ::PG::INV_READ)
35
+ rescue PG::Error => e
36
+ if e.to_s.include? "does not exist"
37
+ return false
38
+ end
39
+
40
+ raise
41
+ end
24
42
 
43
+ return true
44
+ end
45
+
25
46
  def configuration
26
47
  PostgresqlLoStreamer.configuration
27
48
  end
@@ -1,3 +1,3 @@
1
1
  module PostgresqlLoStreamer
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgresql_lo_streamer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diogo Biazus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-21 00:00:00.000000000 Z
11
+ date: 2016-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency