BiasedBit.MinusEngine.MinusApi.UploadItem C# (CSharp) Метод

UploadItem() публичный Метод

public UploadItem ( String cookieHeader, String editorId, String key, String filename, Stream data ) : void
cookieHeader String
editorId String
key String
filename String
data Stream
Результат void
        public void UploadItem(String cookieHeader, String editorId, String key, String filename, Stream data)
        {
            UriBuilder ub = new UriBuilder(UPLOAD_ITEM_URL);
            ub.Query = string.Format("filename={0}&key={1}&editor_id={2}&reader_id={2}", filename, key, editorId);

            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ub.Uri);
                request.Method = "POST";
                request.ContentType = "application/octet-stream";
                request.Headers.Add("Content-Disposition", "attachment; filename=" + filename);
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.SetCookies(new Uri(BASE_URL), cookieHeader);

                ThreadPool.QueueUserWorkItem((object state) =>
                {

                    request.BeginGetRequestStream(delegate(IAsyncResult result)
                    {
                        HttpWebRequest reqstate = (HttpWebRequest)result.AsyncState;

                        Stream postStream = reqstate.EndGetRequestStream(result);
                        PushData(data, postStream);
                        postStream.Close();

                        reqstate.BeginGetResponse(delegate(IAsyncResult result2)
                        {
                            try
                            {
                                WebResponse response = ((HttpWebRequest)result2.AsyncState).EndGetResponse(result2);
                                StreamReader reader = new StreamReader(response.GetResponseStream());
                                string responseString = reader.ReadToEnd();
                                reader.Close();
                                response.Close();
                                UploadItemResult resultItems = JsonConvert.DeserializeObject<UploadItemResult>(responseString);
                                Debug.WriteLine("UploadItem operation successful: " + resultItems);
                                this.TriggerUploadItemComplete(resultItems);
                            }
                            catch (Exception e)
                            {
                                Debug.WriteLine("Upload Failed" + e.Message);
                                this.TriggerUploadItemFailed(e);
                            }

                        }
                            , reqstate);

                    }, request);
                });
            }
            catch (Exception e)
            {
                Debug.WriteLine("Failed to submit task to thread pool: " + e.Message);
                this.TriggerUploadItemFailed(e);
            }
        }

Same methods

MinusApi::UploadItem ( String cookieHeader, String editorId, String key, String filename, String desiredFilename = null ) : void

Usage Example

Пример #1
0
        /// <summary>
        /// Tests the full scope of methods in the API.
        /// This method creates a gallery, uploads a couple of items, saves them and then retrieves them.
        /// Make sure you change the values of the items in the "items" array to match actually valid files or this
        /// will fail.
        /// </summary>
        private static void TestAll()
        {
            // The call that triggers the program is the near the end of this method
            // (the rest is pretty much setup to react to events)

            // create the API
            MinusApi api = new MinusApi(API_KEY);

            // Prepare the items to be uploaded
            String[] items =
            {
                @"C:\Users\bruno\Desktop\clown.png",
                @"C:\Users\bruno\Desktop\small.png"
            };
            IList<String> uploadedItems = new List<String>(items.Length);

            // create a couple of things we're going to need between requests
            CreateGalleryResult galleryCreated = null;

            // set up the listeners for CREATE
            api.CreateGalleryFailed += delegate(MinusApi sender, Exception e)
            {
                // don't do anything else...
                Console.WriteLine("Failed to create gallery..." + e.Message);
            };
            api.CreateGalleryComplete += delegate(MinusApi sender, CreateGalleryResult result)
            {
                // gallery created, trigger upload of the first file
                galleryCreated = result;
                Console.WriteLine("Gallery created! " + result);
                Thread.Sleep(1000);
                Console.WriteLine("Uploading files...");
                api.UploadItem(result.EditorId, result.Key, items[0]);
            };

            // set up the listeners for UPLOAD
            api.UploadItemFailed += delegate(MinusApi sender, Exception e)
            {
                // don't do anything else...
                Console.WriteLine("Upload failed: " + e.Message);
            };
            api.UploadItemComplete += delegate(MinusApi sender, UploadItemResult result)
            {
                // upload complete, either trigger another upload or save the gallery if all files have been uploaded
                Console.WriteLine("Upload successful: " + result);
                uploadedItems.Add(result.Id);
                if (uploadedItems.Count == items.Length)
                {
                    // if all the elements are uploaded, then save the gallery
                    Console.WriteLine("All uploads complete, saving gallery...");
                    api.SaveGallery("testGallery", galleryCreated.EditorId, galleryCreated.Key, uploadedItems.ToArray());
                }
                else
                {
                    // otherwise just keep uploading
                    Console.WriteLine("Uploading item " + (uploadedItems.Count + 1));
                    api.UploadItem(galleryCreated.EditorId, galleryCreated.Key, items[uploadedItems.Count]);
                }
            };

            // set up the listeners for SAVE
            api.SaveGalleryFailed += delegate(MinusApi sender, Exception e)
            {
                Console.WriteLine("Failed to save gallery... " + e.Message);
            };
            api.SaveGalleryComplete += delegate(MinusApi sender)
            {
                // The extra "m" is appended because minus uses the first character to determine the type of data
                // you're accessing (image, gallery, etc) and route you accordingly.
                Console.WriteLine("Gallery saved! You can now access it at http://min.us/m" + galleryCreated.ReaderId);
                api.SignIn("123test123", "123test123");
            };

            //set up listeners for SignIn
            api.SignInFailed += delegate(MinusApi sender, Exception e)
            {
                Console.WriteLine("Failed to Sign In... " + e.Message);
            };
            api.SignInComplete += delegate(MinusApi sender, SignInResult result)
            {
                Console.WriteLine("Signed In: " + result.Success);
            };

            // this is the call that actually triggers the whole program
            api.CreateGallery();
        }