web-connect-rails 0.4.3 → 0.4.4

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: 0336691b81e9eb211341e677afbd17faff0b9b8f
4
- data.tar.gz: bfc9dfb7745836f694b34d3eae2e6a8e342a04c0
3
+ metadata.gz: 372216a47ea92a6d139284c680f5b2c6edd7f16c
4
+ data.tar.gz: 8e56468477e87b139106e79fa47fd78c8d3675c9
5
5
  SHA512:
6
- metadata.gz: c37c908d47486e227e661926c287496cd0feba5966bb84bee78f2b4dbbffcca9cdfbe0c59319a7ddf2e2b76298517bab9c980e3ebb72b636661a444762296b64
7
- data.tar.gz: eea2ba7fae6f6bc5dd8fbe3d71744b66985a7f93d5635a4379947c6de6a318f3e059ef7d2e2ab47dfcbc81d479a38531106f04dd8d83486b3615709e82fb4a46
6
+ metadata.gz: f38f0fd7d3541e18fe4f85b68cd0c86e366f2422b12565f62b0b549693d0ec5bf6b1aaa8d43e5db79f0a9f8d7866c6a61ae5fd14f7b9f95f3c02f4093b303191
7
+ data.tar.gz: dd15af844ed70ecb02a32ff25002e18f6295ac4972a0e2a599d8ed822374b0b83fed9320bf1e602fd7b05aad509ea276cc1717d82e3e27d992a2c135fa2e5c14
@@ -16,6 +16,30 @@ module Netfira::WebConnect
16
16
  define_method verb do |action, path = nil, data = nil|
17
17
  request verb, action, path, data
18
18
  end
19
+ define_method :"#{verb}!" do |*args|
20
+ __send__ verb, *args
21
+ raise "#{response.status}: #{response.body}" if response.status >= 400
22
+ end
23
+ end
24
+
25
+ def method_missing(sym, *args, &block)
26
+ if respond_to_missing?(sym)
27
+ model = get_file_record_class sym.to_s[/^send_(\w+)$/, 1]
28
+ group = model.name.demodulize
29
+ method = -> files { files.each { |file_name, stream| send_file group, file_name, stream } }
30
+ self.class.__send__ :define_method, sym, method
31
+ method.call args.first
32
+ else
33
+ super sym, *args, &block
34
+ end
35
+ end
36
+
37
+ def respond_to_missing?(sym)
38
+ if sym =~ /^send_(\w+)$/
39
+ !!get_file_record_class($1)
40
+ else
41
+ false
42
+ end
19
43
  end
20
44
 
21
45
  def request(verb, action, path = nil, data = nil)
@@ -25,6 +49,10 @@ module Netfira::WebConnect
25
49
  @response = Response.new(app.call env)
26
50
  end
27
51
 
52
+ def send_file(group, file_name, stream)
53
+ request :post, 'files', "#{group}/#{file_name}", stream
54
+ end
55
+
28
56
  private
29
57
 
30
58
  def app
@@ -41,7 +69,7 @@ module Netfira::WebConnect
41
69
  elsif body.respond_to? :read
42
70
  filename = body.path
43
71
  extension = File.extname(filename)[1..-1] # get the extension and strip off the period at the beginning of the string
44
- body = body.read
72
+ body = body.tap(&:rewind).read
45
73
 
46
74
  if extension
47
75
  type_result = MIME::Types.type_for(extension).first
@@ -59,6 +87,14 @@ module Netfira::WebConnect
59
87
  env
60
88
  end
61
89
 
90
+ def get_file_record_class(name)
91
+ class_name = name.singularize.camelize
92
+ if Models.const_defined?(class_name)
93
+ model = Models.const_get(class_name)
94
+ model < Model::Record::FileRecord && model
95
+ end
96
+ end
97
+
62
98
  class Response
63
99
  attr_reader :status, :headers
64
100
 
@@ -72,6 +108,10 @@ module Netfira::WebConnect
72
108
  @body ||= @headers['Content-Type'] == 'application/json' ? json_body : @raw_body
73
109
  end
74
110
 
111
+ def [](key)
112
+ body[key]
113
+ end
114
+
75
115
  private
76
116
 
77
117
  def json_body
@@ -1,7 +1,7 @@
1
1
  module Netfira
2
2
  module WebConnect
3
3
  module Rails
4
- VERSION = '0.4.3'
4
+ VERSION = '0.4.4'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web-connect-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neil E. Pearson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-05 00:00:00.000000000 Z
11
+ date: 2014-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.4.3
33
+ version: 0.4.4
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.4.3
40
+ version: 0.4.4
41
41
  description: Netfira WebConnect plugin for Ruby on Rails
42
42
  email:
43
43
  - neil@helium.net.au