multipart-post 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,28 +1,80 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multipart-post
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
5
- prerelease:
4
+ version: 2.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nick Sieger
8
+ - Samuel Williams
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-21 00:00:00.000000000 Z
13
- dependencies: []
14
- description: ! 'Use with Net::HTTP to do multipart form posts. IO values that have
12
+ date: 2019-05-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '1.3'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '3'
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: '1.3'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ - !ruby/object:Gem::Dependency
35
+ name: rspec
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.4'
41
+ type: :development
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ - !ruby/object:Gem::Dependency
49
+ name: rake
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: 'Use with Net::HTTP to do multipart form postspec. IO values that have
15
63
  #content_type, #original_filename, and #local_path will be posted as a binary file.'
16
64
  email:
17
65
  - nick@nicksieger.com
66
+ - samuel.williams@oriontransfer.co.nz
18
67
  executables: []
19
68
  extensions: []
20
69
  extra_rdoc_files: []
21
70
  files:
22
- - .gitignore
23
- - .travis.yml
71
+ - ".gitignore"
72
+ - ".rspec"
73
+ - ".travis.yml"
74
+ - ".yardopts"
24
75
  - Gemfile
25
76
  - History.txt
77
+ - LICENSE
26
78
  - Manifest.txt
27
79
  - README.md
28
80
  - Rakefile
@@ -32,48 +84,37 @@ files:
32
84
  - lib/net/http/post/multipart.rb
33
85
  - lib/parts.rb
34
86
  - multipart-post.gemspec
35
- - test/multibyte.txt
36
- - test/net/http/post/test_multipart.rb
37
- - test/test_composite_io.rb
38
- - test/test_parts.rb
87
+ - spec/composite_io_spec.rb
88
+ - spec/multibyte.txt
89
+ - spec/net/http/post/multipart_spec.rb
90
+ - spec/parts_spec.rb
91
+ - spec/spec_helper.rb
39
92
  homepage: https://github.com/nicksieger/multipart-post
40
93
  licenses:
41
94
  - MIT
95
+ metadata: {}
42
96
  post_install_message:
43
- rdoc_options:
44
- - --main
45
- - README.md
46
- - -SHN
47
- - -f
48
- - darkfish
97
+ rdoc_options: []
49
98
  require_paths:
50
99
  - lib
51
100
  required_ruby_version: !ruby/object:Gem::Requirement
52
- none: false
53
101
  requirements:
54
- - - ! '>='
102
+ - - ">="
55
103
  - !ruby/object:Gem::Version
56
104
  version: '0'
57
- segments:
58
- - 0
59
- hash: 3851181222699685043
60
105
  required_rubygems_version: !ruby/object:Gem::Requirement
61
- none: false
62
106
  requirements:
63
- - - ! '>='
107
+ - - ">="
64
108
  - !ruby/object:Gem::Version
65
109
  version: '0'
66
- segments:
67
- - 0
68
- hash: 3851181222699685043
69
110
  requirements: []
70
- rubyforge_project: caldersphere
71
- rubygems_version: 1.8.23
111
+ rubygems_version: 3.0.2
72
112
  signing_key:
73
- specification_version: 3
113
+ specification_version: 4
74
114
  summary: A multipart form post accessory for Net::HTTP.
75
115
  test_files:
76
- - test/multibyte.txt
77
- - test/net/http/post/test_multipart.rb
78
- - test/test_composite_io.rb
79
- - test/test_parts.rb
116
+ - spec/composite_io_spec.rb
117
+ - spec/multibyte.txt
118
+ - spec/net/http/post/multipart_spec.rb
119
+ - spec/parts_spec.rb
120
+ - spec/spec_helper.rb
@@ -1,115 +0,0 @@
1
- #--
2
- # Copyright (c) 2007-2013 Nick Sieger.
3
- # See the file README.txt included with the distribution for
4
- # software license details.
5
- #++
6
-
7
- require 'composite_io'
8
- require 'stringio'
9
- require 'test/unit'
10
- require 'timeout'
11
-
12
- class CompositeReadIOTest < Test::Unit::TestCase
13
- def setup
14
- @io = CompositeReadIO.new(CompositeReadIO.new(StringIO.new('the '), StringIO.new('quick ')),
15
- StringIO.new('brown '), StringIO.new('fox'))
16
- end
17
-
18
- def test_full_read_from_several_ios
19
- assert_equal 'the quick brown fox', @io.read
20
- end
21
-
22
- unless RUBY_VERSION < '1.9'
23
- def test_read_from_multibyte
24
- utf8 = File.open(File.dirname(__FILE__)+'/multibyte.txt')
25
- binary = StringIO.new("\x86")
26
- @io = CompositeReadIO.new(binary,utf8)
27
-
28
- expect = "\x86\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\n"
29
- expect.force_encoding('BINARY') if expect.respond_to?(:force_encoding)
30
- assert_equal expect, @io.read
31
- end
32
- end
33
-
34
- def test_partial_read
35
- assert_equal 'the quick', @io.read(9)
36
- end
37
-
38
- def test_partial_read_to_boundary
39
- assert_equal 'the quick ', @io.read(10)
40
- end
41
-
42
- def test_read_with_size_larger_than_available
43
- assert_equal 'the quick brown fox', @io.read(32)
44
- end
45
-
46
- def test_read_into_buffer
47
- buf = ''
48
- @io.read(nil, buf)
49
- assert_equal 'the quick brown fox', buf
50
- end
51
-
52
- def test_multiple_reads
53
- assert_equal 'the ', @io.read(4)
54
- assert_equal 'quic', @io.read(4)
55
- assert_equal 'k br', @io.read(4)
56
- assert_equal 'own ', @io.read(4)
57
- assert_equal 'fox', @io.read(4)
58
- end
59
-
60
- def test_read_after_end
61
- @io.read
62
- assert_equal "", @io.read
63
- end
64
-
65
- def test_read_after_end_with_amount
66
- @io.read(32)
67
- assert_equal nil, @io.read(32)
68
- end
69
-
70
- def test_second_full_read_after_rewinding
71
- @io.read
72
- @io.rewind
73
- assert_equal 'the quick brown fox', @io.read
74
- end
75
-
76
- def test_convert_error
77
- assert_raises(ArgumentError) {
78
- UploadIO.convert!('tmp.txt', 'text/plain', 'tmp.txt', 'tmp.txt')
79
- }
80
- end
81
-
82
- ## FIXME excluding on JRuby due to
83
- ## http://jira.codehaus.org/browse/JRUBY-7109
84
- if IO.respond_to?(:copy_stream) && !defined?(JRUBY_VERSION)
85
- def test_compatible_with_copy_stream
86
- target_io = StringIO.new
87
- Timeout.timeout(1) do
88
- IO.copy_stream(@io, target_io)
89
- end
90
- assert_equal "the quick brown fox", target_io.string
91
- end
92
- end
93
-
94
- def test_empty
95
- io = CompositeReadIO.new
96
- assert_equal "", io.read
97
- end
98
-
99
- def test_empty_limited
100
- io = CompositeReadIO.new
101
- assert_nil io.read(1)
102
- end
103
-
104
- def test_empty_parts
105
- io = CompositeReadIO.new(StringIO.new, StringIO.new('the '), StringIO.new, StringIO.new('quick'))
106
- assert_equal "the", io.read(3)
107
- assert_equal " qu", io.read(3)
108
- assert_equal "ick", io.read(4)
109
- end
110
-
111
- def test_all_empty_parts
112
- io = CompositeReadIO.new(StringIO.new, StringIO.new)
113
- assert_nil io.read(1)
114
- end
115
- end
@@ -1,86 +0,0 @@
1
- #--
2
- # Copyright (c) 2007-2012 Nick Sieger.
3
- # See the file README.txt included with the distribution for
4
- # software license details.
5
- #++
6
-
7
- require 'test/unit'
8
-
9
- require 'parts'
10
- require 'stringio'
11
- require 'composite_io'
12
- require 'tempfile'
13
-
14
-
15
- MULTIBYTE = File.dirname(__FILE__)+'/multibyte.txt'
16
- TEMP_FILE = "temp.txt"
17
-
18
- module AssertPartLength
19
- def assert_part_length(part)
20
- bytes = part.to_io.read
21
- bytesize = bytes.respond_to?(:bytesize) ? bytes.bytesize : bytes.length
22
- assert_equal bytesize, part.length
23
- end
24
- end
25
-
26
- class PartTest < Test::Unit::TestCase
27
- def setup
28
- @string_with_content_type = Class.new(String) do
29
- def content_type; 'application/data'; end
30
- end
31
- end
32
-
33
- def test_file_with_upload_io
34
- assert Parts::Part.file?(UploadIO.new(__FILE__, "text/plain"))
35
- end
36
-
37
- def test_file_with_modified_string
38
- assert !Parts::Part.file?(@string_with_content_type.new("Hello"))
39
- end
40
-
41
- def test_new_with_modified_string
42
- assert_kind_of Parts::ParamPart,
43
- Parts::Part.new("boundary", "multibyte", @string_with_content_type.new("Hello"))
44
- end
45
- end
46
-
47
- class FilePartTest < Test::Unit::TestCase
48
- include AssertPartLength
49
-
50
- def setup
51
- File.open(TEMP_FILE, "w") {|f| f << "1234567890"}
52
- io = UploadIO.new(TEMP_FILE, "text/plain")
53
- @part = Parts::FilePart.new("boundary", "afile", io)
54
- end
55
-
56
- def teardown
57
- File.delete(TEMP_FILE) rescue nil
58
- end
59
-
60
- def test_correct_length
61
- assert_part_length @part
62
- end
63
-
64
- def test_multibyte_file_length
65
- assert_part_length Parts::FilePart.new("boundary", "multibyte", UploadIO.new(MULTIBYTE, "text/plain"))
66
- end
67
-
68
- def test_multibyte_filename
69
- name = File.read(MULTIBYTE, 300)
70
- file = Tempfile.new(name.respond_to?(:force_encoding) ? name.force_encoding("UTF-8") : name)
71
- assert_part_length Parts::FilePart.new("boundary", "multibyte", UploadIO.new(file, "text/plain"))
72
- file.close
73
- end
74
- end
75
-
76
- class ParamPartTest < Test::Unit::TestCase
77
- include AssertPartLength
78
-
79
- def setup
80
- @part = Parts::ParamPart.new("boundary", "multibyte", File.read(MULTIBYTE))
81
- end
82
-
83
- def test_correct_length
84
- assert_part_length @part
85
- end
86
- end