Revision 3a62612d

b/trunk/Pithos.Interfaces/ObjectInfo.cs
147 147
        public Stream Stream { get; set; }
148 148

  
149 149

  
150
        public Uri StorageUri { get; set; }
150
        public Uri StorageUri
151
        {
152
            get { return _storageUri; }
153
            set { _storageUri = value; }
154
        }
151 155

  
152 156
        public string Account { get; set; }
153 157

  
......
287 291
        private bool _exists=true;
288 292
        private Uri _container;
289 293
        private Uri _name;
294
        private Uri _storageUri;
290 295
        private static Uri _emptyUri = new Uri(String.Empty, UriKind.Relative);
291 296

  
292 297
        public bool Exists
b/trunk/Pithos.Network/CloudFilesClient.cs
119 119
        public Uri StorageUrl { get; set; }
120 120

  
121 121

  
122
        public Uri RootAddressUri { get; set; }
122
        public Uri RootAddressUri
123
        {
124
            get { return _rootAddressUri; }
125
            set { _rootAddressUri = value; }
126
        }
123 127

  
124 128

  
125 129
        public double DownloadPercentLimit { get; set; }
......
138 142

  
139 143
        BufferManager _bufferManager=BufferManager.CreateBufferManager(TreeHash.DEFAULT_BLOCK_SIZE*4,(int)TreeHash.DEFAULT_BLOCK_SIZE);
140 144
        private string _userCatalogUrl;
145
        private Uri _rootAddressUri;
141 146

  
142 147
        public CloudFilesClient(string userName, string apiKey)
143 148
        {
......
167 172
            _userCatalogUrl = "https://pithos.okeanos.io/user_catalogs";
168 173
            //Get the root address (StorageUrl without the account)
169 174
            var storageUrl = StorageUrl.AbsoluteUri;
170
            //var usernameIndex = storageUrl.LastIndexOf(UserName);
171
            //var rootUrl = storageUrl.Substring(0, usernameIndex);
172
//            RootAddressUri = new Uri(rootUrl);
173
            RootAddressUri = new Uri(storageUrl);
175
            var usernameIndex = storageUrl.LastIndexOf(UserName);
176
            var rootUrl = storageUrl.Substring(0, usernameIndex);
177
            RootAddressUri = new Uri(rootUrl);
178
            //RootAddressUri = new Uri(storageUrl);
174 179

  
175 180
            var httpClientHandler = new HttpClientHandler
176 181
            {
......
234 239
                authClient.DefaultRequestHeaders.Add("X-Auth-User", UserName);
235 240
                authClient.DefaultRequestHeaders.Add("X-Auth-Key", ApiKey);
236 241

  
237
                string storageUrl;
242
                
238 243
                string token;
244
                string objectStorageService;
239 245
                
240 246
                //using (var response = await authClient.GetAsyncWithRetries(new Uri(VersionPath, UriKind.Relative),3).ConfigureAwait(false)) // .DownloadStringWithRetryRelative(new Uri(VersionPath, UriKind.Relative), 3);                    
241 247
                using (var response = await authClient.SendAsyncWithRetries(new HttpRequestMessage(HttpMethod.Post,new Uri("", UriKind.Relative)), 3).ConfigureAwait(false))
......
245 251
                    var body=await response.Content.ReadAsStringAsync();
246 252
                    JObject json = (JObject) JsonConvert.DeserializeObject(body);
247 253
                    dynamic jsonD = json;
248
                    
249
                    storageUrl = json["access"]["serviceCatalog"][6]["endpoints"][0]["publicURL"].ToString();
250
                    if (String.IsNullOrWhiteSpace(storageUrl))
254

  
255
                    objectStorageService = json["access"]["serviceCatalog"][6]["endpoints"][0]["publicURL"].ToString();
256
                    if (String.IsNullOrWhiteSpace(objectStorageService))
251 257
                        throw new InvalidOperationException("Failed to obtain storage url");
252 258

  
253 259
                    token = this.ApiKey;// response.Headers.GetFirstValue(TOKEN_HEADER);
......
255 261
                        throw new InvalidOperationException("Failed to obtain token url");
256 262
                }
257 263

  
264
                string storageUrl = new Uri(objectStorageService).Combine(UserName).ToString();
258 265
                _baseClient = new RestClient
259 266
                {
260 267
                    BaseAddress = storageUrl,
......
266 273
                Token = token;
267 274

  
268 275
                //Get the root address (StorageUrl without the account)
269
                //var usernameIndex=storageUrl.LastIndexOf(UserName);
270
                var rootUrl = storageUrl;//.Substring(0, usernameIndex);
276
                var rootUrl = objectStorageService;//.Substring(0, usernameIndex);
271 277
                RootAddressUri = new Uri(rootUrl);
272 278
                
273 279

  

Also available in: Unified diff