ronin-support 0.5.1 → 1.0.0.beta1
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 +7 -0
- data/.editorconfig +11 -0
- data/.github/workflows/ruby.yml +27 -0
- data/.gitignore +7 -6
- data/.mailmap +1 -0
- data/.ruby-version +1 -0
- data/.yardopts +1 -2
- data/ChangeLog.md +533 -137
- data/Gemfile +20 -20
- data/README.md +137 -61
- data/Rakefile +29 -10
- data/data/text/homoglyphs/ascii.txt +8 -0
- data/data/text/homoglyphs/cyrillic.txt +33 -0
- data/data/text/homoglyphs/full_width.txt +81 -0
- data/data/text/homoglyphs/greek.txt +21 -0
- data/data/text/homoglyphs/latin_numbers.txt +14 -0
- data/data/text/homoglyphs/punctuation.txt +7 -0
- data/data/text/patterns/network/public_suffix.rb.erb +44 -0
- data/examples/ssl_proxy.rb +38 -0
- data/examples/tcp_proxy.rb +41 -0
- data/gemspec.yml +25 -15
- data/lib/ronin/support/archive/core_ext/file.rb +118 -0
- data/lib/ronin/{formatting/sql.rb → support/archive/core_ext.rb} +6 -7
- data/lib/ronin/support/archive/mixin.rb +213 -0
- data/lib/ronin/support/archive/tar/reader.rb +135 -0
- data/lib/ronin/support/archive/tar/writer.rb +197 -0
- data/lib/ronin/support/archive/tar.rb +155 -0
- data/lib/ronin/support/archive/zip/reader/entry.rb +134 -0
- data/lib/ronin/support/archive/zip/reader/statistics.rb +76 -0
- data/lib/ronin/support/archive/zip/reader.rb +273 -0
- data/lib/ronin/support/archive/zip/writer.rb +175 -0
- data/lib/ronin/support/archive/zip.rb +105 -0
- data/lib/ronin/support/archive.rb +211 -0
- data/lib/ronin/support/binary/array.rb +255 -0
- data/lib/ronin/support/binary/bit_flip.rb +147 -0
- data/lib/ronin/support/binary/buffer.rb +2027 -0
- data/lib/ronin/support/binary/byte_slice.rb +324 -0
- data/lib/ronin/support/binary/core_ext/array.rb +75 -0
- data/lib/ronin/support/binary/core_ext/float.rb +80 -0
- data/lib/ronin/support/binary/core_ext/integer.rb +305 -0
- data/lib/ronin/support/binary/core_ext/io.rb +38 -0
- data/lib/ronin/support/binary/core_ext/string.rb +115 -0
- data/lib/ronin/{formatting/extensions/text.rb → support/binary/core_ext.rb} +9 -9
- data/lib/ronin/support/binary/cstring.rb +259 -0
- data/lib/ronin/support/binary/ctypes/aggregate_type.rb +98 -0
- data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/arm.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/arm64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/mips.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +77 -0
- data/lib/ronin/support/binary/ctypes/arch/mips64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/x86.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +75 -0
- data/lib/ronin/support/binary/ctypes/arch.rb +30 -0
- data/lib/ronin/support/binary/ctypes/array_object_type.rb +164 -0
- data/lib/ronin/support/binary/ctypes/array_type.rb +232 -0
- data/lib/ronin/support/binary/ctypes/big_endian.rb +195 -0
- data/lib/ronin/support/binary/ctypes/char_type.rb +59 -0
- data/lib/ronin/support/binary/ctypes/char_types.rb +39 -0
- data/lib/ronin/support/binary/ctypes/enum_type.rb +181 -0
- data/lib/ronin/support/binary/ctypes/float32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/float64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/float_type.rb +62 -0
- data/lib/ronin/support/binary/ctypes/int16_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/int8_type.rb +41 -0
- data/lib/ronin/support/binary/ctypes/int_type.rb +62 -0
- data/lib/ronin/support/binary/ctypes/little_endian.rb +195 -0
- data/lib/ronin/support/binary/ctypes/mixin.rb +135 -0
- data/lib/ronin/support/binary/ctypes/native.rb +205 -0
- data/lib/ronin/support/binary/ctypes/network.rb +29 -0
- data/lib/ronin/support/binary/ctypes/object_type.rb +55 -0
- data/lib/ronin/support/binary/ctypes/os/bsd.rb +65 -0
- data/lib/ronin/support/binary/ctypes/os/freebsd.rb +215 -0
- data/lib/ronin/support/binary/ctypes/os/linux.rb +193 -0
- data/lib/ronin/support/binary/ctypes/os/macos.rb +151 -0
- data/lib/ronin/support/binary/ctypes/os/netbsd.rb +147 -0
- data/lib/ronin/support/binary/ctypes/os/openbsd.rb +168 -0
- data/lib/ronin/support/binary/ctypes/os/unix.rb +78 -0
- data/lib/ronin/support/binary/ctypes/os/windows.rb +125 -0
- data/lib/ronin/support/binary/ctypes/os.rb +125 -0
- data/lib/ronin/support/binary/ctypes/scalar_type.rb +200 -0
- data/lib/ronin/support/binary/ctypes/string_type.rb +143 -0
- data/lib/ronin/support/binary/ctypes/struct_object_type.rb +173 -0
- data/lib/ronin/support/binary/ctypes/struct_type.rb +359 -0
- data/lib/ronin/support/binary/ctypes/type.rb +193 -0
- data/lib/ronin/support/binary/ctypes/type_resolver.rb +206 -0
- data/lib/ronin/support/binary/ctypes/uint16_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint32_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint64_type.rb +50 -0
- data/lib/ronin/support/binary/ctypes/uint8_type.rb +41 -0
- data/lib/ronin/support/binary/ctypes/uint_type.rb +59 -0
- data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +258 -0
- data/lib/ronin/support/binary/ctypes/union_object_type.rb +173 -0
- data/lib/ronin/support/binary/ctypes/union_type.rb +261 -0
- data/lib/ronin/support/binary/ctypes.rb +462 -0
- data/lib/ronin/support/binary/hexdump/core_ext/file.rb +118 -0
- data/lib/ronin/support/binary/hexdump/core_ext/string.rb +115 -0
- data/lib/ronin/support/binary/hexdump/core_ext.rb +20 -0
- data/lib/ronin/support/binary/hexdump/parser.rb +492 -0
- data/lib/ronin/support/binary/hexdump.rb +20 -0
- data/lib/ronin/support/binary/memory.rb +268 -0
- data/lib/ronin/support/binary/packet.rb +33 -0
- data/lib/ronin/support/binary/stack.rb +256 -0
- data/lib/ronin/support/binary/stream/methods.rb +1755 -0
- data/lib/ronin/support/binary/stream.rb +151 -0
- data/lib/ronin/support/binary/struct/member.rb +86 -0
- data/lib/ronin/support/binary/struct.rb +830 -0
- data/lib/ronin/support/binary/template.rb +284 -0
- data/lib/ronin/support/binary/union.rb +162 -0
- data/lib/ronin/support/binary.rb +26 -0
- data/lib/ronin/support/cli/ansi.rb +330 -0
- data/lib/ronin/support/cli/io_shell/core_ext/io.rb +67 -0
- data/lib/ronin/{fuzzing/extensions.rb → support/cli/io_shell/core_ext.rb} +6 -7
- data/lib/ronin/support/cli/io_shell.rb +161 -0
- data/lib/ronin/support/cli/printing.rb +216 -0
- data/lib/ronin/support/cli.rb +20 -0
- data/lib/ronin/support/compression/core_ext/file.rb +70 -0
- data/lib/ronin/support/compression/core_ext/string.rb +101 -0
- data/lib/ronin/{formatting/html.rb → support/compression/core_ext.rb} +6 -7
- data/lib/ronin/support/compression/gzip/reader.rb +70 -0
- data/lib/ronin/support/compression/gzip/writer.rb +74 -0
- data/lib/ronin/support/compression/gzip.rb +105 -0
- data/lib/ronin/support/compression/mixin.rb +180 -0
- data/lib/ronin/{network/extensions/esmtp/net.rb → support/compression/zlib.rb} +9 -10
- data/lib/ronin/support/compression.rb +174 -0
- data/lib/ronin/{extensions → support/core_ext}/enumerable.rb +5 -6
- data/lib/ronin/{extensions → support/core_ext}/file.rb +11 -34
- data/lib/ronin/support/core_ext/integer.rb +37 -0
- data/lib/ronin/support/core_ext/ipaddr.rb +65 -0
- data/lib/ronin/{extensions → support/core_ext}/kernel.rb +10 -9
- data/lib/ronin/{extensions → support/core_ext}/resolv.rb +5 -28
- data/lib/ronin/{extensions → support/core_ext}/string.rb +117 -57
- data/lib/ronin/support/core_ext.rb +33 -0
- data/lib/ronin/support/crypto/cert.rb +522 -0
- data/lib/ronin/support/crypto/cert_chain.rb +204 -0
- data/lib/ronin/support/crypto/cipher/aes.rb +71 -0
- data/lib/ronin/support/crypto/cipher/aes128.rb +54 -0
- data/lib/ronin/support/crypto/cipher/aes256.rb +54 -0
- data/lib/ronin/support/crypto/cipher.rb +194 -0
- data/lib/ronin/support/crypto/core_ext/file.rb +660 -0
- data/lib/ronin/support/crypto/core_ext/string.rb +548 -0
- data/lib/ronin/{binary.rb → support/crypto/core_ext.rb} +7 -8
- data/lib/ronin/support/crypto/hmac.rb +48 -0
- data/lib/ronin/support/crypto/key/dh.rb +122 -0
- data/lib/ronin/support/crypto/key/dsa.rb +103 -0
- data/lib/ronin/support/crypto/key/ec.rb +99 -0
- data/lib/ronin/support/crypto/key/methods.rb +163 -0
- data/lib/ronin/support/crypto/key/rsa.rb +169 -0
- data/lib/ronin/support/crypto/key.rb +105 -0
- data/lib/ronin/support/crypto/mixin.rb +620 -0
- data/lib/ronin/{network/extensions/http/net.rb → support/crypto/openssl.rb} +9 -10
- data/lib/ronin/support/crypto.rb +779 -0
- data/lib/ronin/support/encoding/base16/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/base16/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base16.rb +82 -0
- data/lib/ronin/support/encoding/base32/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/base32/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base32.rb +164 -0
- data/lib/ronin/support/encoding/base64/core_ext/string.rb +76 -0
- data/lib/ronin/support/encoding/base64/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/base64.rb +78 -0
- data/lib/ronin/support/encoding/c/core_ext/integer.rb +82 -0
- data/lib/ronin/support/encoding/c/core_ext/string.rb +125 -0
- data/lib/ronin/support/encoding/c/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/c.rb +277 -0
- data/lib/ronin/support/encoding/core_ext/string.rb +107 -0
- data/lib/ronin/support/encoding/core_ext.rb +33 -0
- data/lib/ronin/support/encoding/hex/core_ext/integer.rb +82 -0
- data/lib/ronin/support/encoding/hex/core_ext/string.rb +133 -0
- data/lib/ronin/support/encoding/hex/core_ext.rb +22 -0
- data/lib/ronin/support/encoding/hex.rb +248 -0
- data/lib/ronin/support/encoding/html/core_ext/integer.rb +106 -0
- data/lib/ronin/support/encoding/html/core_ext/string.rb +130 -0
- data/lib/ronin/support/encoding/html/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/html.rb +233 -0
- data/lib/ronin/support/encoding/http/core_ext/integer.rb +95 -0
- data/lib/ronin/support/encoding/http/core_ext/string.rb +129 -0
- data/lib/ronin/support/encoding/http/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/http.rb +241 -0
- data/lib/ronin/support/encoding/js/core_ext/integer.rb +67 -0
- data/lib/ronin/support/encoding/js/core_ext/string.rb +125 -0
- data/lib/ronin/support/encoding/js/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/js.rb +279 -0
- data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +87 -0
- data/lib/ronin/support/encoding/powershell/core_ext/string.rb +145 -0
- data/lib/ronin/support/encoding/powershell/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/powershell.rb +297 -0
- data/lib/ronin/support/encoding/punycode/core_ext/string.rb +63 -0
- data/lib/ronin/support/encoding/punycode/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/punycode.rb +76 -0
- data/lib/ronin/support/encoding/quoted_printable/core_ext/string.rb +75 -0
- data/lib/ronin/support/encoding/quoted_printable/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/quoted_printable.rb +102 -0
- data/lib/ronin/support/encoding/ruby/core_ext/string.rb +129 -0
- data/lib/ronin/{formatting/binary.rb → support/encoding/ruby/core_ext.rb} +6 -7
- data/lib/ronin/support/encoding/ruby.rb +235 -0
- data/lib/ronin/support/encoding/shell/core_ext/integer.rb +89 -0
- data/lib/ronin/support/encoding/shell/core_ext/string.rb +134 -0
- data/lib/ronin/support/encoding/shell/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/shell.rb +293 -0
- data/lib/ronin/{network/extensions → support/encoding}/smtp.rb +7 -7
- data/lib/ronin/support/encoding/sql/core_ext/string.rb +114 -0
- data/lib/ronin/{formatting/http.rb → support/encoding/sql/core_ext.rb} +6 -7
- data/lib/ronin/support/encoding/sql.rb +124 -0
- data/lib/ronin/support/encoding/uri/core_ext/integer.rb +149 -0
- data/lib/ronin/support/encoding/uri/core_ext/string.rb +195 -0
- data/lib/ronin/support/encoding/uri/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/uri.rb +424 -0
- data/lib/ronin/support/encoding/uuencoding/core_ext/string.rb +73 -0
- data/lib/ronin/support/encoding/uuencoding/core_ext.rb +19 -0
- data/lib/ronin/support/encoding/uuencoding.rb +70 -0
- data/lib/ronin/support/encoding/xml/core_ext/integer.rb +100 -0
- data/lib/ronin/support/encoding/xml/core_ext/string.rb +124 -0
- data/lib/ronin/support/encoding/xml/core_ext.rb +20 -0
- data/lib/ronin/support/encoding/xml.rb +328 -0
- data/lib/ronin/support/encoding.rb +46 -0
- data/lib/ronin/support/home.rb +88 -0
- data/lib/ronin/support/mixin.rb +42 -0
- data/lib/ronin/support/network/asn/dns_record.rb +112 -0
- data/lib/ronin/support/network/asn/list.rb +269 -0
- data/lib/ronin/support/network/asn/record.rb +164 -0
- data/lib/ronin/support/network/asn/record_set.rb +226 -0
- data/lib/ronin/support/network/asn.rb +88 -0
- data/lib/ronin/{binary/hexdump.rb → support/network/core_ext.rb} +6 -7
- data/lib/ronin/support/network/dns/idn.rb +38 -0
- data/lib/ronin/support/network/dns/mixin.rb +941 -0
- data/lib/ronin/support/network/dns/resolver.rb +707 -0
- data/lib/ronin/support/network/dns.rb +1109 -0
- data/lib/ronin/support/network/domain.rb +70 -0
- data/lib/ronin/support/network/email_address.rb +574 -0
- data/lib/ronin/support/network/esmtp/mixin.rb +115 -0
- data/lib/ronin/support/network/exceptions.rb +43 -0
- data/lib/ronin/support/network/ftp/mixin.rb +106 -0
- data/lib/ronin/support/network/host.rb +1473 -0
- data/lib/ronin/support/network/http/cookie.rb +245 -0
- data/lib/ronin/support/network/http/core_ext/uri/http.rb +63 -0
- data/lib/ronin/support/network/http/core_ext.rb +19 -0
- data/lib/ronin/support/network/http/mixin.rb +890 -0
- data/lib/ronin/support/network/http/request.rb +215 -0
- data/lib/ronin/support/network/http/set_cookie.rb +210 -0
- data/lib/ronin/support/network/http/user_agents.rb +115 -0
- data/lib/ronin/support/network/http.rb +2582 -0
- data/lib/ronin/support/network/imap/mixin.rb +133 -0
- data/lib/ronin/support/network/ip/mixin.rb +114 -0
- data/lib/ronin/support/network/ip.rb +540 -0
- data/lib/ronin/support/network/ip_range/cidr.rb +252 -0
- data/lib/ronin/support/network/ip_range/glob.rb +309 -0
- data/lib/ronin/support/network/ip_range/range.rb +249 -0
- data/lib/ronin/support/network/ip_range.rb +284 -0
- data/lib/ronin/support/network/mixin.rb +58 -0
- data/lib/ronin/support/network/packet.rb +27 -0
- data/lib/ronin/support/network/pop3/mixin.rb +113 -0
- data/lib/ronin/support/network/proxy.rb +602 -0
- data/lib/ronin/support/network/public_suffix/list.rb +339 -0
- data/lib/ronin/support/network/public_suffix/suffix.rb +118 -0
- data/lib/ronin/support/network/public_suffix/suffix_set.rb +150 -0
- data/lib/ronin/support/network/public_suffix.rb +41 -0
- data/lib/ronin/support/network/smtp/email.rb +190 -0
- data/lib/ronin/support/network/smtp/mixin.rb +290 -0
- data/lib/ronin/{extensions/meta.rb → support/network/smtp.rb} +6 -7
- data/lib/ronin/support/network/ssl/local_cert.rb +114 -0
- data/lib/ronin/support/network/ssl/local_key.rb +84 -0
- data/lib/ronin/support/network/ssl/mixin.rb +740 -0
- data/lib/ronin/{network/extensions/imap/net.rb → support/network/ssl/openssl.rb} +9 -10
- data/lib/ronin/support/network/ssl/proxy.rb +296 -0
- data/lib/ronin/support/network/ssl.rb +173 -0
- data/lib/ronin/support/network/tcp/mixin.rb +400 -0
- data/lib/ronin/support/network/tcp/proxy.rb +435 -0
- data/lib/ronin/support/network/tcp.rb +443 -0
- data/lib/ronin/support/network/telnet/mixin.rb +150 -0
- data/lib/ronin/support/network/telnet.rb +90 -0
- data/lib/ronin/support/network/tld/list.rb +266 -0
- data/lib/ronin/support/network/tld.rb +41 -0
- data/lib/ronin/support/network/tls/mixin.rb +670 -0
- data/lib/ronin/support/network/tls/proxy.rb +135 -0
- data/lib/ronin/support/network/tls.rb +53 -0
- data/lib/ronin/support/network/udp/mixin.rb +389 -0
- data/lib/ronin/support/network/udp/proxy.rb +192 -0
- data/lib/ronin/support/network/udp.rb +435 -0
- data/lib/ronin/support/network/unix/mixin.rb +273 -0
- data/lib/ronin/support/network.rb +37 -0
- data/lib/ronin/support/path.rb +136 -0
- data/lib/ronin/{network/extensions/dns/net.rb → support/text/core_ext/regexp.rb} +8 -9
- data/lib/ronin/support/text/core_ext/string.rb +46 -0
- data/lib/ronin/support/text/core_ext.rb +23 -0
- data/lib/ronin/support/text/entropy/core_ext/string.rb +45 -0
- data/lib/ronin/support/text/entropy/core_ext.rb +19 -0
- data/lib/ronin/support/text/entropy.rb +66 -0
- data/lib/ronin/support/text/erb/mixin.rb +44 -0
- data/lib/ronin/support/text/erb.rb +19 -0
- data/lib/ronin/support/text/homoglyph/core_ext/string.rb +108 -0
- data/lib/ronin/{formatting/digest.rb → support/text/homoglyph/core_ext.rb} +6 -7
- data/lib/ronin/{network/http/exceptions/unknown_request.rb → support/text/homoglyph/exceptions.rb} +10 -9
- data/lib/ronin/support/text/homoglyph/table.rb +228 -0
- data/lib/ronin/support/text/homoglyph.rb +142 -0
- data/lib/ronin/support/text/mixin.rb +31 -0
- data/lib/ronin/support/text/patterns/credentials.rb +75 -0
- data/lib/ronin/support/text/patterns/crypto.rb +67 -0
- data/lib/ronin/support/text/patterns/file_system.rb +93 -0
- data/lib/ronin/support/text/patterns/language.rb +37 -0
- data/lib/ronin/support/text/patterns/network/public_suffix.rb +44 -0
- data/lib/ronin/support/text/patterns/network.rb +140 -0
- data/lib/ronin/support/text/patterns/numeric.rb +52 -0
- data/lib/ronin/support/text/patterns/pii.rb +105 -0
- data/lib/ronin/support/text/patterns/source_code.rb +148 -0
- data/lib/ronin/support/text/patterns.rb +25 -0
- data/lib/ronin/support/text/random/mixin.rb +437 -0
- data/lib/ronin/support/text/random.rb +419 -0
- data/lib/ronin/support/text/typo/core_ext/string.rb +123 -0
- data/lib/ronin/support/text/typo/core_ext.rb +19 -0
- data/lib/ronin/support/text/typo/exceptions.rb +28 -0
- data/lib/ronin/support/text/typo/generator.rb +161 -0
- data/lib/ronin/support/text/typo.rb +260 -0
- data/lib/ronin/support/text.rb +26 -0
- data/lib/ronin/support/version.rb +6 -7
- data/lib/ronin/support.rb +20 -15
- data/ronin-support.gemspec +3 -1
- metadata +462 -369
- data/.gemtest +0 -0
- data/lib/ronin/binary/hexdump/parser.rb +0 -403
- data/lib/ronin/binary/struct.rb +0 -567
- data/lib/ronin/binary/template.rb +0 -454
- data/lib/ronin/extensions/ip_addr.rb +0 -217
- data/lib/ronin/extensions/meta/object.rb +0 -24
- data/lib/ronin/extensions/regexp.rb +0 -157
- data/lib/ronin/extensions.rb +0 -29
- data/lib/ronin/formatting/extensions/binary/array.rb +0 -61
- data/lib/ronin/formatting/extensions/binary/base64.rb +0 -106
- data/lib/ronin/formatting/extensions/binary/file.rb +0 -77
- data/lib/ronin/formatting/extensions/binary/float.rb +0 -65
- data/lib/ronin/formatting/extensions/binary/integer.rb +0 -180
- data/lib/ronin/formatting/extensions/binary/string.rb +0 -345
- data/lib/ronin/formatting/extensions/binary.rb +0 -26
- data/lib/ronin/formatting/extensions/digest/file.rb +0 -129
- data/lib/ronin/formatting/extensions/digest/string.rb +0 -86
- data/lib/ronin/formatting/extensions/digest.rb +0 -21
- data/lib/ronin/formatting/extensions/html/integer.rb +0 -142
- data/lib/ronin/formatting/extensions/html/string.rb +0 -194
- data/lib/ronin/formatting/extensions/html.rb +0 -21
- data/lib/ronin/formatting/extensions/http/integer.rb +0 -69
- data/lib/ronin/formatting/extensions/http/string.rb +0 -110
- data/lib/ronin/formatting/extensions/http.rb +0 -21
- data/lib/ronin/formatting/extensions/sql/string.rb +0 -128
- data/lib/ronin/formatting/extensions/sql.rb +0 -20
- data/lib/ronin/formatting/extensions/text/array.rb +0 -137
- data/lib/ronin/formatting/extensions/text/string.rb +0 -297
- data/lib/ronin/formatting/extensions.rb +0 -24
- data/lib/ronin/formatting/text.rb +0 -20
- data/lib/ronin/formatting.rb +0 -25
- data/lib/ronin/fuzzing/extensions/string.rb +0 -209
- data/lib/ronin/fuzzing/fuzzer.rb +0 -110
- data/lib/ronin/fuzzing/fuzzing.rb +0 -360
- data/lib/ronin/fuzzing/mutator.rb +0 -161
- data/lib/ronin/fuzzing/repeater.rb +0 -81
- data/lib/ronin/fuzzing/template.rb +0 -133
- data/lib/ronin/fuzzing.rb +0 -21
- data/lib/ronin/mixin.rb +0 -89
- data/lib/ronin/network/dns.rb +0 -201
- data/lib/ronin/network/esmtp.rb +0 -113
- data/lib/ronin/network/extensions/dns.rb +0 -20
- data/lib/ronin/network/extensions/esmtp.rb +0 -20
- data/lib/ronin/network/extensions/http/uri/http.rb +0 -228
- data/lib/ronin/network/extensions/http.rb +0 -21
- data/lib/ronin/network/extensions/imap.rb +0 -20
- data/lib/ronin/network/extensions/pop3/net.rb +0 -24
- data/lib/ronin/network/extensions/pop3.rb +0 -20
- data/lib/ronin/network/extensions/smtp/net.rb +0 -24
- data/lib/ronin/network/extensions/ssl/net.rb +0 -24
- data/lib/ronin/network/extensions/ssl.rb +0 -20
- data/lib/ronin/network/extensions/tcp/net.rb +0 -24
- data/lib/ronin/network/extensions/tcp.rb +0 -20
- data/lib/ronin/network/extensions/telnet/net.rb +0 -24
- data/lib/ronin/network/extensions/telnet.rb +0 -20
- data/lib/ronin/network/extensions/udp/net.rb +0 -24
- data/lib/ronin/network/extensions/udp.rb +0 -20
- data/lib/ronin/network/extensions.rb +0 -29
- data/lib/ronin/network/ftp.rb +0 -149
- data/lib/ronin/network/http/exceptions.rb +0 -20
- data/lib/ronin/network/http/http.rb +0 -1127
- data/lib/ronin/network/http/proxy.rb +0 -330
- data/lib/ronin/network/http.rb +0 -22
- data/lib/ronin/network/imap.rb +0 -158
- data/lib/ronin/network/mixins/dns.rb +0 -55
- data/lib/ronin/network/mixins/esmtp.rb +0 -164
- data/lib/ronin/network/mixins/ftp.rb +0 -155
- data/lib/ronin/network/mixins/http.rb +0 -227
- data/lib/ronin/network/mixins/imap.rb +0 -156
- data/lib/ronin/network/mixins/mixin.rb +0 -58
- data/lib/ronin/network/mixins/pop3.rb +0 -149
- data/lib/ronin/network/mixins/smtp.rb +0 -159
- data/lib/ronin/network/mixins/ssl.rb +0 -148
- data/lib/ronin/network/mixins/tcp.rb +0 -368
- data/lib/ronin/network/mixins/telnet.rb +0 -208
- data/lib/ronin/network/mixins/udp.rb +0 -381
- data/lib/ronin/network/mixins/unix.rb +0 -279
- data/lib/ronin/network/mixins.rb +0 -29
- data/lib/ronin/network/network.rb +0 -45
- data/lib/ronin/network/pop3.rb +0 -124
- data/lib/ronin/network/proxy.rb +0 -578
- data/lib/ronin/network/smtp/email.rb +0 -174
- data/lib/ronin/network/smtp/smtp.rb +0 -230
- data/lib/ronin/network/smtp.rb +0 -22
- data/lib/ronin/network/ssl.rb +0 -186
- data/lib/ronin/network/tcp/proxy.rb +0 -417
- data/lib/ronin/network/tcp/tcp.rb +0 -443
- data/lib/ronin/network/tcp.rb +0 -21
- data/lib/ronin/network/telnet.rb +0 -264
- data/lib/ronin/network/udp/proxy.rb +0 -191
- data/lib/ronin/network/udp/udp.rb +0 -450
- data/lib/ronin/network/udp.rb +0 -21
- data/lib/ronin/network/unix.rb +0 -286
- data/lib/ronin/network.rb +0 -31
- data/lib/ronin/path.rb +0 -137
- data/lib/ronin/spec/ui/output.rb +0 -22
- data/lib/ronin/support/inflector.rb +0 -92
- data/lib/ronin/support/support.rb +0 -42
- data/lib/ronin/templates/erb.rb +0 -78
- data/lib/ronin/templates/template.rb +0 -169
- data/lib/ronin/templates.rb +0 -21
- data/lib/ronin/ui/output/helpers.rb +0 -296
- data/lib/ronin/ui/output/output.rb +0 -146
- data/lib/ronin/ui/output/terminal/color.rb +0 -124
- data/lib/ronin/ui/output/terminal/raw.rb +0 -103
- data/lib/ronin/ui/output/terminal.rb +0 -21
- data/lib/ronin/ui/output.rb +0 -21
- data/lib/ronin/ui/shell.rb +0 -286
- data/lib/ronin/wordlist.rb +0 -287
- data/spec/binary/hexdump/helpers/hexdumps/ascii.bin +0 -0
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_decimal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/hexdump_repeated.txt +0 -6
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_decimal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_doubles.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_floats.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_hex_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_named_chars.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_bytes.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_ints.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_quads.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_octal_shorts.txt +0 -17
- data/spec/binary/hexdump/helpers/hexdumps/od_repeated.txt +0 -6
- data/spec/binary/hexdump/helpers/hexdumps/repeated.bin +0 -1
- data/spec/binary/hexdump/helpers/hexdumps.rb +0 -13
- data/spec/binary/hexdump/parser_spec.rb +0 -302
- data/spec/binary/struct_spec.rb +0 -496
- data/spec/binary/template_spec.rb +0 -414
- data/spec/extensions/enumerable_spec.rb +0 -24
- data/spec/extensions/file_spec.rb +0 -63
- data/spec/extensions/ip_addr_spec.rb +0 -203
- data/spec/extensions/kernel_spec.rb +0 -30
- data/spec/extensions/regexp_spec.rb +0 -482
- data/spec/extensions/resolv_spec.rb +0 -18
- data/spec/extensions/string_spec.rb +0 -179
- data/spec/formatting/binary/array_spec.rb +0 -26
- data/spec/formatting/binary/base64_spec.rb +0 -50
- data/spec/formatting/binary/float_spec.rb +0 -34
- data/spec/formatting/binary/integer_spec.rb +0 -166
- data/spec/formatting/binary/string_spec.rb +0 -197
- data/spec/formatting/digest/string_spec.rb +0 -82
- data/spec/formatting/html/integer_spec.rb +0 -66
- data/spec/formatting/html/string_spec.rb +0 -103
- data/spec/formatting/http/integer_spec.rb +0 -42
- data/spec/formatting/http/string_spec.rb +0 -76
- data/spec/formatting/sql/string_spec.rb +0 -75
- data/spec/formatting/text/array_spec.rb +0 -105
- data/spec/formatting/text/string_spec.rb +0 -162
- data/spec/fuzzing/extensions/string_spec.rb +0 -87
- data/spec/fuzzing/fuzzer_spec.rb +0 -109
- data/spec/fuzzing/fuzzing_spec.rb +0 -24
- data/spec/fuzzing/mutator_spec.rb +0 -112
- data/spec/fuzzing/repeater_spec.rb +0 -57
- data/spec/fuzzing/template_spec.rb +0 -54
- data/spec/mixin_spec.rb +0 -53
- data/spec/network/dns_spec.rb +0 -201
- data/spec/network/ftp_spec.rb +0 -81
- data/spec/network/http/http_spec.rb +0 -466
- data/spec/network/http/proxy_spec.rb +0 -148
- data/spec/network/network_spec.rb +0 -8
- data/spec/network/proxy_spec.rb +0 -121
- data/spec/network/shared/unix_server.rb +0 -31
- data/spec/network/smtp/email_spec.rb +0 -100
- data/spec/network/ssl_spec.rb +0 -70
- data/spec/network/tcp/proxy_spec.rb +0 -116
- data/spec/network/tcp/tcp_spec.rb +0 -273
- data/spec/network/telnet_spec.rb +0 -67
- data/spec/network/udp/udp_spec.rb +0 -271
- data/spec/network/unix_spec.rb +0 -183
- data/spec/path_spec.rb +0 -86
- data/spec/spec_helper.rb +0 -9
- data/spec/support/inflector_spec.rb +0 -22
- data/spec/support_spec.rb +0 -8
- data/spec/templates/classes/example_erb.rb +0 -11
- data/spec/templates/classes/example_template.rb +0 -35
- data/spec/templates/erb_spec.rb +0 -21
- data/spec/templates/helpers/data/includes/_relative.erb +0 -1
- data/spec/templates/helpers/data/templates/example.erb +0 -1
- data/spec/templates/helpers/data.rb +0 -9
- data/spec/templates/template_spec.rb +0 -54
- data/spec/ui/classes/test_shell.rb +0 -22
- data/spec/ui/output_spec.rb +0 -32
- data/spec/ui/shell_spec.rb +0 -83
- data/spec/wordlist_spec.rb +0 -151
|
@@ -1,1127 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright (c) 2006-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
3
|
-
#
|
|
4
|
-
# This file is part of Ronin Support.
|
|
5
|
-
#
|
|
6
|
-
# Ronin Support is free software: you can redistribute it and/or modify
|
|
7
|
-
# it under the terms of the GNU Lesser General Public License as published
|
|
8
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
# (at your option) any later version.
|
|
10
|
-
#
|
|
11
|
-
# Ronin Support is distributed in the hope that it will be useful,
|
|
12
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
# GNU Lesser General Public License for more details.
|
|
15
|
-
#
|
|
16
|
-
# You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
# along with Ronin Support. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
require 'ronin/network/http/exceptions/unknown_request'
|
|
21
|
-
require 'ronin/network/http/proxy'
|
|
22
|
-
require 'ronin/network/ssl'
|
|
23
|
-
|
|
24
|
-
require 'uri/query_params'
|
|
25
|
-
require 'net/http'
|
|
26
|
-
|
|
27
|
-
begin
|
|
28
|
-
require 'net/https'
|
|
29
|
-
rescue ::LoadError
|
|
30
|
-
$stderr.puts "WARNING: could not load 'net/https'"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
module Ronin
|
|
34
|
-
module Network
|
|
35
|
-
#
|
|
36
|
-
# Provides helper methods for communicating with HTTP Servers.
|
|
37
|
-
#
|
|
38
|
-
module HTTP
|
|
39
|
-
#
|
|
40
|
-
# The Ronin HTTP proxy to use.
|
|
41
|
-
#
|
|
42
|
-
# @return [Proxy]
|
|
43
|
-
# The Ronin HTTP proxy.
|
|
44
|
-
#
|
|
45
|
-
# @note
|
|
46
|
-
# If the `HTTP_PROXY` environment variable is specified, it will
|
|
47
|
-
# be used as the default value.
|
|
48
|
-
#
|
|
49
|
-
# @see Proxy.new
|
|
50
|
-
# @see Proxy.parse
|
|
51
|
-
#
|
|
52
|
-
# @api public
|
|
53
|
-
#
|
|
54
|
-
def self.proxy
|
|
55
|
-
@proxy ||= if ENV['HTTP_PROXY']
|
|
56
|
-
Proxy.parse(ENV['HTTP_PROXY'])
|
|
57
|
-
else
|
|
58
|
-
Proxy.new
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
# Sets the Ronin HTTP proxy to use.
|
|
64
|
-
#
|
|
65
|
-
# @param [Proxy, URI::HTTP, Hash, String] new_proxy
|
|
66
|
-
# The new proxy information to use.
|
|
67
|
-
#
|
|
68
|
-
# @return [Proxy]
|
|
69
|
-
# The new proxy.
|
|
70
|
-
#
|
|
71
|
-
# @raise [ArgumentError]
|
|
72
|
-
# The given proxy information was not a {Proxy}, `URI::HTTP`,
|
|
73
|
-
# `Hash` or {String}.
|
|
74
|
-
#
|
|
75
|
-
# @api public
|
|
76
|
-
#
|
|
77
|
-
def self.proxy=(new_proxy)
|
|
78
|
-
@proxy = Proxy.create(new_proxy)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
#
|
|
82
|
-
# The default Ronin HTTP User-Agent string.
|
|
83
|
-
#
|
|
84
|
-
# @return [String, nil]
|
|
85
|
-
# The default Ronin HTTP User-Agent.
|
|
86
|
-
#
|
|
87
|
-
# @api public
|
|
88
|
-
#
|
|
89
|
-
def self.user_agent
|
|
90
|
-
@user_agent ||= nil
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
#
|
|
94
|
-
# Sets the default Ronin HTTP User-Agent string.
|
|
95
|
-
#
|
|
96
|
-
# @param [String] agent
|
|
97
|
-
# The new User-Agent string to use.
|
|
98
|
-
#
|
|
99
|
-
# @api public
|
|
100
|
-
#
|
|
101
|
-
def self.user_agent=(agent)
|
|
102
|
-
@user_agent = agent
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
#
|
|
106
|
-
# Expands the URL into options.
|
|
107
|
-
#
|
|
108
|
-
# @param [URI::HTTP, String] url
|
|
109
|
-
# The URL to expand.
|
|
110
|
-
#
|
|
111
|
-
# @return [Hash{Symbol => Object}]
|
|
112
|
-
# The options for the URL.
|
|
113
|
-
#
|
|
114
|
-
# @api private
|
|
115
|
-
#
|
|
116
|
-
def self.expand_url(url)
|
|
117
|
-
new_options = {}
|
|
118
|
-
|
|
119
|
-
url = case url
|
|
120
|
-
when URI
|
|
121
|
-
url
|
|
122
|
-
when Hash
|
|
123
|
-
URI::HTTP.build(url)
|
|
124
|
-
else
|
|
125
|
-
URI(url.to_s)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
new_options[:ssl] = {} if url.scheme == 'https'
|
|
129
|
-
|
|
130
|
-
new_options[:host] = url.host
|
|
131
|
-
new_options[:port] = url.port
|
|
132
|
-
|
|
133
|
-
new_options[:user] = url.user if url.user
|
|
134
|
-
new_options[:password] = url.password if url.password
|
|
135
|
-
|
|
136
|
-
new_options[:path] = unless url.path.empty?
|
|
137
|
-
url.path
|
|
138
|
-
else
|
|
139
|
-
'/'
|
|
140
|
-
end
|
|
141
|
-
new_options[:path] += "?#{url.query}" if url.query
|
|
142
|
-
|
|
143
|
-
return new_options
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
#
|
|
147
|
-
# Expands the given HTTP options.
|
|
148
|
-
#
|
|
149
|
-
# @param [Hash] options
|
|
150
|
-
# HTTP options.
|
|
151
|
-
#
|
|
152
|
-
# @option options [String, URI::HTTP, URI::HTTPS] :url
|
|
153
|
-
# The URL to request.
|
|
154
|
-
#
|
|
155
|
-
# @option options [String] :host
|
|
156
|
-
# The host to connect to.
|
|
157
|
-
#
|
|
158
|
-
# @option options [String] :port (Net::HTTP.default_port)
|
|
159
|
-
# The port to connect to.
|
|
160
|
-
#
|
|
161
|
-
# @option options [String] :user
|
|
162
|
-
# The user to authenticate as.
|
|
163
|
-
#
|
|
164
|
-
# @option options [String] :password
|
|
165
|
-
# The password to authenticate with.
|
|
166
|
-
#
|
|
167
|
-
# @option options [String] :path ('/')
|
|
168
|
-
# The path to request.
|
|
169
|
-
#
|
|
170
|
-
# @option options [String, Hash] :proxy (HTTP.proxy)
|
|
171
|
-
# The Proxy information.
|
|
172
|
-
#
|
|
173
|
-
# @return [Hash]
|
|
174
|
-
# The expanded version of options.
|
|
175
|
-
#
|
|
176
|
-
# @api private
|
|
177
|
-
#
|
|
178
|
-
def self.expand_options(options={})
|
|
179
|
-
new_options = options.dup
|
|
180
|
-
|
|
181
|
-
new_options[:port] ||= Net::HTTP.default_port
|
|
182
|
-
new_options[:path] ||= '/'
|
|
183
|
-
|
|
184
|
-
if new_options[:ssl] == true
|
|
185
|
-
new_options[:ssl] = {}
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
if (url = new_options.delete(:url))
|
|
189
|
-
new_options.merge!(HTTP.expand_url(url))
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
new_options[:proxy] = if new_options.has_key?(:proxy)
|
|
193
|
-
HTTP::Proxy.create(new_options[:proxy])
|
|
194
|
-
else
|
|
195
|
-
HTTP.proxy
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
return new_options
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
#
|
|
202
|
-
# Converts an underscored, dashed, lowercase or uppercase HTTP header
|
|
203
|
-
# name to the standard camel-case HTTP header name.
|
|
204
|
-
#
|
|
205
|
-
# @param [Symbol, String] name
|
|
206
|
-
# The unformatted HTTP header name.
|
|
207
|
-
#
|
|
208
|
-
# @return [String]
|
|
209
|
-
# The camel-case HTTP header name.
|
|
210
|
-
#
|
|
211
|
-
# @api private
|
|
212
|
-
#
|
|
213
|
-
def self.header_name(name)
|
|
214
|
-
words = name.to_s.split(/[\s+_-]/)
|
|
215
|
-
|
|
216
|
-
words.each { |word| word.capitalize! }
|
|
217
|
-
return words.join('-')
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
#
|
|
221
|
-
# Converts underscored, dashed, lowercase and uppercase HTTP headers
|
|
222
|
-
# to standard camel-cased HTTP headers.
|
|
223
|
-
#
|
|
224
|
-
# @param [Hash{Symbol,String => String}] options
|
|
225
|
-
# Ronin HTTP headers.
|
|
226
|
-
#
|
|
227
|
-
# @return [Hash]
|
|
228
|
-
# The camel-cased HTTP headers created from the given options.
|
|
229
|
-
#
|
|
230
|
-
# @api private
|
|
231
|
-
#
|
|
232
|
-
def self.headers(options={})
|
|
233
|
-
headers = {}
|
|
234
|
-
|
|
235
|
-
if user_agent
|
|
236
|
-
headers['User-Agent'] = user_agent
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
if options
|
|
240
|
-
options.each do |name,value|
|
|
241
|
-
headers[HTTP.header_name(name)] = value.to_s
|
|
242
|
-
end
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
return headers
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
#
|
|
249
|
-
# Creates a specific type of HTTP request object.
|
|
250
|
-
#
|
|
251
|
-
# @param [Hash] options
|
|
252
|
-
# The HTTP options for the request.
|
|
253
|
-
#
|
|
254
|
-
# @option options [Symbol, String] :method
|
|
255
|
-
# The HTTP method to use for the request.
|
|
256
|
-
#
|
|
257
|
-
# @option options [String] :path ('/')
|
|
258
|
-
# The path to request.
|
|
259
|
-
#
|
|
260
|
-
# @option options [String] :query
|
|
261
|
-
# The query-string to append to the request path.
|
|
262
|
-
#
|
|
263
|
-
# @option options [String] :query_params
|
|
264
|
-
# The query-params to append to the request path.
|
|
265
|
-
#
|
|
266
|
-
# @option options [String] :body
|
|
267
|
-
# The body of the request.
|
|
268
|
-
#
|
|
269
|
-
# @option options [Hash, String] :form_data
|
|
270
|
-
# The form data that may be sent in the body of the request.
|
|
271
|
-
#
|
|
272
|
-
# @option options [String] :user
|
|
273
|
-
# The user to authenticate as.
|
|
274
|
-
#
|
|
275
|
-
# @option options [String] :password
|
|
276
|
-
# The password to authenticate with.
|
|
277
|
-
#
|
|
278
|
-
# @option options [Hash{Symbol,String => String}] :headers
|
|
279
|
-
# Additional HTTP headers to use for the request.
|
|
280
|
-
#
|
|
281
|
-
# @return [HTTP::Request]
|
|
282
|
-
# The new HTTP Request object.
|
|
283
|
-
#
|
|
284
|
-
# @raise [ArgumentError]
|
|
285
|
-
# The `:method` option must be specified.
|
|
286
|
-
#
|
|
287
|
-
# @raise [UnknownRequest]
|
|
288
|
-
# The `:method` option did not match a known Net::HTTP request
|
|
289
|
-
# class.
|
|
290
|
-
#
|
|
291
|
-
# @see HTTP.expand_options
|
|
292
|
-
#
|
|
293
|
-
# @api private
|
|
294
|
-
#
|
|
295
|
-
def self.request(options={})
|
|
296
|
-
unless options[:method]
|
|
297
|
-
raise(ArgumentError,"the :method option must be specified")
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
name = options[:method].to_s.capitalize
|
|
301
|
-
|
|
302
|
-
unless Net::HTTP.const_defined?(name)
|
|
303
|
-
raise(UnknownRequest,"unknown HTTP request type #{name.dump}")
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
headers = headers(options[:headers])
|
|
307
|
-
path = (options[:path] || '/').to_s
|
|
308
|
-
query = if options[:query]
|
|
309
|
-
URI.escape(options[:query])
|
|
310
|
-
elsif options[:query_params]
|
|
311
|
-
URI::QueryParams.dump(options[:query_params])
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
if query
|
|
315
|
-
# append the query-string onto the path
|
|
316
|
-
path += if path.include?('?')
|
|
317
|
-
"&#{query}"
|
|
318
|
-
else
|
|
319
|
-
"?#{query}"
|
|
320
|
-
end
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
request = Net::HTTP.const_get(name).new(path,headers)
|
|
324
|
-
|
|
325
|
-
if request.request_body_permitted?
|
|
326
|
-
if options[:form_data]
|
|
327
|
-
request.set_form_data(options[:form_data])
|
|
328
|
-
elsif options[:body]
|
|
329
|
-
request.body = options[:body]
|
|
330
|
-
end
|
|
331
|
-
end
|
|
332
|
-
|
|
333
|
-
if options[:user]
|
|
334
|
-
user = options[:user].to_s
|
|
335
|
-
password = if options[:password]
|
|
336
|
-
options[:password].to_s
|
|
337
|
-
end
|
|
338
|
-
|
|
339
|
-
request.basic_auth(user,password)
|
|
340
|
-
end
|
|
341
|
-
|
|
342
|
-
return request
|
|
343
|
-
end
|
|
344
|
-
|
|
345
|
-
#
|
|
346
|
-
# Starts a HTTP connection with the server.
|
|
347
|
-
#
|
|
348
|
-
# @param [Hash] options
|
|
349
|
-
# Additional options
|
|
350
|
-
#
|
|
351
|
-
# @option options [String, URI::HTTP] :url
|
|
352
|
-
# The full URL to request.
|
|
353
|
-
#
|
|
354
|
-
# @option options [String] :host
|
|
355
|
-
# The host the HTTP server is running on.
|
|
356
|
-
#
|
|
357
|
-
# @option options [Integer] :port (Net::HTTP.default_port)
|
|
358
|
-
# The port the HTTP server is listening on.
|
|
359
|
-
#
|
|
360
|
-
# @option options [String, Hash] :proxy (HTTP.proxy)
|
|
361
|
-
# A Hash of proxy settings to use when connecting to the HTTP server.
|
|
362
|
-
#
|
|
363
|
-
# @option options [String] :user
|
|
364
|
-
# The user to authenticate with when connecting to the HTTP server.
|
|
365
|
-
#
|
|
366
|
-
# @option options [String] :password
|
|
367
|
-
# The password to authenticate with when connecting to the HTTP server.
|
|
368
|
-
#
|
|
369
|
-
# @option options [Boolean, Hash] :ssl
|
|
370
|
-
# Enables SSL for the HTTP connection.
|
|
371
|
-
#
|
|
372
|
-
# @option :ssl [Symbol] :verify
|
|
373
|
-
# Specifies the SSL certificate verification mode.
|
|
374
|
-
#
|
|
375
|
-
# @yield [http]
|
|
376
|
-
# If a block is given, it will be passed the newly created HTTP
|
|
377
|
-
# session object.
|
|
378
|
-
#
|
|
379
|
-
# @yieldparam [Net::HTTP] http
|
|
380
|
-
# The newly created HTTP session.
|
|
381
|
-
#
|
|
382
|
-
# @return [Net::HTTP]
|
|
383
|
-
# The HTTP session object.
|
|
384
|
-
#
|
|
385
|
-
# @api public
|
|
386
|
-
#
|
|
387
|
-
def http_connect(options={},&block)
|
|
388
|
-
options = HTTP.expand_options(options)
|
|
389
|
-
|
|
390
|
-
host = options[:host].to_s
|
|
391
|
-
port = options[:port]
|
|
392
|
-
proxy = options[:proxy]
|
|
393
|
-
proxy_host = if (proxy && proxy[:host])
|
|
394
|
-
proxy[:host].to_s
|
|
395
|
-
end
|
|
396
|
-
|
|
397
|
-
http = Net::HTTP::Proxy(
|
|
398
|
-
proxy_host,
|
|
399
|
-
proxy[:port],
|
|
400
|
-
proxy[:user],
|
|
401
|
-
proxy[:password]
|
|
402
|
-
).new(host,port)
|
|
403
|
-
|
|
404
|
-
if options[:ssl]
|
|
405
|
-
http.use_ssl = true
|
|
406
|
-
http.verify_mode = SSL::VERIFY[options[:ssl][:verify]]
|
|
407
|
-
end
|
|
408
|
-
|
|
409
|
-
http.start()
|
|
410
|
-
|
|
411
|
-
if block
|
|
412
|
-
if block.arity == 2
|
|
413
|
-
block.call(http,options)
|
|
414
|
-
else
|
|
415
|
-
block.call(http)
|
|
416
|
-
end
|
|
417
|
-
end
|
|
418
|
-
|
|
419
|
-
return http
|
|
420
|
-
end
|
|
421
|
-
|
|
422
|
-
#
|
|
423
|
-
# Creates a new temporary HTTP session with the server.
|
|
424
|
-
#
|
|
425
|
-
# @param [Hash] options
|
|
426
|
-
# Additional options
|
|
427
|
-
#
|
|
428
|
-
# @option options [String, URI::HTTP] :url
|
|
429
|
-
# The full URL to request.
|
|
430
|
-
#
|
|
431
|
-
# @option options [String] :host
|
|
432
|
-
# The host the HTTP server is running on.
|
|
433
|
-
#
|
|
434
|
-
# @option options [Integer] :port (Net::HTTP.default_port)
|
|
435
|
-
# The port the HTTP server is listening on.
|
|
436
|
-
#
|
|
437
|
-
# @option options [String] :user
|
|
438
|
-
# The user to authenticate with when connecting to the HTTP server.
|
|
439
|
-
#
|
|
440
|
-
# @option options [String] :password
|
|
441
|
-
# The password to authenticate with when connecting to the HTTP server.
|
|
442
|
-
#
|
|
443
|
-
# @option options [String, Hash] :proxy (HTTP.proxy)
|
|
444
|
-
# A Hash of proxy settings to use when connecting to the HTTP server.
|
|
445
|
-
#
|
|
446
|
-
# @option options [Boolean, Hash] :ssl
|
|
447
|
-
# Enables SSL for the HTTP connection.
|
|
448
|
-
#
|
|
449
|
-
# @option :ssl [Symbol] :verify
|
|
450
|
-
# Specifies the SSL certificate verification mode.
|
|
451
|
-
#
|
|
452
|
-
# @yield [http]
|
|
453
|
-
# If a block is given, it will be passed the newly created HTTP
|
|
454
|
-
# session object.
|
|
455
|
-
#
|
|
456
|
-
# @yieldparam [Net::HTTP] http
|
|
457
|
-
# The newly created HTTP session.
|
|
458
|
-
#
|
|
459
|
-
# @return [nil]
|
|
460
|
-
#
|
|
461
|
-
# @see #http_connect
|
|
462
|
-
#
|
|
463
|
-
# @api public
|
|
464
|
-
#
|
|
465
|
-
def http_session(options={},&block)
|
|
466
|
-
http_connect(options) do |http,expanded_options|
|
|
467
|
-
if block
|
|
468
|
-
if block.arity == 2
|
|
469
|
-
block.call(http,expanded_options)
|
|
470
|
-
else
|
|
471
|
-
block.call(http)
|
|
472
|
-
end
|
|
473
|
-
end
|
|
474
|
-
|
|
475
|
-
http.finish
|
|
476
|
-
end
|
|
477
|
-
|
|
478
|
-
return nil
|
|
479
|
-
end
|
|
480
|
-
|
|
481
|
-
#
|
|
482
|
-
# Connects to the HTTP server and sends an HTTP Request.
|
|
483
|
-
#
|
|
484
|
-
# @param [Hash] options
|
|
485
|
-
# Additional options.
|
|
486
|
-
#
|
|
487
|
-
# @option options [Symbol, String] :method
|
|
488
|
-
# The HTTP method to use in the request.
|
|
489
|
-
#
|
|
490
|
-
# @option options [String] :path
|
|
491
|
-
# The path to request from the HTTP server.
|
|
492
|
-
#
|
|
493
|
-
# @option options [Hash] :headers
|
|
494
|
-
# The Hash of the HTTP headers to send with the request.
|
|
495
|
-
# May contain either Strings or Symbols, lower-case or camel-case keys.
|
|
496
|
-
#
|
|
497
|
-
# @option options [String] :body
|
|
498
|
-
# The body of the request.
|
|
499
|
-
#
|
|
500
|
-
# @option options [Hash, String] :form_data
|
|
501
|
-
# The form data that may be sent in the body of the request.
|
|
502
|
-
#
|
|
503
|
-
# @yield [request, (options)]
|
|
504
|
-
# If a block is given, it will be passed the HTTP request object.
|
|
505
|
-
# If the block has an arity of 2, it will also be passed the expanded
|
|
506
|
-
# version of the given _options_.
|
|
507
|
-
#
|
|
508
|
-
# @yieldparam [Net::HTTP::Request] request
|
|
509
|
-
# The HTTP request object to use in the request.
|
|
510
|
-
#
|
|
511
|
-
# @yieldparam [Hash] options
|
|
512
|
-
# The expanded version of the given _options_.
|
|
513
|
-
#
|
|
514
|
-
# @return [Net::HTTP::Response]
|
|
515
|
-
# The response of the HTTP request.
|
|
516
|
-
#
|
|
517
|
-
# @see #http_session
|
|
518
|
-
#
|
|
519
|
-
# @api public
|
|
520
|
-
#
|
|
521
|
-
def http_request(options={},&block)
|
|
522
|
-
response = nil
|
|
523
|
-
|
|
524
|
-
http_session(options) do |http,expanded_options|
|
|
525
|
-
req = HTTP.request(expanded_options)
|
|
526
|
-
|
|
527
|
-
if block
|
|
528
|
-
if block.arity == 2
|
|
529
|
-
block.call(req,expanded_options)
|
|
530
|
-
else
|
|
531
|
-
block.call(req)
|
|
532
|
-
end
|
|
533
|
-
end
|
|
534
|
-
|
|
535
|
-
response = http.request(req)
|
|
536
|
-
end
|
|
537
|
-
|
|
538
|
-
return response
|
|
539
|
-
end
|
|
540
|
-
|
|
541
|
-
#
|
|
542
|
-
# Returns the Status Code of the Response.
|
|
543
|
-
#
|
|
544
|
-
# @param [Hash] options
|
|
545
|
-
# Additional options.
|
|
546
|
-
#
|
|
547
|
-
# @option options [Symbol, String] :method (:head)
|
|
548
|
-
# The method to use for the request.
|
|
549
|
-
#
|
|
550
|
-
# @return [Integer]
|
|
551
|
-
# The HTTP Response Status.
|
|
552
|
-
#
|
|
553
|
-
# @see #http_request
|
|
554
|
-
#
|
|
555
|
-
# @since 0.2.0
|
|
556
|
-
#
|
|
557
|
-
# @api public
|
|
558
|
-
#
|
|
559
|
-
def http_status(options={})
|
|
560
|
-
options = {:method => :head}.merge(options)
|
|
561
|
-
|
|
562
|
-
return http_request(options).code.to_i
|
|
563
|
-
end
|
|
564
|
-
|
|
565
|
-
#
|
|
566
|
-
# Checks if the response has an HTTP OK status code.
|
|
567
|
-
#
|
|
568
|
-
# @param [Hash] options
|
|
569
|
-
# Additional options.
|
|
570
|
-
#
|
|
571
|
-
# @option options [Symbol, String] :method (:head)
|
|
572
|
-
# The method to use for the request.
|
|
573
|
-
#
|
|
574
|
-
# @return [Boolean]
|
|
575
|
-
# Specifies whether the response had an HTTP OK status code or not.
|
|
576
|
-
#
|
|
577
|
-
# @see #http_status
|
|
578
|
-
#
|
|
579
|
-
# @api public
|
|
580
|
-
#
|
|
581
|
-
def http_ok?(options={})
|
|
582
|
-
http_status(options) == 200
|
|
583
|
-
end
|
|
584
|
-
|
|
585
|
-
#
|
|
586
|
-
# Sends a HTTP Head request and returns the HTTP Server header.
|
|
587
|
-
#
|
|
588
|
-
# @param [Hash] options
|
|
589
|
-
# Additional options.
|
|
590
|
-
#
|
|
591
|
-
# @option options [Symbol, String] :method (:head)
|
|
592
|
-
# The method to use for the request.
|
|
593
|
-
#
|
|
594
|
-
# @return [String]
|
|
595
|
-
# The HTTP `Server` header.
|
|
596
|
-
#
|
|
597
|
-
# @see #http_request
|
|
598
|
-
#
|
|
599
|
-
# @api public
|
|
600
|
-
#
|
|
601
|
-
def http_server(options={})
|
|
602
|
-
options = {:method => :head}.merge(options)
|
|
603
|
-
|
|
604
|
-
return http_request(options)['server']
|
|
605
|
-
end
|
|
606
|
-
|
|
607
|
-
#
|
|
608
|
-
# Sends an HTTP Head request and returns the HTTP X-Powered-By header.
|
|
609
|
-
#
|
|
610
|
-
# @param [Hash] options
|
|
611
|
-
# Additional options.
|
|
612
|
-
#
|
|
613
|
-
# @option options [Symbol, String] :method (:get)
|
|
614
|
-
# The method to use for the request.
|
|
615
|
-
#
|
|
616
|
-
# @return [String]
|
|
617
|
-
# The HTTP `X-Powered-By` header.
|
|
618
|
-
#
|
|
619
|
-
# @see #http_request
|
|
620
|
-
#
|
|
621
|
-
# @api public
|
|
622
|
-
#
|
|
623
|
-
def http_powered_by(options={})
|
|
624
|
-
options = {:method => :get}.merge(options)
|
|
625
|
-
|
|
626
|
-
return http_request(options)['x-powered-by']
|
|
627
|
-
end
|
|
628
|
-
|
|
629
|
-
#
|
|
630
|
-
# Performs an HTTP Copy request.
|
|
631
|
-
#
|
|
632
|
-
# @param [Hash] options
|
|
633
|
-
# Additional options.
|
|
634
|
-
#
|
|
635
|
-
# @yield [response]
|
|
636
|
-
# If a block is given, it will be passed the response received
|
|
637
|
-
# from the request.
|
|
638
|
-
#
|
|
639
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
640
|
-
# The HTTP response object.
|
|
641
|
-
#
|
|
642
|
-
# @return [Net::HTTP::Response]
|
|
643
|
-
# The response of the HTTP request.
|
|
644
|
-
#
|
|
645
|
-
# @see #http_request
|
|
646
|
-
#
|
|
647
|
-
# @api public
|
|
648
|
-
#
|
|
649
|
-
def http_copy(options={})
|
|
650
|
-
response = http_request(options.merge(:method => :copy))
|
|
651
|
-
|
|
652
|
-
yield response if block_given?
|
|
653
|
-
return response
|
|
654
|
-
end
|
|
655
|
-
|
|
656
|
-
#
|
|
657
|
-
# Performs an HTTP Delete request.
|
|
658
|
-
#
|
|
659
|
-
# @param [Hash] options
|
|
660
|
-
# Additional options.
|
|
661
|
-
#
|
|
662
|
-
# @yield [response]
|
|
663
|
-
# If a block is given, it will be passed the response received from
|
|
664
|
-
# the request.
|
|
665
|
-
#
|
|
666
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
667
|
-
# The HTTP response object.
|
|
668
|
-
#
|
|
669
|
-
# @return [Net::HTTP::Response]
|
|
670
|
-
# The response of the HTTP request.
|
|
671
|
-
#
|
|
672
|
-
# @see #http_request
|
|
673
|
-
#
|
|
674
|
-
# @api public
|
|
675
|
-
#
|
|
676
|
-
def http_delete(options={},&block)
|
|
677
|
-
original_headers = options[:headers]
|
|
678
|
-
|
|
679
|
-
# set the HTTP Depth header
|
|
680
|
-
options[:headers] = {:depth => 'Infinity'}
|
|
681
|
-
|
|
682
|
-
if original_headers
|
|
683
|
-
options[:header].merge!(original_headers)
|
|
684
|
-
end
|
|
685
|
-
|
|
686
|
-
response = http_request(options.merge(:method => :delete))
|
|
687
|
-
|
|
688
|
-
yield response if block_given?
|
|
689
|
-
return response
|
|
690
|
-
end
|
|
691
|
-
|
|
692
|
-
#
|
|
693
|
-
# Performs an HTTP Get request.
|
|
694
|
-
#
|
|
695
|
-
# @param [Hash] options
|
|
696
|
-
# Additional options.
|
|
697
|
-
#
|
|
698
|
-
# @yield [response]
|
|
699
|
-
# If a block is given, it will be passed the response received from
|
|
700
|
-
# the request.
|
|
701
|
-
#
|
|
702
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
703
|
-
# The HTTP response object.
|
|
704
|
-
#
|
|
705
|
-
# @return [Net::HTTP::Response]
|
|
706
|
-
# The response of the HTTP request.
|
|
707
|
-
#
|
|
708
|
-
# @see #http_request
|
|
709
|
-
#
|
|
710
|
-
# @api public
|
|
711
|
-
#
|
|
712
|
-
def http_get(options={},&block)
|
|
713
|
-
response = http_request(options.merge(:method => :get))
|
|
714
|
-
|
|
715
|
-
yield response if block_given?
|
|
716
|
-
return response
|
|
717
|
-
end
|
|
718
|
-
|
|
719
|
-
#
|
|
720
|
-
# Performs an HTTP Get request and returns the Response Headers.
|
|
721
|
-
#
|
|
722
|
-
# @param [Hash] options
|
|
723
|
-
# Additional options.
|
|
724
|
-
#
|
|
725
|
-
# @return [Hash{String => Array<String>}]
|
|
726
|
-
# The Headers of the HTTP response.
|
|
727
|
-
#
|
|
728
|
-
# @see #http_get
|
|
729
|
-
#
|
|
730
|
-
# @since 0.2.0
|
|
731
|
-
#
|
|
732
|
-
# @api public
|
|
733
|
-
#
|
|
734
|
-
def http_get_headers(options={})
|
|
735
|
-
headers = {}
|
|
736
|
-
|
|
737
|
-
http_get(options).each_header do |name,value|
|
|
738
|
-
headers[HTTP.header_name(name)] = value
|
|
739
|
-
end
|
|
740
|
-
|
|
741
|
-
return headers
|
|
742
|
-
end
|
|
743
|
-
|
|
744
|
-
#
|
|
745
|
-
# Performs an HTTP Get request and returns the Respond Body.
|
|
746
|
-
#
|
|
747
|
-
# @param [Hash] options
|
|
748
|
-
# Additional options.
|
|
749
|
-
#
|
|
750
|
-
# @return [String]
|
|
751
|
-
# The body of the HTTP response.
|
|
752
|
-
#
|
|
753
|
-
# @see #http_get
|
|
754
|
-
#
|
|
755
|
-
# @api public
|
|
756
|
-
#
|
|
757
|
-
def http_get_body(options={})
|
|
758
|
-
http_get(options).body
|
|
759
|
-
end
|
|
760
|
-
|
|
761
|
-
#
|
|
762
|
-
# Performs an HTTP Head request.
|
|
763
|
-
#
|
|
764
|
-
# @param [Hash] options
|
|
765
|
-
# Additional options.
|
|
766
|
-
#
|
|
767
|
-
# @yield [response]
|
|
768
|
-
# If a block is given, it will be passed the response received from
|
|
769
|
-
# the request.
|
|
770
|
-
#
|
|
771
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
772
|
-
# The HTTP response object.
|
|
773
|
-
#
|
|
774
|
-
# @return [Net::HTTP::Response]
|
|
775
|
-
# The response of the HTTP request.
|
|
776
|
-
#
|
|
777
|
-
# @see #http_request
|
|
778
|
-
#
|
|
779
|
-
# @api public
|
|
780
|
-
#
|
|
781
|
-
def http_head(options={},&block)
|
|
782
|
-
response = http_request(options.merge(:method => :head))
|
|
783
|
-
|
|
784
|
-
yield response if block_given?
|
|
785
|
-
return response
|
|
786
|
-
end
|
|
787
|
-
|
|
788
|
-
#
|
|
789
|
-
# Performs an HTTP Lock request.
|
|
790
|
-
#
|
|
791
|
-
# @param [Hash] options
|
|
792
|
-
# Additional options.
|
|
793
|
-
#
|
|
794
|
-
# @yield [response]
|
|
795
|
-
# If a block is given, it will be passed the response received from
|
|
796
|
-
# the request.
|
|
797
|
-
#
|
|
798
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
799
|
-
# The HTTP response object.
|
|
800
|
-
#
|
|
801
|
-
# @return [Net::HTTP::Response]
|
|
802
|
-
# The response of the HTTP request.
|
|
803
|
-
#
|
|
804
|
-
# @see #http_request
|
|
805
|
-
#
|
|
806
|
-
# @api public
|
|
807
|
-
#
|
|
808
|
-
def http_lock(options={},&block)
|
|
809
|
-
response = http_request(options.merge(:method => :lock))
|
|
810
|
-
|
|
811
|
-
yield response if block_given?
|
|
812
|
-
return response
|
|
813
|
-
end
|
|
814
|
-
|
|
815
|
-
#
|
|
816
|
-
# Performs an HTTP Mkcol request.
|
|
817
|
-
#
|
|
818
|
-
# @param [Hash] options
|
|
819
|
-
# Additional options.
|
|
820
|
-
#
|
|
821
|
-
# @yield [response]
|
|
822
|
-
# If a block is given, it will be passed the response received from
|
|
823
|
-
# the request.
|
|
824
|
-
#
|
|
825
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
826
|
-
# The HTTP response object.
|
|
827
|
-
#
|
|
828
|
-
# @return [Net::HTTP::Response]
|
|
829
|
-
# The response of the HTTP request.
|
|
830
|
-
#
|
|
831
|
-
# @see #http_request
|
|
832
|
-
#
|
|
833
|
-
# @api public
|
|
834
|
-
#
|
|
835
|
-
def http_mkcol(options={},&block)
|
|
836
|
-
response = http_request(options.merge(:method => :mkcol))
|
|
837
|
-
|
|
838
|
-
yield response if block_given?
|
|
839
|
-
return response
|
|
840
|
-
end
|
|
841
|
-
|
|
842
|
-
#
|
|
843
|
-
# Performs an HTTP Move request.
|
|
844
|
-
#
|
|
845
|
-
# @param [Hash] options
|
|
846
|
-
# Additional options.
|
|
847
|
-
#
|
|
848
|
-
# @yield [response]
|
|
849
|
-
# If a block is given, it will be passed the response received from
|
|
850
|
-
# the request.
|
|
851
|
-
#
|
|
852
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
853
|
-
# The HTTP response object.
|
|
854
|
-
#
|
|
855
|
-
# @return [Net::HTTP::Response]
|
|
856
|
-
# The response of the HTTP request.
|
|
857
|
-
#
|
|
858
|
-
# @see #http_request
|
|
859
|
-
#
|
|
860
|
-
# @api public
|
|
861
|
-
#
|
|
862
|
-
def http_move(options={},&block)
|
|
863
|
-
response = http_request(options.merge(:method => :move))
|
|
864
|
-
|
|
865
|
-
yield response if block_given?
|
|
866
|
-
return response
|
|
867
|
-
end
|
|
868
|
-
|
|
869
|
-
#
|
|
870
|
-
# Performs an HTTP Options request.
|
|
871
|
-
#
|
|
872
|
-
# @param [Hash] options
|
|
873
|
-
# Additional options.
|
|
874
|
-
#
|
|
875
|
-
# @yield [response]
|
|
876
|
-
# If a block is given, it will be passed the response received from
|
|
877
|
-
# the request.
|
|
878
|
-
#
|
|
879
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
880
|
-
# The HTTP response object.
|
|
881
|
-
#
|
|
882
|
-
# @return [Net::HTTP::Response]
|
|
883
|
-
# The response of the HTTP request.
|
|
884
|
-
#
|
|
885
|
-
# @see #http_request
|
|
886
|
-
#
|
|
887
|
-
# @api public
|
|
888
|
-
#
|
|
889
|
-
def http_options(options={},&block)
|
|
890
|
-
response = http_request(options.merge(:method => :options))
|
|
891
|
-
|
|
892
|
-
yield response if block_given?
|
|
893
|
-
return response
|
|
894
|
-
end
|
|
895
|
-
|
|
896
|
-
#
|
|
897
|
-
# Performs an HTTP Post request.
|
|
898
|
-
#
|
|
899
|
-
# @param [Hash] options
|
|
900
|
-
# Additional options.
|
|
901
|
-
#
|
|
902
|
-
# @option options [Hash, String] :form_data
|
|
903
|
-
# The form data to send with the HTTP Post request.
|
|
904
|
-
#
|
|
905
|
-
# @yield [response]
|
|
906
|
-
# If a block is given, it will be passed the response received from
|
|
907
|
-
# the request.
|
|
908
|
-
#
|
|
909
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
910
|
-
# The HTTP response object.
|
|
911
|
-
#
|
|
912
|
-
# @return [Net::HTTP::Response]
|
|
913
|
-
# The response of the HTTP request.
|
|
914
|
-
#
|
|
915
|
-
# @see #http_request
|
|
916
|
-
#
|
|
917
|
-
# @api public
|
|
918
|
-
#
|
|
919
|
-
def http_post(options={},&block)
|
|
920
|
-
response = http_request(options.merge(:method => :post))
|
|
921
|
-
|
|
922
|
-
yield response if block_given?
|
|
923
|
-
return response
|
|
924
|
-
end
|
|
925
|
-
|
|
926
|
-
#
|
|
927
|
-
# Performs an HTTP Post request and returns the Response Headers.
|
|
928
|
-
#
|
|
929
|
-
# @param [Hash] options
|
|
930
|
-
# Additional options.
|
|
931
|
-
#
|
|
932
|
-
# @option options [Hash, String] :form_data
|
|
933
|
-
# The form data to send with the HTTP Post request.
|
|
934
|
-
#
|
|
935
|
-
# @return [Hash{String => Array<String>}]
|
|
936
|
-
# The headers of the HTTP response.
|
|
937
|
-
#
|
|
938
|
-
# @see #http_post
|
|
939
|
-
#
|
|
940
|
-
# @since 0.2.0
|
|
941
|
-
#
|
|
942
|
-
# @api public
|
|
943
|
-
#
|
|
944
|
-
def http_post_headers(options={})
|
|
945
|
-
headers = {}
|
|
946
|
-
|
|
947
|
-
http_post(options).each_header do |name,value|
|
|
948
|
-
headers[HTTP.header_name(name)] = value
|
|
949
|
-
end
|
|
950
|
-
|
|
951
|
-
return headers
|
|
952
|
-
end
|
|
953
|
-
|
|
954
|
-
#
|
|
955
|
-
# Performs an HTTP Post request and returns the Response Body.
|
|
956
|
-
#
|
|
957
|
-
# @param [Hash] options
|
|
958
|
-
# Additional options.
|
|
959
|
-
#
|
|
960
|
-
# @option options [Hash, String] :form_data
|
|
961
|
-
# The form data to send with the HTTP Post request.
|
|
962
|
-
#
|
|
963
|
-
# @return [String]
|
|
964
|
-
# The body of the HTTP response.
|
|
965
|
-
#
|
|
966
|
-
# @see #http_post
|
|
967
|
-
#
|
|
968
|
-
# @api public
|
|
969
|
-
#
|
|
970
|
-
def http_post_body(options={})
|
|
971
|
-
http_post(options).body
|
|
972
|
-
end
|
|
973
|
-
|
|
974
|
-
#
|
|
975
|
-
# Performs an HTTP PUT request.
|
|
976
|
-
#
|
|
977
|
-
# @param [Hash] options
|
|
978
|
-
# Additional options.
|
|
979
|
-
#
|
|
980
|
-
# @option options [String] :body
|
|
981
|
-
# The body for the request.
|
|
982
|
-
#
|
|
983
|
-
# @option options [Hash, String] :form_data
|
|
984
|
-
# The form data to send with the HTTP PUT request.
|
|
985
|
-
#
|
|
986
|
-
# @yield [response]
|
|
987
|
-
# If a block is given, it will be passed the response received from
|
|
988
|
-
# the request.
|
|
989
|
-
#
|
|
990
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
991
|
-
# The HTTP response object.
|
|
992
|
-
#
|
|
993
|
-
# @return [Net::HTTP::Response]
|
|
994
|
-
# The response of the HTTP request.
|
|
995
|
-
#
|
|
996
|
-
# @see #http_request
|
|
997
|
-
#
|
|
998
|
-
# @since 0.4.0
|
|
999
|
-
#
|
|
1000
|
-
# @api public
|
|
1001
|
-
#
|
|
1002
|
-
def http_put(options={})
|
|
1003
|
-
response = http_request(options.merge(:method => :put))
|
|
1004
|
-
|
|
1005
|
-
yield response if block_given?
|
|
1006
|
-
return response
|
|
1007
|
-
end
|
|
1008
|
-
|
|
1009
|
-
#
|
|
1010
|
-
# Performs an HTTP Propfind request.
|
|
1011
|
-
#
|
|
1012
|
-
# @param [Hash] options
|
|
1013
|
-
# Additional options.
|
|
1014
|
-
#
|
|
1015
|
-
# @yield [response]
|
|
1016
|
-
# If a block is given, it will be passed the response received from
|
|
1017
|
-
# the request.
|
|
1018
|
-
#
|
|
1019
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
1020
|
-
# The HTTP response object.
|
|
1021
|
-
#
|
|
1022
|
-
# @return [Net::HTTP::Response]
|
|
1023
|
-
# The response of the HTTP request.
|
|
1024
|
-
#
|
|
1025
|
-
# @see #http_request
|
|
1026
|
-
#
|
|
1027
|
-
# @api public
|
|
1028
|
-
#
|
|
1029
|
-
def http_prop_find(options={},&block)
|
|
1030
|
-
original_headers = options[:headers]
|
|
1031
|
-
|
|
1032
|
-
# set the HTTP Depth header
|
|
1033
|
-
options[:headers] = {:depth => '0'}
|
|
1034
|
-
|
|
1035
|
-
if original_headers
|
|
1036
|
-
options[:header].merge!(original_headers)
|
|
1037
|
-
end
|
|
1038
|
-
|
|
1039
|
-
response = http_request(options.merge(:method => :propfind))
|
|
1040
|
-
|
|
1041
|
-
yield response if block_given?
|
|
1042
|
-
return response
|
|
1043
|
-
end
|
|
1044
|
-
|
|
1045
|
-
#
|
|
1046
|
-
# Performs an HTTP Proppatch request.
|
|
1047
|
-
#
|
|
1048
|
-
# @param [Hash] options
|
|
1049
|
-
# Additional options.
|
|
1050
|
-
#
|
|
1051
|
-
# @yield [response]
|
|
1052
|
-
# If a block is given, it will be passed the response received from
|
|
1053
|
-
# the request.
|
|
1054
|
-
#
|
|
1055
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
1056
|
-
# The HTTP response object.
|
|
1057
|
-
#
|
|
1058
|
-
# @return [Net::HTTP::Response]
|
|
1059
|
-
# The response of the HTTP request.
|
|
1060
|
-
#
|
|
1061
|
-
# @see #http_request
|
|
1062
|
-
#
|
|
1063
|
-
# @api public
|
|
1064
|
-
#
|
|
1065
|
-
def http_prop_patch(options={},&block)
|
|
1066
|
-
response = http_request(options.merge(:method => :proppatch))
|
|
1067
|
-
|
|
1068
|
-
yield response if block_given?
|
|
1069
|
-
return response
|
|
1070
|
-
end
|
|
1071
|
-
|
|
1072
|
-
#
|
|
1073
|
-
# Performs an HTTP Trace request.
|
|
1074
|
-
#
|
|
1075
|
-
# @param [Hash] options
|
|
1076
|
-
# Additional options.
|
|
1077
|
-
#
|
|
1078
|
-
# @yield [response]
|
|
1079
|
-
# If a block is given, it will be passed the response received from
|
|
1080
|
-
# the request.
|
|
1081
|
-
#
|
|
1082
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
1083
|
-
# The HTTP response object.
|
|
1084
|
-
#
|
|
1085
|
-
# @return [Net::HTTP::Response]
|
|
1086
|
-
# The response of the HTTP request.
|
|
1087
|
-
#
|
|
1088
|
-
# @see #http_request
|
|
1089
|
-
#
|
|
1090
|
-
# @api public
|
|
1091
|
-
#
|
|
1092
|
-
def http_trace(options={},&block)
|
|
1093
|
-
response = http_request(options.merge(:method => :trace))
|
|
1094
|
-
|
|
1095
|
-
yield response if block_given?
|
|
1096
|
-
return response
|
|
1097
|
-
end
|
|
1098
|
-
|
|
1099
|
-
#
|
|
1100
|
-
# Performs an HTTP Unlock request.
|
|
1101
|
-
#
|
|
1102
|
-
# @param [Hash] options
|
|
1103
|
-
# Additional options.
|
|
1104
|
-
#
|
|
1105
|
-
# @yield [response]
|
|
1106
|
-
# If a block is given, it will be passed the response received from
|
|
1107
|
-
# the request.
|
|
1108
|
-
#
|
|
1109
|
-
# @yieldparam [Net::HTTP::Response] response
|
|
1110
|
-
# The HTTP response object.
|
|
1111
|
-
#
|
|
1112
|
-
# @return [Net::HTTP::Response]
|
|
1113
|
-
# The response of the HTTP request.
|
|
1114
|
-
#
|
|
1115
|
-
# @see #http_request
|
|
1116
|
-
#
|
|
1117
|
-
# @api public
|
|
1118
|
-
#
|
|
1119
|
-
def http_unlock(options={},&block)
|
|
1120
|
-
response = http_request(options.merge(:method => :unlock))
|
|
1121
|
-
|
|
1122
|
-
yield response if block_given?
|
|
1123
|
-
return response
|
|
1124
|
-
end
|
|
1125
|
-
end
|
|
1126
|
-
end
|
|
1127
|
-
end
|