Пример #1
0
        public IPP Send(IPP request)
        {
            request.RequestId = ++this._RequestCounter;

            request.AttrGroup[AttrGroups.OperationAttributesTag].Add(new IPP.Attribute(Tag.URI, this.IPP_URI.ToString()));

            var content = new ByteArrayContent(request.ToByte());

            content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/ipp");

            var task = this._Client.PostAsync(this.URI, content);

            task.Wait();

            var res = task.Result;

            if (res.StatusCode != HttpStatusCode.OK)
            {
                throw new Exception(res.ReasonPhrase);
            }

            var conTask = res.Content.ReadAsByteArrayAsync();

            conTask.Wait();

            var response = new IPP(conTask.Result);

            return(response);
        }
Пример #2
0
        public static Job PrintJob(string userName, string jobName, string mimeType, byte[] data)
        {
            var ipp = new IPP();

            ipp.OperationId = OperationId.PrintJob;

            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(
                new IPP.Attribute(Tag.NameWithoutLanguage, userName)
                );

            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(
                new IPP.Attribute(Tag.NameWithoutLanguage, jobName)
                );

            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(
                new IPP.Attribute(Tag.MimeMediaType, mimeType)
                );

            ipp.Data = data;

            return(new Job()
            {
                Request = ipp,
                MimeType = mimeType,
                JobName = jobName,
                UserName = userName
            });
        }
Пример #3
0
        public void UpdateJobState(Job job)
        {
            var ipp = new IPP();

            ipp.OperationId = OperationId.GetJobAttributes;
            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(new IPP.Attribute(Tag.URI, "job-uri", job.JobURI));

            job.RecieveResponse(this.Send(ipp));
        }
Пример #4
0
 public void RecieveResponse(IPP ipp)
 {
     foreach (IPP.Attribute attr in ipp.AttrGroup[AttrGroups.JobAttributesTag])
     {
         if (attr.Tag == Tag.Integer && attr.Name.CompareTo("job-id") == 0)
         {
             this.JobID = (int)attr.ValueAsObject;
         }
         if (attr.Tag == Tag.URI && attr.Name.CompareTo("job-uri") == 0)
         {
             this.JobURI = (String)attr.ValueAsObject;
         }
         if (attr.Tag == Tag.Enum && attr.Name.CompareTo("job-state") == 0)
         {
             this.State = (DocumentState)attr.ValueAsObject;
         }
     }
 }
Пример #5
0
        protected IPP _GetPrinterAttributes()
        {
            var ipp = new IPP();

            ipp.OperationId = OperationId.GetPrinterAttributes;

            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(
                new IPP.Attribute(Tag.Keyword, "requested-attributes", "document-format-supported")
                );

            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(
                new IPP.Attribute(Tag.Keyword, "", "media-supported")
                );

            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(
                new IPP.Attribute(Tag.Keyword, "", "orientation-requested-supported")
                );

            ipp.AttrGroup[AttrGroups.OperationAttributesTag].Add(
                new IPP.Attribute(Tag.Keyword, "", "print-quality-supported")
                );

            return(this.Send(ipp));
        }