Module: Kotsms2::Formatter

Included in:
Client
Defined in:
lib/kotsms2/formatter.rb

Instance Method Summary collapse

Instance Method Details

#format_balance_info(original_info) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/kotsms2/formatter.rb', line 89

def format_balance_info(original_info)
  new_info = {
    access_success: false,
    message_quota: 0,
    error: nil
  }

  code_text = match_string(/^(?<code>-?\d+)$/, original_info)
  code_number = code_text.to_i

  new_info[:access_success] = !code_text.nil? && code_number > -1

  if new_info[:access_success]
    new_info[:message_quota] = code_number
  else
    new_info[:error] = code_text.nil? ? "KOTSMS:CODE_NOT_FOUND" : "KOTSMS:#{code_text}".upcase
  end

  new_info
end

#format_message_status(original_info) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/kotsms2/formatter.rb', line 46

def format_message_status(original_info)
  new_info = {
    access_success: false,
    is_delivered: false,
    message_status: nil,
    error: nil
  }

  status_text = match_string(/^statusstr=(?<status>\w+)$/, original_info)

  new_info[:access_success] = !status_text.nil? && status_text != 'MEMBERERROR' && status_text != 'NOSMS'

  if new_info[:access_success]
    new_info[:message_status] = message_status_sanitize(status_text)
    new_info[:is_delivered]   = new_info[:message_status] == 'delivered'
  else
    new_info[:error] = status_text.nil? ? "KOTSMS:CODE_NOT_FOUND" : "KOTSMS:#{status_text}".upcase
  end

  new_info
end

#format_send_message_info(original_info) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/kotsms2/formatter.rb', line 68

def format_send_message_info(original_info)
  new_info = {
    access_success: false,
    message_id: nil,
    error: nil
  }

  code_text = match_string(/^kmsgid=(?<code>-?\d+)$/, original_info)
  code_number = code_text.to_i

  new_info[:access_success] = !code_text.nil? && code_number > -1

  if new_info[:access_success]
    new_info[:message_id] = code_number.to_s
  else
    new_info[:error] = code_text.nil? ? "KOTSMS:CODE_NOT_FOUND" : "KOTSMS:#{code_text}".upcase
  end

  new_info
end

#format_time_string(time) ⇒ Object



16
17
18
19
20
# File 'lib/kotsms2/formatter.rb', line 16

def format_time_string(time)
  return nil if time.nil?
  new_time = to_asia_taipei_timezone(time)
  new_time.strftime('%Y/%m/%d %H:%M:%S')
end

#match_string(rule, string) ⇒ Object



11
12
13
14
# File 'lib/kotsms2/formatter.rb', line 11

def match_string(rule, string)
  match_data = rule.match(string)
  match_data.nil? ? nil : match_data[1]
end

#message_status_sanitize(original_text) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/kotsms2/formatter.rb', line 28

def message_status_sanitize(original_text)
  status_table = {
    'SUCCESSED' => 'delivered',
    'DELIVERED' => 'delivered',
    'DELIVRD' => 'delivered',
    'EXPIRED' => 'expired',
    'DELETED' => 'deleted',
    'UNDELIV' => 'undelivered',
    'ACCEPTD' => 'transmitting',
    'UNKNOWN' => 'unknown',
    'REJECTD' => 'rejected',
    'SYNTAXE' => 'incorrect_sms_system_syntax'
  }

  new_text = status_table[original_text]
  new_text.nil? ? 'status_undefined' : new_text
end

#to_asia_taipei_timezone(time) ⇒ Object



22
23
24
25
26
# File 'lib/kotsms2/formatter.rb', line 22

def to_asia_taipei_timezone(time)
  utc_time = time.utc? ? time.dup : time.dup.utc
  asia_taipei_time = utc_time.getlocal('+08:00')
  asia_taipei_time
end

#to_big5(original_string) ⇒ Object



3
4
5
# File 'lib/kotsms2/formatter.rb', line 3

def to_big5(original_string)
  original_string.encode("BIG5", :invalid => :replace, :undef => :replace, :replace => "?")
end

#to_utf8(original_string) ⇒ Object



7
8
9
# File 'lib/kotsms2/formatter.rb', line 7

def to_utf8(original_string)
  original_string.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?")
end