Class: URI::MailTo

Class | URI::MailTo
In: | uri/mailto.rb
Parent: | Generic

RFC2368, The mailto URL scheme

### Methods

build headers= new to= to_mailtext to_rfc822text to_s

### Included Modules

REGEXP

### Constants

DEFAULT_PORT | = | nil
COMPONENT | = | [ :scheme, :to, :headers ].freeze

### Attributes

headers | [R] |
to | [R] |

### Public Class methods

build(args)

## Description

Creates a new URI::MailTo object from components of URI::MailTo with check. It is to and headers. It provided by an Array of a Hash. You can provide headers as String like "subject=subscribe&cc=addr" or Array like [["subject", "subscribe"], ["cc", "addr"]]

[Source]

    # File uri/mailto.rb, line 70
        def self.build(args)
          tmp = Util::make_components_hash(self, args)

          if tmp[:to]
            tmp[:opaque] = tmp[:to]
          else
            tmp[:opaque] = ''
          end

          if tmp[:headers]
            tmp[:opaque] << '?'

            if tmp[:headers].kind_of?(Array)
              tmp[:opaque] << tmp[:headers].collect { |x|
                if x.kind_of?(Array)
                  x[0] + '=' + x[1..-1].to_s
                else
                  x.to_s
                end
              }.join('&')

            elsif tmp[:headers].kind_of?(Hash)
              tmp[:opaque] << tmp[:headers].collect { |h,v|
                h + '=' + v
              }.join('&')

            else
              tmp[:opaque] << tmp[:headers].to_s
            end
          end

          return super(tmp)
        end

new(*arg)

## Description

Creates a new URI::MailTo object from ``generic’’ components with no check. Because, this method is usually called from URI::parse and the method checks validity of each components.

[Source]

    # File uri/mailto.rb, line 111
        def initialize(*arg)
          super(*arg)

          @to = nil
          @headers = []

          if MAILTO_REGEXP =~ @opaque
             if arg[-1]
              self.to = $1
              self.headers = $2
            else
              set_to($1)
              set_headers($2)
            end

          else
            raise InvalidComponentError,
              "unrecognised opaque part for mailtoURL: #{@opaque}"
          end
        end

### Public Instance methods

headers=(v)

[Source]

    # File uri/mailto.rb, line 182
        def headers=(v)
          check_headers(v)
          set_headers(v)
          v
        end

to=(v)

[Source]

    # File uri/mailto.rb, line 152
        def to=(v)
          check_to(v)
          set_to(v)
          v
        end

to_mailtext()

## Usage

      require 'uri'

      uri = URI.parse("mailto:ruby-list@ruby-lang.org?Subject=subscribe&cc=myaddr")
      uri.to_mailtext
      # => "To: ruby-list@ruby-lang.org\nSubject: subscribe\nCc: myaddr\n\n\n"

[Source]

    # File uri/mailto.rb, line 214
        def to_mailtext
          to = URI::unescape(@to)
          head = ''
          body = ''
          @headers.each do |x|
            case x[0]
            when 'body'
              body = URI::unescape(x[1])
            when 'to'
              to << ', ' + URI::unescape(x[1])
            else
              head << URI::unescape(x[0]).capitalize + ': ' +
                URI::unescape(x[1])  + "\n"
            end
          end

          return "To: #{to}
    #{head}
    #{body}
    "
        end

to_rfc822text()

Alias for to_mailtext

to_s()

[Source]

    # File uri/mailto.rb, line 188
        def to_s
          @scheme + ':' +
            if @to
              @to
            else
              ''
            end +
            if @headers.size > 0
              '?' + @headers.collect{|x| x.join('=')}.join('&')
            else
              ''
            end +
            if @fragment
              '#' + @fragment
            else
              ''
            end
        end

[Validate]