From a951a8d9859ac78f2b993d72cf8c670dd51af6f7 Mon Sep 17 00:00:00 2001
From: Steffen Persch <s.persch@unlooped.com>
Date: Wed, 11 May 2016 00:10:58 +0200
Subject: [PATCH 1/8] remove string from parameter class

---
 src/PrintNode/Request.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/PrintNode/Request.php b/src/PrintNode/Request.php
index 5727991..6f772b9 100755
--- a/src/PrintNode/Request.php
+++ b/src/PrintNode/Request.php
@@ -489,7 +489,7 @@ public function getPrintJobsByPrinters()
      * @param string $computerId id of computer to find scales
      * @return Entity[]
      * */
-    public function getScales(string $computerId)
+    public function getScales($computerId)
     {
         $endPointUrl = $this->apiurl."/computer/";
         $endPointUrl.= $computerId;

From 9493f4f0a6b24e9b0e237f34660db2ff11bfca3e Mon Sep 17 00:00:00 2001
From: Steffen Persch <s.persch@unlooped.com>
Date: Wed, 11 May 2016 00:11:13 +0200
Subject: [PATCH 2/8] fix typo

---
 src/PrintNode/Scale.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/PrintNode/Scale.php b/src/PrintNode/Scale.php
index 3b60eb3..6fee6e1 100755
--- a/src/PrintNode/Scale.php
+++ b/src/PrintNode/Scale.php
@@ -29,7 +29,7 @@ class Scale extends Entity
     protected $port;
     protected $count;
     protected $measurement;
-    protected $clientReprotedCreateTimestamp;
+    protected $clientReportedCreateTimestamp;
     protected $ntpOffset;
     protected $ageOfData;
     protected $computerId;

From e0efed36491a99eb3119245791ffe87dd86b2e02 Mon Sep 17 00:00:00 2001
From: Steffen Persch <s.persch@unlooped.com>
Date: Wed, 11 May 2016 00:11:25 +0200
Subject: [PATCH 3/8] proper DateTime reference

---
 src/PrintNode/Scale.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/PrintNode/Scale.php b/src/PrintNode/Scale.php
index 6fee6e1..4f6af81 100755
--- a/src/PrintNode/Scale.php
+++ b/src/PrintNode/Scale.php
@@ -13,7 +13,7 @@
  * @property-read string $port
  * @property-read int $count
  * @property-read int[string] $measurement
- * @property-read DateTime $clientReportedCreateTimestamp
+ * @property-read \DateTime $clientReportedCreateTimestamp
  * @property-read string $ntpOffset
  * @property-read int $ageOfData
  * @property-read int $computerId

From a245277d8bda6a6494b304f47e92ae31179a4a8a Mon Sep 17 00:00:00 2001
From: Steffen Persch <s.persch@unlooped.com>
Date: Mon, 16 May 2016 06:24:11 +0200
Subject: [PATCH 4/8] [REF] InvalidArgumentException namespace

---
 src/PrintNode/Request.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/PrintNode/Request.php b/src/PrintNode/Request.php
index 6f772b9..62cb9f3 100755
--- a/src/PrintNode/Request.php
+++ b/src/PrintNode/Request.php
@@ -522,7 +522,7 @@ public function getPrintersByComputers()
         $arguments = func_get_args();
 
         if (count($arguments) > 2) {
-            throw new InvalidArgumentException(
+            throw new \InvalidArgumentException(
                 sprintf(
                     'Too many arguments given to getPrintersByComputers.'
                 )
@@ -570,7 +570,7 @@ public function __call($methodName, $arguments)
             $arguments = array_shift($arguments);
 
             if (!is_string($arguments)) {
-                throw new InvalidArgumentException(
+                throw new \InvalidArgumentException(
                     sprintf(
                         'Invalid argument type passed to %s. Expecting a string got %s',
                         $methodName,
@@ -614,7 +614,7 @@ public function __call($methodName, $arguments)
     public function patch(Entity $entity)
     {
         if (!($entity instanceof Entity)) {
-            throw new InvalidArgumentException(
+            throw new \InvalidArgumentException(
                 sprintf(
                     'Invalid argument type passed to patch. Expecting Entity got %s',
                     gettype($entity)
@@ -644,7 +644,7 @@ public function patch(Entity $entity)
     public function post(Entity $entity)
     {
         if (!($entity instanceof Entity)) {
-            throw new InvalidArgumentException(
+            throw new \InvalidArgumentException(
                 sprintf(
                     'Invalid argument type passed to patch. Expecting Entity got %s',
                     gettype($entity)
@@ -677,7 +677,7 @@ public function put()
         $entity = array_shift($arguments);
 
         if (!($entity instanceof Entity)) {
-            throw new InvalidArgumentException(
+            throw new \InvalidArgumentException(
                 sprintf(
                     'Invalid argument type passed to patch. Expecting Entity got %s',
                     gettype($entity)

From a64c576535258e014b3b782d2388c3a9c28dcadc Mon Sep 17 00:00:00 2001
From: Ben Lippincott <benji.lippincott@gmail.com>
Date: Tue, 28 Jun 2016 10:18:17 -0400
Subject: [PATCH 5/8] Fixed typo

emailpassword should be emailPassword
---
 src/PrintNode/Credentials.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/PrintNode/Credentials.php b/src/PrintNode/Credentials.php
index 571375a..1f11a8a 100755
--- a/src/PrintNode/Credentials.php
+++ b/src/PrintNode/Credentials.php
@@ -35,7 +35,7 @@ public function setEmailPassword($email, $password)
                 "ApiKey already set."
             );
 		}
-		$this->emailpassword = $email.': '.$password;
+		$this->emailPassword = $email.': '.$password;
 		return $this;
     }
 

From fff7052381a566ab0550a7857c6473c2e740662a Mon Sep 17 00:00:00 2001
From: Luke Cousins <luke@viovet.co.uk>
Date: Tue, 25 Apr 2017 09:26:13 +0100
Subject: [PATCH 6/8] Adding ability to add options (such as copies)

---
 src/PrintNode/PrintJob.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/PrintNode/PrintJob.php b/src/PrintNode/PrintJob.php
index 610713c..42ca00f 100755
--- a/src/PrintNode/PrintJob.php
+++ b/src/PrintNode/PrintJob.php
@@ -13,6 +13,7 @@
  * @property string $contentType
  * @property string $content
  * @property string $source
+ * @property string $options
  * @property-read int $filesize
  * @property-read DateTime $createTimestamp
  * @property-read string $state
@@ -29,6 +30,7 @@ class PrintJob extends Entity
     protected $createTimestamp;
     protected $state;
     protected $expireAt;
+    protected $options;
 
     public function foreignKeyEntityMap()
     {

From 5ef5f88a3365045e5f54aea19848efcf7774d50b Mon Sep 17 00:00:00 2001
From: Luke Cousins <luke@viovet.co.uk>
Date: Tue, 25 Apr 2017 09:29:56 +0100
Subject: [PATCH 7/8] Correcting doc comment

---
 src/PrintNode/PrintJob.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/PrintNode/PrintJob.php b/src/PrintNode/PrintJob.php
index 42ca00f..70932ae 100755
--- a/src/PrintNode/PrintJob.php
+++ b/src/PrintNode/PrintJob.php
@@ -13,7 +13,7 @@
  * @property string $contentType
  * @property string $content
  * @property string $source
- * @property string $options
+ * @property array $options
  * @property-read int $filesize
  * @property-read DateTime $createTimestamp
  * @property-read string $state

From b546c398f02898639c69bfaaf824e550b3e67162 Mon Sep 17 00:00:00 2001
From: Chris McHugh <himself@me.com>
Date: Fri, 22 May 2020 16:36:16 -0400
Subject: [PATCH 8/8] Make curl timeout a configurable value.

---
 src/PrintNode/Request.php | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/PrintNode/Request.php b/src/PrintNode/Request.php
index 62cb9f3..9825a60 100755
--- a/src/PrintNode/Request.php
+++ b/src/PrintNode/Request.php
@@ -39,6 +39,12 @@ class Request
      * @var mixed
      */
     private $limit = 10;
+    
+    /**
+     * Curl timeout in seconds.
+     * @var int
+     */
+    private $curltimeout = 30;
 
     /**
      * Map entity names to API URLs
@@ -184,7 +190,7 @@ private function curlInit()
         curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
 		curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
 
-		curl_setopt($curlHandle, CURLOPT_TIMEOUT, 4);
+		curl_setopt($curlHandle, CURLOPT_TIMEOUT, (int)$this->curltimeout);
 
         curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, true);
 
@@ -333,6 +339,14 @@ public function setLimit($limit)
         $this->limit = $limit;
     }
 
+    public function setCurlTimeout($timeout)
+    {
+        if (!ctype_digit($timeout) && !is_int($timeout)) {
+            throw new \InvalidArgumentException('timeout should be a number');
+        }
+        $this->curltimeout = $timeout;
+    }
+
     /**
      * Delete an ApiKey for a child account
      * @param string $apikey