httmultiparty 0.3.14 → 0.3.15
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 +4 -4
- data/README.md +17 -3
- data/lib/httmultiparty.rb +10 -8
- data/lib/httmultiparty/version.rb +1 -1
- metadata +20 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7265a5ad4092d1a872cea3823d462b75764e9f85
|
4
|
+
data.tar.gz: 1c7eec14921066090bf04cf89eda9b1b54e3a4b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e298e0321f63f95608f7e99bbe9eebedb034c38ea4c0d81ab346d4b8272a11aedb4c9c36d505437d1a71b7e43658f1006d0968d82defa6832522e12ce58b4645
|
7
|
+
data.tar.gz: e8b5a16b4cc021bd39f6537a8d25e7a816c8ddee59a142e84486eea6a4e4544d1d0d518f6e3a9b76a598b40695253f7ff447a77c7fa9e3918bdae23fa4d38fa1
|
data/README.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
[](https://travis-ci.org/jwagener/httmultiparty)
|
2
|
+
|
3
|
+
|
4
|
+
[](http://badge.fury.io/rb/httmultiparty)
|
5
|
+
|
6
|
+
|
1
7
|
## Description
|
2
8
|
|
3
9
|
HTTMultiParty is a thin wrapper around HTTParty to provide multipart uploads.
|
@@ -10,8 +16,10 @@ HTTMultiParty is a thin wrapper around HTTParty to provide multipart uploads.
|
|
10
16
|
|
11
17
|
## Quick Start and Example
|
12
18
|
|
13
|
-
To start just
|
14
|
-
your client class. When you pass a query with an instance of a File as
|
19
|
+
To start just `include HTTMultiParty` instead of `include HTTParty` into
|
20
|
+
your client class. When you pass a query with an instance of a File as
|
21
|
+
a value for a PUT or POST request, the wrapper will use a bit of magic
|
22
|
+
and multipart-post to execute a multipart upload:
|
15
23
|
|
16
24
|
```ruby
|
17
25
|
require 'httmultiparty'
|
@@ -47,5 +55,11 @@ response = SomeClient.post('/', :query => {
|
|
47
55
|
:somefile => File.new('README.md')
|
48
56
|
}, :detect_mime_type => true)
|
49
57
|
```
|
58
|
+
## File class support
|
50
59
|
|
51
|
-
|
60
|
+
Instead of using `File` class, you can use any class that responds to
|
61
|
+
a `read` method as a file object. If you are using Rails, you can use
|
62
|
+
`ActionDispatch::Http::UploadedFile` object directly as it responds to
|
63
|
+
`read` method. The `read` method should act similar to the `IO#read`
|
64
|
+
method. To set the filename your file class can optionally respond to
|
65
|
+
the `original_filename` method, which should return a `String`.
|
data/lib/httmultiparty.rb
CHANGED
@@ -6,8 +6,6 @@ require 'net/http/post/multipart'
|
|
6
6
|
require 'mimemagic'
|
7
7
|
|
8
8
|
module HTTMultiParty
|
9
|
-
TRANSFORMABLE_TYPES = [File, Tempfile]
|
10
|
-
|
11
9
|
def self.included(base)
|
12
10
|
base.send :include, HTTParty
|
13
11
|
base.extend ClassMethods
|
@@ -28,7 +26,7 @@ module HTTMultiParty
|
|
28
26
|
Proc.new do |params|
|
29
27
|
HTTMultiParty.flatten_params(params).map do |(k,v)|
|
30
28
|
if file_present_in_params?(params)
|
31
|
-
[k,
|
29
|
+
[k, v.respond_to?(:read) ? HTTMultiParty.file_to_upload_io(v, detect_mime_type) : v]
|
32
30
|
else
|
33
31
|
"#{k}=#{v}"
|
34
32
|
end
|
@@ -83,15 +81,19 @@ module HTTMultiParty
|
|
83
81
|
def self.file_present_in_params?(params)
|
84
82
|
params.values.any? do |v|
|
85
83
|
if v.is_a? Array
|
86
|
-
v.any? { |vv|
|
84
|
+
v.any? { |vv| file_present?(vv) }
|
87
85
|
elsif v.is_a? Hash
|
88
|
-
v.values.any? { |vv|
|
86
|
+
v.values.any? { |vv| file_present?(vv) }
|
89
87
|
else
|
90
|
-
|
88
|
+
file_present?(v)
|
91
89
|
end
|
92
90
|
end
|
93
91
|
end
|
94
92
|
|
93
|
+
def self.file_present?(value)
|
94
|
+
value.respond_to?(:read)
|
95
|
+
end
|
96
|
+
|
95
97
|
module ClassMethods
|
96
98
|
def post(path, options={})
|
97
99
|
method = Net::HTTP::Post
|
@@ -115,8 +117,8 @@ module HTTMultiParty
|
|
115
117
|
|
116
118
|
private
|
117
119
|
def hash_contains_files?(hash)
|
118
|
-
hash.is_a?(Hash) && HTTMultiParty.flatten_params(hash).select do |
|
119
|
-
|
120
|
+
hash.is_a?(Hash) && HTTMultiParty.flatten_params(hash).select do |_,v|
|
121
|
+
HTTMultiParty.file_present?(v)
|
120
122
|
end.size > 0
|
121
123
|
end
|
122
124
|
end
|
metadata
CHANGED
@@ -1,97 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httmultiparty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johannes Wagener
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04
|
11
|
+
date: 2014-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.7.3
|
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: 0.7.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: multipart-post
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
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
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mimemagic
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: fakeweb
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
description: HTTMultiParty is a thin wrapper around HTTParty to provide multipart
|
@@ -102,12 +102,12 @@ executables: []
|
|
102
102
|
extensions: []
|
103
103
|
extra_rdoc_files: []
|
104
104
|
files:
|
105
|
+
- README.md
|
105
106
|
- lib/httmultiparty.rb
|
106
|
-
- lib/httmultiparty/version.rb
|
107
|
-
- lib/httmultiparty/multipart_put.rb
|
108
107
|
- lib/httmultiparty/multipart_post.rb
|
108
|
+
- lib/httmultiparty/multipart_put.rb
|
109
109
|
- lib/httmultiparty/multipartable.rb
|
110
|
-
-
|
110
|
+
- lib/httmultiparty/version.rb
|
111
111
|
homepage: http://github.com/jwagener/httmultiparty
|
112
112
|
licenses:
|
113
113
|
- MIT
|
@@ -118,17 +118,17 @@ require_paths:
|
|
118
118
|
- lib
|
119
119
|
required_ruby_version: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- -
|
121
|
+
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: '0'
|
124
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
125
|
requirements:
|
126
|
-
- -
|
126
|
+
- - ">="
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: 1.3.6
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.2.2
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: HTTMultiParty is a thin wrapper around HTTParty to provide multipart uploads.
|