示例#1
0
        public CloudPrintShare PrinterUnShare(string printerId, string email)
        {
            try
            {
                string authCode;
                if (!Authorize(out authCode))
                    return new CloudPrintShare { success = false };

                var request = (HttpWebRequest)WebRequest.Create("https://www.google.com/cloudprint/unshare?");
                request.Method = "POST";

                // Setup the web request
                request.ServicePoint.Expect100Continue = false;

                // Add the headers
                request.Headers.Add("X-CloudPrint-Proxy", Source);
                request.Headers.Add("Authorization", "GoogleLogin auth=" + authCode);

                var p = new PostData();

                p.Params.Add(new PostDataParam { Name = "printerid", Value = printerId, Type = PostDataParamType.Field });
                p.Params.Add(new PostDataParam { Name = "email", Value = email, Type = PostDataParamType.Field });

                var postData = p.GetPostData();

                byte[] data = Encoding.UTF8.GetBytes(postData);

                request.ContentType = "multipart/form-data; boundary=" + p.Boundary;

                Stream stream = request.GetRequestStream();
                stream.Write(data, 0, data.Length);
                stream.Close();

                // Get response
                var response = (HttpWebResponse)request.GetResponse();
                var responseContent = new StreamReader(response.GetResponseStream()).ReadToEnd();

                var serializer = new DataContractJsonSerializer(typeof(CloudPrintShare));
                var ms = new MemoryStream(Encoding.Unicode.GetBytes(responseContent));
                var shareJob = serializer.ReadObject(ms) as CloudPrintShare;

                return shareJob;
            }
            catch (Exception ex)
            {
                return new CloudPrintShare { success = false, message = ex.Message };
            }
        }
示例#2
0
        public CloudPrintJob PrintDocument(string printerId, string title, byte[] document, String mimeType)
        {
            try
            {
                string authCode;
                if (!Authorize(out authCode))
                    return new CloudPrintJob { success = false };

                var b64 = Convert.ToBase64String(document);

                var request = (HttpWebRequest)WebRequest.Create("https://www.google.com/cloudprint/submit?output=json&printerid=" + printerId);
                request.Method = "POST";

                // Setup the web request
                request.ServicePoint.Expect100Continue = false;

                // Add the headers
                request.Headers.Add("X-CloudPrint-Proxy", Source);
                request.Headers.Add("Authorization", "GoogleLogin auth=" + authCode);

                var p = new PostData();

                p.Params.Add(new PostDataParam { Name = "printerid", Value = printerId, Type = PostDataParamType.Field });
                p.Params.Add(new PostDataParam { Name = "capabilities", Value = "{\"capabilities\":[{}]}", Type = PostDataParamType.Field });
                p.Params.Add(new PostDataParam { Name = "contentType", Value = "dataUrl", Type = PostDataParamType.Field });
                p.Params.Add(new PostDataParam { Name = "title", Value = title, Type = PostDataParamType.Field });

                p.Params.Add(new PostDataParam
                {
                    Name = "content",
                    Type = PostDataParamType.Field,
                    Value = "data:" + mimeType + ";base64," + b64
                });

                var postData = p.GetPostData();

                byte[] data = Encoding.UTF8.GetBytes(postData);

                request.ContentType = "multipart/form-data; boundary=" + p.Boundary;

                Stream stream = request.GetRequestStream();
                stream.Write(data, 0, data.Length);
                stream.Close();

                // Get response
                var response = (HttpWebResponse)request.GetResponse();
                var responseContent = new StreamReader(response.GetResponseStream()).ReadToEnd();

                var serializer = new DataContractJsonSerializer(typeof(CloudPrintJob));
                var ms = new MemoryStream(Encoding.Unicode.GetBytes(responseContent));
                var printJob = serializer.ReadObject(ms) as CloudPrintJob;

                return printJob;
            }
            catch (Exception ex)
            {
                return new CloudPrintJob { success = false, message = ex.Message };
            }
        }