rhodes 2.3.0 → 2.3.1.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. data/CHANGELOG +6 -0
  2. data/Manifest.txt +5819 -0
  3. data/README.md +2 -2
  4. data/Rakefile +9 -5
  5. data/doc/build.txt +7 -13
  6. data/doc/configuration.txt +4 -0
  7. data/doc/connect-to-web-services.txt +0 -1
  8. data/doc/device-caps.txt +2 -2
  9. data/doc/extensions.txt +2 -0
  10. data/doc/linea.txt +699 -0
  11. data/doc/rhom.txt +2 -1
  12. data/doc/synchronization.txt +39 -2
  13. data/doc/ui.txt +1 -0
  14. data/installer/README.html +1 -1
  15. data/lib/build/jake.rb +3 -0
  16. data/lib/framework/res/esri.wm.png +0 -0
  17. data/lib/framework/rho/render.rb +2 -0
  18. data/lib/framework/rho/rho.rb +17 -10
  19. data/lib/framework/rho/rhoapplication.rb +13 -3
  20. data/lib/framework/rho/rhoevent_bb.rb +3 -1
  21. data/lib/framework/rho/rhoevent_c.rb +4 -1
  22. data/lib/framework/rhodes.rb +1 -1
  23. data/lib/framework/rhom/rhom.rb +10 -0
  24. data/lib/framework/rhom/rhom_object_factory.rb +45 -0
  25. data/lib/framework/rhom/rhom_source.rb +1 -1
  26. data/lib/framework/version.rb +1 -1
  27. data/lib/rhodes.rb +1 -1
  28. data/platform/android/Rhodes/AndroidManifest.xml +2 -2
  29. data/platform/android/Rhodes/jni/include/rhodes/RhoClassFactory.h +1 -1
  30. data/platform/android/Rhodes/jni/src/RhoClassFactory.cpp +1 -1
  31. data/platform/android/Rhodes/jni/src/callbacks.cpp +9 -11
  32. data/platform/android/Rhodes/jni/src/event.cpp +17 -9
  33. data/platform/android/Rhodes/jni/src/mapview.cpp +34 -4
  34. data/platform/android/Rhodes/jni/src/rhodes.cpp +1 -1
  35. data/platform/android/Rhodes/res/drawable/esri.png +0 -0
  36. data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +1 -0
  37. data/platform/android/Rhodes/src/com/rhomobile/rhodes/BaseActivity.java +3 -0
  38. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +8 -5
  39. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +80 -9
  40. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +29 -8
  41. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +4 -1
  42. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +50 -10
  43. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +3 -0
  44. data/platform/android/build/android.rake +45 -23
  45. data/platform/android/build/librhocommon_build.files +1 -0
  46. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBStorage.java +6 -1
  47. data/platform/bb/Hsqldb/src/org/hsqldb/CachedDataRow.java +1 -1
  48. data/platform/bb/Hsqldb/src/org/hsqldb/CachedRow.java +3 -2
  49. data/platform/bb/Hsqldb/src/org/hsqldb/Row.java +1 -1
  50. data/platform/bb/Hsqldb/src/org/hsqldb/persist/CachedObject.java +1 -1
  51. data/platform/bb/Hsqldb/src/org/hsqldb/persist/DataFileCache.java +66 -16
  52. data/platform/bb/Hsqldb/src/org/hsqldb/persist/HsqlDatabaseProperties.java +1 -1
  53. data/platform/bb/RubyVM/src/com/rho/RhoCrypto.java +116 -0
  54. data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +39 -2
  55. data/platform/bb/RubyVM/src/com/rho/Tokenizer.java +11 -6
  56. data/platform/bb/RubyVM/src/com/rho/db/DBAdapter.java +157 -150
  57. data/platform/bb/RubyVM/src/com/rho/db/IDBStorage.java +1 -1
  58. data/platform/bb/RubyVM/src/com/rho/file/RhoFile.java +15 -0
  59. data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +35 -23
  60. data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +6 -9
  61. data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +54 -16
  62. data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +18 -9
  63. data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +37 -59
  64. data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +3 -0
  65. data/platform/bb/build/RubyVM_build.files +1 -0
  66. data/platform/bb/build/bb.rake +4 -5
  67. data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +4 -1
  68. data/platform/bb/rhodes/platform/5.0/com/rho/db/SqliteStorage.java +8 -3
  69. data/platform/bb/rhodes/resources/esri.png +0 -0
  70. data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +2 -0
  71. data/platform/bb/rhodes/src/com/rho/db/SqliteStorage.java +8 -3
  72. data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +4 -1
  73. data/platform/bb/rhodes/src/com/rho/rubyext/System.java +2 -0
  74. data/platform/bb/rhodes/src/rhomobile/mapview/ESRIMapField.java +9 -0
  75. data/platform/iphone/Classes/Event/Event.m +12 -2
  76. data/platform/iphone/Classes/NativeBar.h +12 -11
  77. data/platform/iphone/Classes/NativeBar.m +13 -3
  78. data/platform/iphone/Classes/Rhodes.m +48 -10
  79. data/platform/iphone/Classes/SimpleMainView.h +1 -0
  80. data/platform/iphone/Classes/SimpleMainView.m +7 -1
  81. data/platform/iphone/Classes/SplitView/LeftViewController.m +3 -0
  82. data/platform/iphone/Classes/SplitView/RightViewController.m +11 -6
  83. data/platform/iphone/Classes/SplitView/SplittedMainView.m +8 -0
  84. data/platform/iphone/Classes/TabbedMainView.m +39 -3
  85. data/platform/iphone/Info.plist +1 -1
  86. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +4 -0
  87. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +3 -3
  88. data/platform/shared/SyncClient/SyncClient.cpp +23 -23
  89. data/platform/shared/common/IRhoClassFactory.h +6 -4
  90. data/platform/shared/common/RhoAppAdapter.h +1 -1
  91. data/platform/shared/common/RhoFile.cpp +10 -0
  92. data/platform/shared/common/RhoFile.h +1 -0
  93. data/platform/shared/common/RhoMutexLock.h +1 -1
  94. data/platform/shared/common/RhoStd.h +5 -0
  95. data/platform/shared/common/RhoThread.cpp +2 -2
  96. data/platform/shared/common/RhoThread.h +1 -2
  97. data/platform/shared/common/RhodesApp.cpp +33 -55
  98. data/platform/shared/common/RhodesApp.h +0 -5
  99. data/platform/shared/common/RhodesAppBase.cpp +1 -1
  100. data/platform/shared/common/SplashScreen.cpp +1 -2
  101. data/platform/shared/common/ThreadQueue.cpp +31 -4
  102. data/platform/shared/common/ThreadQueue.h +10 -3
  103. data/platform/shared/common/Tokenizer.cpp +12 -8
  104. data/platform/shared/common/iphone/RhoClassFactory.cpp +5 -8
  105. data/platform/shared/common/iphone/RhoClassfactory.h +1 -1
  106. data/platform/shared/common/map/ESRIMapEngine.cpp +17 -7
  107. data/platform/shared/common/map/ESRIMapEngine.h +11 -1
  108. data/platform/shared/common/map/GoogleMapEngine.cpp +3 -3
  109. data/platform/shared/common/map/GoogleMapEngine.h +2 -2
  110. data/platform/shared/common/map/MapEngine.cpp +37 -0
  111. data/platform/shared/common/map/MapEngine.h +5 -0
  112. data/platform/shared/db/DBAdapter.cpp +113 -81
  113. data/platform/shared/db/DBAdapter.h +21 -5
  114. data/platform/shared/db/DBAttrManager.cpp +2 -2
  115. data/platform/shared/db/DBResult.h +28 -0
  116. data/platform/shared/net/AsyncHttp.cpp +48 -48
  117. data/platform/shared/net/AsyncHttp.h +15 -12
  118. data/platform/shared/net/CURLNetRequest.cpp +27 -105
  119. data/platform/shared/net/CURLNetRequest.h +8 -15
  120. data/platform/shared/net/INetRequest.cpp +122 -0
  121. data/platform/shared/net/INetRequest.h +96 -23
  122. data/platform/shared/net/ssl.cpp +1 -1
  123. data/platform/shared/ruby/ext/calendar/calendar.i +2 -2
  124. data/platform/shared/ruby/ext/calendar/calendar_wrap.c +30 -3
  125. data/platform/shared/rubyext/GeoLocation.cpp +4 -5
  126. data/platform/shared/rubyext/GeoLocation.h +4 -4
  127. data/platform/shared/rubyext/RhoAppAdapter.cpp +1 -1
  128. data/platform/shared/rubyext/System.cpp +3 -0
  129. data/platform/shared/sync/ClientRegister.cpp +6 -9
  130. data/platform/shared/sync/ClientRegister.h +8 -6
  131. data/platform/shared/sync/SyncEngine.cpp +54 -30
  132. data/platform/shared/sync/SyncEngine.h +9 -11
  133. data/platform/shared/sync/SyncNotify.cpp +19 -14
  134. data/platform/shared/sync/SyncNotify.h +5 -12
  135. data/platform/shared/sync/SyncSource.cpp +53 -76
  136. data/platform/shared/sync/SyncSource.h +5 -4
  137. data/platform/shared/sync/SyncThread.cpp +5 -7
  138. data/platform/shared/sync/SyncThread.h +2 -2
  139. data/platform/wm/RhoLib/RhoLib.vcproj +43 -39
  140. data/platform/wm/build/wm.rake +19 -17
  141. data/platform/wm/rhodes/AppManager.cpp +4 -4
  142. data/platform/wm/rhodes/MainWindow.cpp +0 -1
  143. data/platform/wm/rhodes/MapView/MapViewManager.cpp +4 -0
  144. data/platform/wm/rhodes/Vibrate.cpp +2 -2
  145. data/platform/wm/rhodes/Vibrate.h +1 -1
  146. data/platform/wm/rhodes/rho/common/RhoClassFactory.cpp +7 -5
  147. data/platform/wm/rhodes/rho/common/RhoClassFactory.h +3 -3
  148. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +24 -10
  149. data/platform/wm/rhodes/rho/net/NetRequestImpl.h +49 -25
  150. data/platform/wm/rhodes/rho/rubyext/calendar.cpp +16 -2
  151. data/platform/wm/rhodes/rhodes.vcproj +77 -85
  152. data/platform/wm/tools/detool/detool.cpp +16 -6
  153. data/rakefile.rb +9 -5
  154. data/res/build-tools/detool.exe +0 -0
  155. data/rhodes.gemspec +2 -2
  156. data/spec/phone_spec/app/spec/blobsync_spec.rb +1 -0
  157. data/spec/phone_spec/app/spec/events_spec.rb +13 -2
  158. data/spec/phone_spec/app/spec/mapview_spec.rb +2 -2
  159. data/spec/phone_spec/app/spec/nativebar_spec.rb +3 -3
  160. data/spec/phone_spec/app/spec/navbar_spec.rb +3 -3
  161. data/spec/phone_spec/app/spec/rho_spec.rb +1 -1
  162. data/spec/phone_spec/app/spec/rhom_object_spec.rb +1 -1
  163. data/spec/phone_spec/app/spec/syncengine_spec.rb +219 -0
  164. data/spec/phone_spec/build.yml +1 -0
  165. metadata +15 -8
  166. data/platform/wm/rhodes/rho/net/NetRequest.cpp +0 -89
  167. data/platform/wm/rhodes/rho/net/NetRequest.h +0 -45
@@ -3,7 +3,7 @@
3
3
  #include "AppManager.h"
4
4
 
5
5
  #ifdef ENABLE_DYNAMIC_RHOBUNDLE
6
- #include "rho/net/NetRequest.h"
6
+ #include "net/INetRequest.h"
7
7
 
8
8
  #include "common/RhodesApp.h"
9
9
 
@@ -107,10 +107,10 @@ void CAppManager::ReloadRhoBundle(HWND hwnd, const char* szUrl, const char* szZi
107
107
  }
108
108
 
109
109
  //trying to load file
110
- rho::net::CNetRequest request;
111
110
  //NB: for mobile devices should use filesystem instead of RAM
112
- NetResponse (resp, request.pullData(szUrl, null));
113
- if (resp.getDataSize() > 0 && resp.getCharData()) {
111
+ NetResponse resp = getNetRequest().pullData(szUrl, null);
112
+ if (resp.getDataSize() > 0 && resp.getCharData())
113
+ {
114
114
  loadData = resp.getCharData();
115
115
  loadSize = resp.getDataSize();
116
116
  errCode = RRB_NONE_ERR;
@@ -19,7 +19,6 @@
19
19
  #include "ext/rho/rhoruby.h"
20
20
  #include "rubyext/WebView.h"
21
21
  #include "camera/Camera.h"
22
- #include "rho/net/NetRequest.h"
23
22
  #include "sync/SyncThread.h"
24
23
  #include "common/RhoFilePath.h"
25
24
  #include "common/RhoFile.h"
@@ -133,6 +133,10 @@ LRESULT CRhoMapViewDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*
133
133
  IDrawingImage* pinCalloutLinkImg = ourDrawingDevice.createImage(fullImagePath, true);
134
134
  ourMapView->setPinCalloutLinkImage(pinCalloutLinkImg, pin_callout_info);
135
135
 
136
+ strImagePath = "lib/res/esri.png";
137
+ fullImagePath = CFilePath::join( RHODESAPP().getRhoRootPath(), strImagePath);
138
+ IDrawingImage* esriLogoImg = ourDrawingDevice.createImage(fullImagePath, true);
139
+ ourMapView->setESRILogoImage(esriLogoImg);
136
140
  }
137
141
 
138
142
  #else
@@ -10,7 +10,7 @@ IMPLEMENT_LOGCLASS(CVibrate, "Vibrate");
10
10
  CVibrate *CVibrate::m_pInstance = NULL;
11
11
  CMutex CVibrate::m_mxLocker;
12
12
 
13
- CVibrate::CVibrate (IRhoClassFactory* factory) : CRhoThread(factory), m_nDuration(2), m_bToggled(false)
13
+ CVibrate::CVibrate () : CRhoThread(), m_nDuration(2), m_bToggled(false)
14
14
  {
15
15
  }
16
16
 
@@ -21,7 +21,7 @@ CVibrate::~CVibrate ()
21
21
 
22
22
  void CVibrate::createCVibrate()
23
23
  {
24
- static CVibrate instance(rho_impl_createClassFactory());
24
+ static CVibrate instance;
25
25
  m_pInstance = &instance;
26
26
  }
27
27
 
@@ -19,7 +19,7 @@ class CVibrate : public CRhoThread
19
19
  void untoggle ();
20
20
 
21
21
  private:
22
- CVibrate (IRhoClassFactory* factory);
22
+ CVibrate ();
23
23
  ~CVibrate ();
24
24
 
25
25
  virtual void run();
@@ -5,13 +5,15 @@
5
5
  #include "sync/ClientRegister.h"
6
6
  #include "RhoCryptImpl.h"
7
7
 
8
- namespace rho{
9
- namespace common{
10
- IRhoClassFactory* rho_impl_createClassFactory()
8
+ static rho::common::CRhoClassFactory g_oRhoClassFactory;
9
+ rho::common::IRhoClassFactory* rho_get_RhoClassFactory()
11
10
  {
12
- return new rho::common::CRhoClassFactory;
11
+ return &g_oRhoClassFactory;
13
12
  }
14
13
 
14
+ namespace rho{
15
+ namespace common{
16
+
15
17
  IRhoCrypt* CRhoClassFactory::createRhoCrypt()
16
18
  {
17
19
  return new CRhoCryptImpl();
@@ -23,7 +25,7 @@ IRhoCrypt* CRhoClassFactory::createRhoCrypt()
23
25
  extern "C" {
24
26
  void rho_clientregister_create(const char* szDevicePin)
25
27
  {
26
- rho::sync::CClientRegister::Create(rho::common::rho_impl_createClassFactory(), szDevicePin);
28
+ rho::sync::CClientRegister::Create(szDevicePin);
27
29
  }
28
30
 
29
31
  void rho_clientregister_destroy()
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #include "common/IRhoClassFactory.h"
4
- #include "../net/NetRequest.h"
4
+ #include "../net/NetRequestImpl.h"
5
5
  #include "RhoThreadImpl.h"
6
6
 
7
7
  namespace rho {
@@ -11,9 +11,9 @@ class CRhoClassFactory : public IRhoClassFactory
11
11
  {
12
12
  public:
13
13
  virtual ~CRhoClassFactory(void){}
14
- net::INetRequest* createNetRequest()
14
+ virtual net::INetRequestImpl* createNetRequestImpl()
15
15
  {
16
- return new net::CNetRequest();
16
+ return new net::CNetRequestImpl();
17
17
  }
18
18
 
19
19
  virtual IRhoThreadImpl* createThreadImpl()
@@ -3,7 +3,6 @@
3
3
  #include "NetRequestImpl.h"
4
4
  #include "common/RhoFile.h"
5
5
  #include "common/RhoFilePath.h"
6
- #include "NetRequest.h"
7
6
  #include "common/StringConverter.h"
8
7
  #include "net/URI.h"
9
8
  #include "common/RhoConf.h"
@@ -23,15 +22,25 @@ common::CMutex CNetRequestImpl::m_mxInternet;
23
22
  HINTERNET CNetRequestImpl::m_hInternet;
24
23
  HANDLE CNetRequestImpl::m_hWceConnMgrConnection;
25
24
 
26
- CNetRequestImpl::CNetRequestImpl(CNetRequest* pParent, const char* method, const String& strUrl,
27
- IRhoSession* oSession, Hashtable<String,String>* pHeaders, boolean sslVerifyPeer)
25
+ CNetRequestImpl::CNetRequestImpl()
26
+ {
27
+ m_hConnection = 0;
28
+ m_hRequest = 0;
29
+
30
+ m_pszErrFunction = 0;
31
+
32
+ memset(&m_uri, 0, sizeof(m_uri) );
33
+ m_pHeaders = 0;
34
+ m_bCancel = false;
35
+ m_pSession = 0;
36
+ m_sslVerifyPeer = true;
37
+ }
38
+
39
+ void CNetRequestImpl::init(const char* method, const String& strUrl, IRhoSession* oSession, Hashtable<String,String>* pHeaders)
28
40
  {
29
- m_pParent = pParent;
30
- m_pParent->m_pCurNetRequestImpl = this;
31
41
  m_pHeaders = pHeaders;
32
42
  m_bCancel = false;
33
43
  m_pSession = oSession;
34
- m_sslVerifyPeer = sslVerifyPeer;
35
44
 
36
45
  m_pszErrFunction = NULL;
37
46
  m_hConnection = NULL;
@@ -166,8 +175,10 @@ String CNetRequestImpl::getBodyContentType()
166
175
  return "application/x-www-form-urlencoded";
167
176
  }
168
177
 
169
- CNetResponseImpl* CNetRequestImpl::sendString(const String& strBody)
178
+ INetResponse* CNetRequestImpl::doRequest( const char* method, const String& strUrl, const String& strBody, IRhoSession* oSession, Hashtable<String,String>* pHeaders )
170
179
  {
180
+ init( method, strUrl, oSession, pHeaders );
181
+
171
182
  CNetResponseImpl* pNetResp = new CNetResponseImpl;
172
183
 
173
184
  do
@@ -362,8 +373,10 @@ void CNetRequestImpl::readResponse(CNetResponseImpl* pNetResp)
362
373
  pNetResp->setCookies(makeClientCookie());
363
374
  }
364
375
 
365
- CNetResponseImpl* CNetRequestImpl::downloadFile(common::CRhoFile& oFile)
376
+ INetResponse* CNetRequestImpl::pullFile(const String& strUrl, common::CRhoFile& oFile, IRhoSession* oSession, Hashtable<String,String>* pHeaders)
366
377
  {
378
+ init("GET", strUrl, oSession, pHeaders);
379
+
367
380
  CNetResponseImpl* pNetResp = new CNetResponseImpl;
368
381
  const int nDownloadBufferSize = 1024*100;
369
382
  char* pDownloadBuffer = 0;
@@ -495,8 +508,10 @@ int CNetRequestImpl::processMultipartItems( VectorPtr<CMultipartItem*>& arItems
495
508
  return nSize;
496
509
  }
497
510
 
498
- CNetResponseImpl* CNetRequestImpl::sendMultipartData(VectorPtr<CMultipartItem*>& arItems)
511
+ INetResponse* CNetRequestImpl::pushMultipartData(const String& strUrl, VectorPtr<CMultipartItem*>& arItems, IRhoSession* oSession, Hashtable<String,String>* pHeaders)
499
512
  {
513
+ init("POST", strUrl, oSession, pHeaders );
514
+
500
515
  CNetResponseImpl* pNetResp = new CNetResponseImpl;
501
516
 
502
517
  do
@@ -669,7 +684,6 @@ void CNetRequestImpl::close()
669
684
  CNetRequestImpl::~CNetRequestImpl()
670
685
  {
671
686
  close();
672
- m_pParent->m_pCurNetRequestImpl = null;
673
687
  }
674
688
 
675
689
  void CNetRequestImpl::readInetFile( HINTERNET hRequest, CNetResponseImpl* pNetResp, common::CRhoFile* pFile /*=NULL*/,
@@ -20,25 +20,52 @@ class CNetResponseImpl : public INetResponse
20
20
  public:
21
21
  CNetResponseImpl() : m_bValid(false),m_nRespCode(-1){}
22
22
 
23
- bool isValid()const{ return m_bValid; }
24
- void setValid(bool b){ m_bValid = b; }
25
-
26
23
  virtual const char* getCharData()
27
24
  {
28
25
  return m_bValid ? m_data.c_str() : "";
29
26
  }
30
27
 
28
+ virtual void setCharData(const char* szData)
29
+ {
30
+ m_bValid = true;
31
+ m_data = szData;
32
+ }
33
+
31
34
  virtual unsigned int getDataSize()
32
35
  {
33
36
  return m_bValid ? m_data.size() : 0;
34
37
  }
35
38
 
39
+ virtual String getCookies()
40
+ {
41
+ return m_cookies;
42
+ }
43
+ virtual int getRespCode(){ return m_nRespCode;}
44
+
45
+ bool isValid()const{ return m_bValid; }
46
+ void setValid(bool b){ m_bValid = b; }
47
+
36
48
  String& getRawData(){ return m_data; }
37
49
 
38
- boolean isResponseRecieved(){ return m_nRespCode!=-1;}
50
+ void setCookies(String s)
51
+ {
52
+ m_cookies = s;
53
+ }
54
+
39
55
  void setResponseCode(int nRespCode){ m_nRespCode = nRespCode;}
40
56
 
41
- int getRespCode(){ return m_nRespCode;}
57
+ boolean isSuccess()
58
+ {
59
+ return m_nRespCode > 0 && m_nRespCode < 400;
60
+ }
61
+
62
+ boolean isOK()
63
+ {
64
+ return m_nRespCode == 200 || m_nRespCode == 206;
65
+ }
66
+
67
+ /*
68
+ boolean isResponseRecieved(){ return m_nRespCode!=-1;}
42
69
 
43
70
  boolean isOK()
44
71
  {
@@ -59,20 +86,11 @@ public:
59
86
  {
60
87
  return m_nRespCode > 0 && m_nRespCode < 400;
61
88
  }
62
-
63
- void setCookies(String s)
64
- {
65
- m_cookies = s;
66
- }
67
-
68
- String getCookies()
69
- {
70
- return m_cookies;
71
- }
89
+ */
72
90
  };
73
91
 
74
92
  class CNetRequest;
75
- class CNetRequestImpl
93
+ class CNetRequestImpl : public INetRequestImpl
76
94
  {
77
95
  DEFINE_LOGCLASS;
78
96
 
@@ -86,28 +104,34 @@ class CNetRequestImpl
86
104
  URL_COMPONENTS m_uri;
87
105
  CAtlStringW m_strReqUrlW;
88
106
  String m_strUrl;
89
- CNetRequest* m_pParent;
90
107
  Hashtable<String,String>* m_pHeaders;
91
108
  boolean m_bCancel;
92
109
  IRhoSession* m_pSession;
93
110
  boolean m_sslVerifyPeer;
94
111
 
95
112
  public :
96
- CNetRequestImpl(CNetRequest* pParent, const char* method, const String& strUrl,
97
- IRhoSession* oSession, Hashtable<String,String>* pHeaders, boolean sslVerifyPeer);
113
+ CNetRequestImpl();
98
114
  ~CNetRequestImpl();
99
115
 
100
- void close();
101
- void cancel();
102
- bool isError(){ return m_pszErrFunction!= null; }
103
- CNetResponseImpl* sendString(const String& strBody);
116
+ virtual INetResponse* doRequest( const char* method, const String& strUrl, const String& strBody, IRhoSession* oSession, Hashtable<String,String>* pHeaders );
117
+ virtual INetResponse* pullFile(const String& strUrl, common::CRhoFile& oFile, IRhoSession* oSession, Hashtable<String,String>* pHeaders);
118
+ virtual INetResponse* pushMultipartData(const String& strUrl, VectorPtr<CMultipartItem*>& arItems, IRhoSession* oSession, Hashtable<String,String>* pHeaders);
119
+
120
+ virtual void cancel();
104
121
 
105
- CNetResponseImpl* sendMultipartData(VectorPtr<CMultipartItem*>& arItems);
122
+ virtual boolean getSslVerifyPeer() { return m_sslVerifyPeer; }
123
+ virtual void setSslVerifyPeer(boolean mode){ m_sslVerifyPeer = mode; }
106
124
 
107
- CNetResponseImpl* downloadFile(common::CRhoFile& oFile);
125
+ virtual INetResponse* createEmptyNetResponse(){ return new CNetResponseImpl(); }
108
126
 
109
127
  static void deinitConnection();
128
+
110
129
  private:
130
+ void close();
131
+ bool isError(){ return m_pszErrFunction!= null; }
132
+
133
+ void init( const char* method, const String& strUrl, IRhoSession* oSession, Hashtable<String,String>* pHeaders);
134
+
111
135
  String makeClientCookie();
112
136
 
113
137
  void ErrorMessage(LPCTSTR pszFunction);
@@ -430,7 +430,9 @@ extern "C" VALUE event_fetch_by_id(const char *eid)
430
430
  return rho_ruby_get_NIL();
431
431
  }
432
432
 
433
- extern "C" void event_save(VALUE rEvent)
433
+ static rho::String return_string_value;
434
+
435
+ extern "C" const char* event_save(VALUE rEvent)
434
436
  {
435
437
  calendar_check();
436
438
  IPOutlookApp * polApp = COutlookApp::getInstance()->getApp();
@@ -447,7 +449,18 @@ extern "C" void event_save(VALUE rEvent)
447
449
  eventFromRuby(rEvent, pEvent);
448
450
 
449
451
  CHECK(pEvent->Save());
452
+
453
+ if (pEvent != NULL) {
454
+ long lOid = 0;
455
+ if ( SUCCEEDED(pEvent->get_Oid(&lOid)) ) {
456
+ return_string_value = convertToStringA(lOid);
457
+ const char* rrr = return_string_value.c_str();
458
+ return rrr;
459
+ }
460
+ }
461
+
450
462
  END_CHECK
463
+ return NULL;
451
464
  }
452
465
 
453
466
  extern "C" void event_delete(const char *eid)
@@ -476,8 +489,9 @@ extern "C" VALUE event_fetch_by_id(const char *eid)
476
489
  return rho_ruby_get_NIL();
477
490
  }
478
491
 
479
- extern "C" void event_save(VALUE rEvent)
492
+ extern "C" const char* event_save(VALUE rEvent)
480
493
  {
494
+ return NULL;
481
495
  }
482
496
 
483
497
  extern "C" void event_delete(const char *eid)