|
Evan@653
|
1 |
/** |
|
Evan@653
|
2 |
* @file oim.h Header file for oim.c |
|
Evan@653
|
3 |
* Author |
|
Evan@653
|
4 |
* MaYuan<mayuan2006@gmail.com> |
|
Evan@653
|
5 |
* purple |
|
Evan@653
|
6 |
* |
|
Evan@653
|
7 |
* Purple is the legal property of its developers, whose names are too numerous |
|
Evan@653
|
8 |
* to list here. Please refer to the COPYRIGHT file distributed with this |
|
Evan@653
|
9 |
* source distribution. |
|
Evan@653
|
10 |
* |
|
Evan@653
|
11 |
* This program is free software; you can redistribute it and/or modify |
|
Evan@653
|
12 |
* it under the terms of the GNU General Public License as published by |
|
Evan@653
|
13 |
* the Free Software Foundation; either version 2 of the License, or |
|
Evan@653
|
14 |
* (at your option) any later version. |
|
Evan@653
|
15 |
* |
|
Evan@653
|
16 |
* This program is distributed in the hope that it will be useful, |
|
Evan@653
|
17 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
Evan@653
|
18 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
Evan@653
|
19 |
* GNU General Public License for more details. |
|
Evan@653
|
20 |
* |
|
Evan@653
|
21 |
* You should have received a copy of the GNU General Public License |
|
Evan@653
|
22 |
* along with this program; if not, write to the Free Software |
|
Evan@653
|
23 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
Evan@653
|
24 |
*/ |
|
Evan@653
|
25 |
#ifndef _MSN_OIM_H_ |
|
Evan@653
|
26 |
#define _MSN_OIM_H_ |
|
Evan@653
|
27 |
|
|
Evan@653
|
28 |
/* OIM Retrieval Info */ |
|
Evan@653
|
29 |
#define MSN_OIM_RETRIEVE_HOST "rsi.hotmail.com" |
|
Evan@653
|
30 |
#define MSN_OIM_RETRIEVE_URL "/rsi/rsi.asmx" |
|
Evan@653
|
31 |
|
|
Evan@653
|
32 |
/* OIM GetMetadata SOAP Template */ |
|
Evan@653
|
33 |
#define MSN_OIM_GET_METADATA_ACTION "http://www.hotmail.msn.com/ws/2004/09/oim/rsi/GetMetadata" |
|
Evan@653
|
34 |
|
|
Evan@653
|
35 |
#define MSN_OIM_GET_METADATA_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\ |
|
Evan@653
|
36 |
"<soap:Envelope"\ |
|
Evan@653
|
37 |
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\ |
|
Evan@653
|
38 |
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\ |
|
Evan@653
|
39 |
" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\ |
|
Evan@653
|
40 |
"<soap:Header>"\ |
|
Evan@653
|
41 |
"<PassportCookie xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\ |
|
Evan@653
|
42 |
"<t>EMPTY</t>"\ |
|
Evan@653
|
43 |
"<p>EMPTY</p>"\ |
|
Evan@653
|
44 |
"</PassportCookie>"\ |
|
Evan@653
|
45 |
"</soap:Header>"\ |
|
Evan@653
|
46 |
"<soap:Body>"\ |
|
Evan@653
|
47 |
"<GetMetadata xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\" />"\ |
|
Evan@653
|
48 |
"</soap:Body>"\ |
|
Evan@653
|
49 |
"</soap:Envelope>" |
|
Evan@653
|
50 |
|
|
Evan@653
|
51 |
/*OIM GetMessage SOAP Template*/ |
|
Evan@653
|
52 |
#define MSN_OIM_GET_SOAP_ACTION "http://www.hotmail.msn.com/ws/2004/09/oim/rsi/GetMessage" |
|
Evan@653
|
53 |
|
|
Evan@653
|
54 |
#define MSN_OIM_GET_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\ |
|
Evan@653
|
55 |
"<soap:Envelope"\ |
|
Evan@653
|
56 |
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\ |
|
Evan@653
|
57 |
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\ |
|
Evan@653
|
58 |
" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\ |
|
Evan@653
|
59 |
"<soap:Header>"\ |
|
Evan@653
|
60 |
"<PassportCookie xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\ |
|
Evan@653
|
61 |
"<t>EMPTY</t>"\ |
|
Evan@653
|
62 |
"<p>EMPTY</p>"\ |
|
Evan@653
|
63 |
"</PassportCookie>"\ |
|
Evan@653
|
64 |
"</soap:Header>"\ |
|
Evan@653
|
65 |
"<soap:Body>"\ |
|
Evan@653
|
66 |
"<GetMessage xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\ |
|
Evan@653
|
67 |
"<messageId>%s</messageId>"\ |
|
Evan@653
|
68 |
"<alsoMarkAsRead>false</alsoMarkAsRead>"\ |
|
Evan@653
|
69 |
"</GetMessage>"\ |
|
Evan@653
|
70 |
"</soap:Body>"\ |
|
Evan@653
|
71 |
"</soap:Envelope>" |
|
Evan@653
|
72 |
|
|
Evan@653
|
73 |
/*OIM DeleteMessages SOAP Template*/ |
|
Evan@653
|
74 |
#define MSN_OIM_DEL_SOAP_ACTION "http://www.hotmail.msn.com/ws/2004/09/oim/rsi/DeleteMessages" |
|
Evan@653
|
75 |
|
|
Evan@653
|
76 |
#define MSN_OIM_DEL_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\ |
|
Evan@653
|
77 |
"<soap:Envelope"\ |
|
Evan@653
|
78 |
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\ |
|
Evan@653
|
79 |
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\ |
|
Evan@653
|
80 |
" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\ |
|
Evan@653
|
81 |
"<soap:Header>"\ |
|
Evan@653
|
82 |
"<PassportCookie xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\ |
|
Evan@653
|
83 |
"<t>EMPTY</t>"\ |
|
Evan@653
|
84 |
"<p>EMPTY</p>"\ |
|
Evan@653
|
85 |
"</PassportCookie>"\ |
|
Evan@653
|
86 |
"</soap:Header>"\ |
|
Evan@653
|
87 |
"<soap:Body>"\ |
|
Evan@653
|
88 |
"<DeleteMessages xmlns=\"http://www.hotmail.msn.com/ws/2004/09/oim/rsi\">"\ |
|
Evan@653
|
89 |
"<messageIds>"\ |
|
Evan@653
|
90 |
"<messageId>%s</messageId>"\ |
|
Evan@653
|
91 |
"</messageIds>"\ |
|
Evan@653
|
92 |
"</DeleteMessages>"\ |
|
Evan@653
|
93 |
"</soap:Body>"\ |
|
Evan@653
|
94 |
"</soap:Envelope>" |
|
Evan@653
|
95 |
|
|
Evan@653
|
96 |
/*OIM Send SOAP Template*/ |
|
Evan@653
|
97 |
#define MSN_OIM_MSG_TEMPLATE "MIME-Version: 1.0\n"\ |
|
Evan@653
|
98 |
"Content-Type: text/plain; charset=UTF-8\n"\ |
|
Evan@653
|
99 |
"Content-Transfer-Encoding: base64\n"\ |
|
Evan@653
|
100 |
"X-OIM-Message-Type: OfflineMessage\n"\ |
|
Evan@653
|
101 |
"X-OIM-Run-Id: {%s}\n"\ |
|
Evan@653
|
102 |
"X-OIM-Sequence-Num: %d\n\n" |
|
Evan@653
|
103 |
|
|
Evan@653
|
104 |
#define MSN_OIM_SEND_HOST "ows.messenger.msn.com" |
|
Evan@653
|
105 |
#define MSN_OIM_SEND_URL "/OimWS/oim.asmx" |
|
Evan@653
|
106 |
#define MSN_OIM_SEND_SOAP_ACTION "http://messenger.live.com/ws/2006/09/oim/Store2" |
|
Evan@653
|
107 |
#define MSN_OIM_SEND_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\ |
|
Evan@653
|
108 |
"<soap:Envelope"\ |
|
Evan@653
|
109 |
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\ |
|
Evan@653
|
110 |
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\ |
|
Evan@653
|
111 |
" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\ |
|
Evan@653
|
112 |
"<soap:Header>"\ |
|
Evan@653
|
113 |
"<From"\ |
|
Evan@653
|
114 |
" memberName=\"%s\""\ |
|
Evan@653
|
115 |
" friendlyName=\"%s\""\ |
|
Evan@653
|
116 |
" xml:lang=\"en-US\""\ |
|
Evan@653
|
117 |
" proxy=\"MSNMSGR\""\ |
|
Evan@653
|
118 |
" xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\""\ |
|
Evan@653
|
119 |
" msnpVer=\"MSNP15\""\ |
|
Evan@653
|
120 |
" buildVer=\"8.5.1288\"/>"\ |
|
Evan@653
|
121 |
"<To memberName=\"%s\" xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\"/>"\ |
|
Evan@653
|
122 |
"<Ticket passport=\"EMPTY\" appid=\"%s\" lockkey=\"%s\" xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\"/>"\ |
|
Evan@653
|
123 |
"<Sequence xmlns=\"http://schemas.xmlsoap.org/ws/2003/03/rm\">"\ |
|
Evan@653
|
124 |
"<Identifier xmlns=\"http://schemas.xmlsoap.org/ws/2002/07/utility\">http://messenger.msn.com</Identifier>"\ |
|
Evan@653
|
125 |
"<MessageNumber>%d</MessageNumber>"\ |
|
Evan@653
|
126 |
"</Sequence>"\ |
|
Evan@653
|
127 |
"</soap:Header>"\ |
|
Evan@653
|
128 |
"<soap:Body>"\ |
|
Evan@653
|
129 |
"<MessageType xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\">text</MessageType>"\ |
|
Evan@653
|
130 |
"<Content xmlns=\"http://messenger.msn.com/ws/2004/09/oim/\">%s</Content>"\ |
|
Evan@653
|
131 |
"</soap:Body>"\ |
|
Evan@653
|
132 |
"</soap:Envelope>" |
|
Evan@653
|
133 |
|
|
Evan@653
|
134 |
typedef struct _MsnOim MsnOim; |
|
Evan@653
|
135 |
|
|
Evan@653
|
136 |
struct _MsnOim |
|
Evan@653
|
137 |
{ |
|
Evan@653
|
138 |
MsnSession *session; |
|
Evan@653
|
139 |
|
|
Evan@653
|
140 |
GList * oim_list; |
|
Evan@653
|
141 |
|
|
Evan@653
|
142 |
char *challenge; |
|
Evan@653
|
143 |
char *run_id; |
|
Evan@653
|
144 |
gint send_seq; |
|
Evan@653
|
145 |
GQueue *send_queue; |
|
Evan@653
|
146 |
}; |
|
Evan@653
|
147 |
|
|
Evan@653
|
148 |
/**************************************************** |
|
Evan@653
|
149 |
* function prototype |
|
Evan@653
|
150 |
* **************************************************/ |
|
Evan@653
|
151 |
MsnOim * msn_oim_new(MsnSession *session); |
|
Evan@653
|
152 |
void msn_oim_destroy(MsnOim *oim); |
|
Evan@653
|
153 |
|
|
Evan@653
|
154 |
void msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg); |
|
Evan@653
|
155 |
|
|
Evan@653
|
156 |
/*Send OIM Message*/ |
|
Evan@653
|
157 |
void msn_oim_prep_send_msg_info(MsnOim *oim, const char *membername, |
|
Evan@653
|
158 |
const char *friendname, const char *tomember, |
|
Evan@653
|
159 |
const char * msg); |
|
Evan@653
|
160 |
|
|
Evan@653
|
161 |
void msn_oim_send_msg(MsnOim *oim); |
|
Evan@653
|
162 |
|
|
Evan@653
|
163 |
#endif/* _MSN_OIM_H_*/ |