GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

Message.initialize_author()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
c 1
b 0
f 0
dl 0
loc 8
ccs 5
cts 5
cp 1
crap 2
rs 9.4285
1 1
module Textris
2 1
  class Message
3 1
    attr_reader :content, :from_name, :from_phone, :to, :texter, :action, :args,
4
      :media_urls
5
6 1
    def initialize(options = {})
7 59
      initialize_content(options)
8 58
      initialize_author(options)
9 58
      initialize_recipients(options)
10
11 57
      @texter     = options[:texter]
12 57
      @action     = options[:action]
13 57
      @args       = options[:args]
14 57
      @media_urls = options[:media_urls]
15
    end
16
17 1
    def deliver
18 4
      deliveries = ::Textris::Delivery.get
19 4
      deliveries.each do |delivery|
20 4
        delivery.new(self).deliver_to_all
21
      end
22
23 4
      self
24
    end
25
26 1
    def texter(options = {})
27 40
      if options[:raw]
28 3
        @texter
29 37
      elsif @texter.present?
30 15
        @texter.to_s.split('::').last.to_s.sub(/Texter$/, '')
31
      end
32
    end
33
34 1
    def from
35 14
      if @from_phone.present?
36 8
        if @from_name.present?
37 6
          "#{@from_name} <#{Phony.format(@from_phone)}>"
38
        else
39 2
          Phony.format(@from_phone)
40
        end
41 6
      elsif @from_name.present?
42 2
        @from_name
43
      end
44
    end
45
46 1
    def content
47 45
      @content ||= parse_content(@renderer.render_content)
48
    end
49
50 1
    private
51
52 1
    def initialize_content(options)
53 59
      if options[:content].present?
54 51
        @content  = parse_content options[:content]
55 8
      elsif options[:renderer].present?
56 7
        @renderer = options[:renderer]
57
      else
58 1
        raise(ArgumentError, "Content must be provided")
59
      end
60
    end
61
62 1
    def initialize_author(options)
63 58
      if options.has_key?(:from)
64 30
        @from_name, @from_phone = parse_from options[:from]
65
      else
66 28
        @from_name  = options[:from_name]
67 28
        @from_phone = options[:from_phone]
68
      end
69
    end
70
71 1
    def initialize_recipients(options)
72 58
      @to = parse_to options[:to]
73
74 58
      unless @to.present?
75 1
        raise(ArgumentError, "Recipients must be provided and E.164 compilant")
76
      end
77
    end
78
79 1
    def parse_from(from)
80 30
      parse_from_dual(from) || parse_from_singular(from)
81
    end
82
83 1
    def parse_from_dual(from)
84 30
      if (matches = from.to_s.match(/(.*)\<(.*)\>\s*$/).to_a).size == 3 &&
85 30
          Phony.plausible?(matches[2])
86 12
        [matches[1].strip, Phony.normalize(matches[2])]
87
      end
88
    end
89
90 1
    def parse_from_singular(from)
91 18
      if Phony.plausible?(from)
92 2
        [nil, Phony.normalize(from)]
93 16
      elsif from.present?
94 16
        [from.strip, nil]
95
      end
96
    end
97
98 1
    def parse_to(to)
99 58
      to = [*to]
100 141
      to = to.select { |phone| Phony.plausible?(phone.to_s) }
101 140
      to = to.map    { |phone| Phony.normalize(phone.to_s) }
102
103 58
      to
104
    end
105
106 1
    def parse_content(content)
107 51
      content = content.to_s
108 51
      content = content.rstrip
109
110 51
      content
111
    end
112
  end
113
end
114