1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
miquire :core, 'retriever'
module Mikutter; end
module Mikutter::Twitter
class DirectMessage < Retriever::Model
register :twitter_direct_message,
name: "Direct Message"
field.int :id, required: true # ID
field.string :text, required: true # Message description
field.has :user, User, required: true # Send by user
field.has :sender, User, required: true # Send by user (old)
field.has :recipient, User, required: true # Received by user
field.bool :exact # true if complete data
field.time :created # posted time
entity_class Retriever::Entity::TwitterEntity
def self.memory
@memory ||= DirectMessageMemory.new end
def mentioned_by_me?
false
end
def favorite(_)
# Intentionally blank
end
def favorite?
false
end
def favorited_by
[]
end
def favoritable?
false
end
def retweet
# Intentionally blank
end
def retweet?
nil
end
def retweeted?
false
end
def retweeted_by
[]
end
def retweetable?
false
end
def retweet_source(_=nil)
nil
end
def quoting?
false
end
def has_receive_message?
false
end
def to_show
@to_show ||= self[:text].gsub(/&(gt|lt|quot|amp);/){|m| {'gt' => '>', 'lt' => '<', 'quot' => '"', 'amp' => '&'}[$1] }.freeze
end
def to_message
self
end
alias :message :to_message
def system?
false
end
def created
self[:created]
end
def modified
self[:created]
end
def from_me?
return false if system?
Service.map(&:user_obj).include?(self[:user])
end
def to_me?
true
end
def user
self[:user]
end
def idname
user[:idname]
end
def post(args, &block)
Service.primary.send_direct_message({:text => args[:message], :user => self[:user]}, &block)
end
def repliable?
true
end
def perma_link
nil
end
def receive_user_screen_names
[self[:recipient].idname]
end
def ancestors(force_retrieve=false)
[self]
end
def ancestor(force_retrieve=false)
ancestors(force_retrieve).last
end
end
class DirectMessageMemory < Retriever::Model::Memory; end
end
|