web-connect-rails 0.4.3 → 0.4.4

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