Photon String type maximum size

Here’s a problem I just don’t get. The following API call fails, returning just 693 characters out of what should be a 4608 character response in variable “s”.

I’ve checked the call from a browser and that works OK there. Is there some limit as to the size of a Photon variable declared as type “String” (not “string”) that I don’t know about? Why am I not getting the entire text?

#include <HttpClient.h>
HttpClient http;

// Headers currently need to be set at init, useful for API keys etc.
http_header_t headers[] =
  {
    //  { "Content-Type", "application/json" },
    //  { "Accept" , "application/json" },
    { "Accept" , "*/*"},
    { NULL, NULL } // NOTE: Always terminate headers will NULL
  } ;

http_request_t request;
http_response_t response;

void lcdPrintTAF ()
  {
  // Grab the unformatted TAF for a given airport
  
   int hn, mn, n ;
   String s, hs, ms ;

   request.hostname = "avwx.rest" ;
   request.port = 80;
   request.path = "/api/taf/KJFK" ;
    // Get request
    http.get(request, response, headers);

   if (response.status == 200)
     {
      s = (String)response.body ;
      n = s.indexOf ("Raw-Report") ; // <-- never gets found
  
      hs = s.substring (n + 7, n+110) ;
      hn = hs.indexOf ("Remarks") ;
      ms = hs.substring (1, hn - 3) ;
      TAF.setText (String(ms)) ;
     } // end if
   else
      TAF.setText ("Err" + String(response.status)) ;
  } // end lcdPrintTAF

Here are my compile stats:

Output of arm-none-eabi-size:

text	data	bss	dec	hex
21932	204	3184	25320	62

In a nutshell:
Flash used	22136 / 110592	20.0 %
RAM used	3388 / 20480	16.5 %

I know I asked a similar question last year but this doesn’t really same to be the same thing.

Bottom line: Is there any way to specify the size of a String variable?

I don’t think it has to do with String size, the problem is the buffer size in the HTTP client (it’s set to 1024 in the library). If I copy the library files, and change the buffer size to 8192, I get the whole response body.

3 Likes

Thanks - that sure sounds like the problem. But when I remove the #include “HttpClient.h” line and then include copies of HTTPCLIENT.CPP and HTTPCLIENT.H into my project (using the “+” button), it doesn’t compile. What am I doing wrong?

/src/nextiontest1.cpp:35:1: error: 'HttpClient' does not name a type
 
 ^

/src/nextiontest1.cpp:38:1: error: 'http_header_t' does not name a type
 char res[20];  // Scratch buffer for converting numbers to strings
 ^

/src/nextiontest1.cpp:46:1: error: 'http_request_t' does not name a type
 
 ^

/src/nextiontest1.cpp:47:1: error: 'http_response_t' does not name a type
 // Headers currently need to be set at init, useful for API keys etc.
 ^

/src/nextiontest1.cpp: In function 'void lcdPrintForecast()':
/src/nextiontest1.cpp:166:4: error: 'request' was not declared in this scope
   // Other sites that look good:
    ^

/src/nextiontest1.cpp:174:5: error: 'http' was not declared in this scope
 
     ^

/src/nextiontest1.cpp:174:23: error: 'response' was not declared in this scope
 
                       ^

/src/nextiontest1.cpp:174:33: error: 'headers' was not declared in this scope
 
                                 ^

/src/nextiontest1.cpp:161:12: warning: unused variable 'mn' [-Wunused-variable]
   // Grab the one word 12 hr. forecast from myweathrr2.com
            ^
/src/nextiontest1.cpp: In function 'void lcdPrintNews()':
/src/nextiontest1.cpp:242:4: error: 'request' was not declared in this scope
   // If this doesn't work, try:
    ^

/src/nextiontest1.cpp:250:5: error: 'http' was not declared in this scope
    String s, hs, ms ;
     ^

/src/nextiontest1.cpp:250:23: error: 'response' was not declared in this scope
    String s, hs, ms ;
                       ^

/src/nextiontest1.cpp:250:33: error: 'headers' was not declared in this scope
    String s, hs, ms ;
                                 ^

/src/nextiontest1.cpp:239:12: warning: unused variable 'mn' [-Wunused-variable]
   // Grab the one word 12 hr. forecast from myweathrr2.com
            ^
/src/nextiontest1.cpp: In function 'void lcdPrintTAF()':
/src/nextiontest1.cpp:314:4: error: 'request' was not declared in this scope
   // --------------------------------------------------------------------
    ^

/src/nextiontest1.cpp:322:5: error: 'http' was not declared in this scope
 
     ^

/src/nextiontest1.cpp:322:23: error: 'response' was not declared in this scope
 
                       ^

/src/nextiontest1.cpp:322:33: error: 'headers' was not declared in this scope
 
                                 ^

/src/nextiontest1.cpp:310:12: warning: unused variable 'mn' [-Wunused-variable]
      }
            ^
make[1]: *** [../build/target/user/platform-6src/nextiontest1.o] Error 1
make: *** [user] Error 2

Did you also change the include statement in the .cpp file; there should be a #include HttpClient line there, that you need to change if you changed the capitalization of the file names (the library files are HttpClient.h and HttpClient.cpp, not all capitals like you have).

I used all caps because when you look up HTTP in the online IDE Library tab, it comes up as HTTPCLIENT. But changing the name to HttpClient in my project still gives the same set of error messages for me as with all caps.

And if I change

#include "HttpClient.h"

in HttpClient.cpp to

#include "HTTPCLIENT.h"

and make the file names in my project all caps I still get all the same set of errors.

I freely admit I have no clue as to whatever behind the scenes linking is going on in the online IDE when you specify your own libraries and .h files. But it seems like it ought to work.

What about in my own code (the .ino file) - do I need to have a line
#include "HttpClient.h"
in there? Or does the linker automatically include files that appear in the top-line tabs? Coming from a straight Unix background, I find the Particle online IDE way of doing things very confusing.

Yes you do. Both the .cpp file and your .ino file need that include. That include should have been added automatically by the IDE when you added the new tabs.

OK, now both my code and my personal copy of HttpClient.cpp start with the line

#include <HttpClient.h>

But when I compile I get these new errors:

/src/HttpClient.cpp: In member function 'void HttpClient::request(http_request_t&, http_response_t&, http_header_t*, const char*)':
/src/HttpClient.cpp:176:19: warning: unused variable 'firstRead' [-Wunused-variable]
     unsigned long firstRead = millis();
                   ^
/src/nextiontest1.cpp: In function 'void lcdPrintForecast()':
/src/nextiontest1.cpp:161:12: warning: unused variable 'mn' [-Wunused-variable]
   // Grab the one word 12 hr. forecast from myweathrr2.com
            ^
/src/nextiontest1.cpp: In function 'void lcdPrintNews()':
/src/nextiontest1.cpp:239:12: warning: unused variable 'mn' [-Wunused-variable]
   // Grab the one word 12 hr. forecast from myweathrr2.com
            ^
/src/nextiontest1.cpp: In function 'void lcdPrintTAF()':
/src/nextiontest1.cpp:310:12: warning: unused variable 'mn' [-Wunused-variable]
      }
            ^
lib/HttpClient/src/HttpClient.cpp: In member function 'void HttpClient::request(http_request_t&, http_response_t&, http_header_t*, const char*)':
lib/HttpClient/src/HttpClient.cpp:176:19: warning: unused variable 'firstRead' [-Wunused-variable]
     unsigned long firstRead = millis();
                   ^
../../../build/target/user/platform-6/libuser.a(HttpClient.o): In function `HttpClient::sendHeader(char const*)':
lib/HttpClient/src/HttpClient.cpp:8: multiple definition of `HttpClient::HttpClient()'
../../../build/target/user/platform-6/libuser.a(HttpClient.o):/src/HttpClient.cpp:8: first defined here
../../../build/target/user/platform-6/libuser.a(HttpClient.o): In function `HttpClient::sendHeader(char const*)':
lib/HttpClient/src/HttpClient.cpp:8: multiple definition of `HttpClient::HttpClient()'
../../../build/target/user/platform-6/libuser.a(HttpClient.o):/src/HttpClient.cpp:8: first defined here
../../../build/target/user/platform-6/libuser.a(HttpClient.o): In function `HttpClient::sendHeader(char const*, int)':
lib/HttpClient/src/HttpClient.cpp:17: multiple definition of `HttpClient::sendHeader(char const*, char const*)'
../../../build/target/user/platform-6/libuser.a(HttpClient.o):/src/HttpClient.cpp:17: first defined here
../../../build/target/user/platform-6/libuser.a(HttpClient.o): In function `__static_initialization_and_destruction_0':
lib/HttpClient/src/HttpClient.cpp:30: multiple definition of `HttpClient::sendHeader(char const*, int)'
../../../build/target/user/platform-6/libuser.a(HttpClient.o):/src/HttpClient.cpp:30: first defined here
../../../build/target/user/platform-6/libuser.a(HttpClient.o): In function `String::operator!=(char const*) const':
lib/HttpClient/src/HttpClient.cpp:44: multiple definition of `HttpClient::sendHeader(char const*)'
../../../build/target/user/platform-6/libuser.a(HttpClient.o):/src/HttpClient.cpp:44: first defined here
../../../build/target/user/platform-6/libuser.a(HttpClient.o): In function `HttpClient::request(http_request_t&, http_response_t&, http_header_t*, char const*)':
lib/HttpClient/src/HttpClient.cpp:57: multiple definition of `HttpClient::request(http_request_t&, http_response_t&, http_header_t*, char const*)'
../../../build/target/user/platform-6/libuser.a(HttpClient.o):/src/HttpClient.cpp:57: first defined here
collect2: error: ld returned 1 exit status
make: *** [92dbec7cc83bcdb1bb58c6be87ba54ba451f102a6686c5c79965571fe899.elf] Error 1

I think what it’s really complaining about is this one:

 lib/HttpClient/src/HttpClient.cpp:8: multiple definition of `HttpClient::HttpClient()'
    ../../../build/target/user/platform-6/libuser.a(HttpClient.o):/src/HttpClient.cpp:8: first defined here

but I see no other definition of HttpClient::HttpClient() anywhere in HttpClient.cpp. Or is it the fact that HttpClient::SendHeader is defined three times in different ways? Can you really do that? I tried commenting out two of the definitions but it still wouldn’t compile.

I don’t know why that would be, and I really don’t know exactly what you’ve done, or changed at this point. Maybe you should start over with copying the library. Try deleting those tabs, and add new ones – make sure you name it HttpClient, then copy the appropriate code into the .h and .cpp files. That’s all I did, and it compiled just fine. One thing I noticed lately, is that when I copy the .h code into a new .h file, it also copies that code into the .cpp file (or vice versa). Did that happen to you? Did you delete that extra code before adding the correct code?

You need to remove the imported library from your project again, since you now have your own copy.

1 Like

Thanks for the suggestion. I checked the file HttpClient.cpp and it only contains what it should. It does not have a copy of the .h file in it.

Did you remove the imported library, as @ScruffR suggested?

OK, I took the line

#include <HttpClient.h>

back out of my program again and recompiled. Now I get a whole new set of errors:

Processing  /workspace/nextiontest1.ino
particle-cli v1.19.4

! A newer version (1.21.0) of particle-cli is available.
! Upgrade now by running: npm install -g particle-cli

Checking library ITEADLIB_Nextion...
Checking library HttpClient...
Checking library SparkFun_Serial_Graphic_LCD...
Installing library HttpClient 0.0.5 to /workspace/lib/HttpClient ...
Installing library SparkFun_Serial_Graphic_LCD 1.1.1 to /workspace/lib/SparkFun_Serial_Graphic_LCD ...
Installing library ITEADLIB_Nextion 0.0.12 to /workspace/lib/ITEADLIB_Nextion ...
Library HttpClient 0.0.5 installed.
Library SparkFun_Serial_Graphic_LCD 1.1.1 installed.
Library ITEADLIB_Nextion 0.0.12 installed.
make -C ../modules/photon/user-part all
make[1]: Entering directory '/firmware/modules/photon/user-part'
make -C ../../../user 
make[2]: Entering directory '/firmware/user'
Building cpp file: /workspace//src/HttpClient.cpp
Invoking: ARM GCC CPP Compiler
mkdir -p ../build/target/user/platform-6-m/workspace/src/
arm-none-eabi-gcc -DSTM32_DEVICE -DSTM32F2XX -DPLATFORM_THREADING=1 -DPLATFORM_ID=6 -DPLATFORM_NAME=photon -DUSBD_VID_SPARK=0x2B04 -DUSBD_PID_DFU=0xD006 -DUSBD_PID_CDC=0xC006 -DSPARK_PLATFORM -g3 -gdwarf-2 -Os -mcpu=cortex-m3 -mthumb -DINCLUDE_PLATFORM=1 -DPRODUCT_ID=6 -DPRODUCT_FIRMWARE_VERSION=65535 -DUSE_STDPERIPH_DRIVER -DDFU_BUILD_ENABLE -DPARTICLE_NO_ARDUINO_COMPATIBILITY=0 -DSYSTEM_VERSION_STRING=0.6.1 -DRELEASE_BUILD -I./inc -I../wiring/inc -I../system/inc -I../services/inc -I../communication/src -I../hal/inc -I../hal/shared -I../hal/src/photon -I../hal/src/stm32f2xx -I../hal/src/stm32 -I../hal/src/photon/api -I../platform/shared/inc -I../platform/MCU/STM32F2xx/STM32_USB_Host_Driver/inc -I../platform/MCU/STM32F2xx/STM32_StdPeriph_Driver/inc -I../platform/MCU/STM32F2xx/STM32_USB_OTG_Driver/inc -I../platform/MCU/STM32F2xx/STM32_USB_Device_Driver/inc -I../platform/MCU/STM32F2xx/SPARK_Firmware_Driver/inc -I../platform/MCU/shared/STM32/inc -I../platform/MCU/STM32F2xx/CMSIS/Include -I../platform/MCU/STM32F2xx/CMSIS/Device/ST/Include -I../dynalib/inc -I/workspace//src -I./libraries -I/workspace//src -I/workspace//src -I/workspace//src -I/workspace//src -I/workspace/lib/ITEADLIB_Nextion/src -I/workspace/lib/SparkFun_Serial_Graphic_LCD/src -I/workspace/lib/HttpClient/src -I. -MD -MP -MF ../build/target/user/platform-6-m/workspace/src/HttpClient.o.d -ffunction-sections -fdata-sections -Wall -Wno-switch -Wno-error=deprecated-declarations -fmessage-length=0 -fno-strict-aliasing -DSPARK=1 -DPARTICLE=1 -DSTART_DFU_FLASHER_SERIAL_SPEED=14400 -DSTART_YMODEM_FLASHER_SERIAL_SPEED=28800 -DSPARK_PLATFORM_NET=BCM9WCDUSI09 -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc  -DLOG_INCLUDE_SOURCE_INFO=1 -DPARTICLE_USER_MODULE -DUSE_THREADING=0 -DUSE_SPI=SPI -DUSE_CS=A2 -DUSE_SPI=SPI -DUSE_CS=A2 -DUSE_THREADING=0 -DUSER_FIRMWARE_IMAGE_SIZE=0x20000 -DUSER_FIRMWARE_IMAGE_LOCATION=0x80A0000 -DMODULAR_FIRMWARE=1 -DMODULE_VERSION=4 -DMODULE_FUNCTION=5 -DMODULE_INDEX=1 -DMODULE_DEPENDENCY=4,2,105 -D_WINSOCK_H -D_GNU_SOURCE -DLOG_MODULE_CATEGORY="\"app\""  -fno-exceptions -fno-rtti -fcheck-new -std=gnu++11 -c -o ../build/target/user/platform-6-m/workspace/src/HttpClient.o /workspace//src/HttpClient.cpp
/workspace//src/HttpClient.cpp: In member function 'void HttpClient::request(http_request_t&, http_response_t&, http_header_t*, const char*)':
/workspace//src/HttpClient.cpp:176:19: warning: unused variable 'firstRead' [-Wunused-variable]
     unsigned long firstRead = millis();
                   ^

Building cpp file: /workspace//src/nextiontest1.cpp
Invoking: ARM GCC CPP Compiler
mkdir -p ../build/target/user/platform-6-m/workspace/src/
arm-none-eabi-gcc -DSTM32_DEVICE -DSTM32F2XX -DPLATFORM_THREADING=1 -DPLATFORM_ID=6 -DPLATFORM_NAME=photon -DUSBD_VID_SPARK=0x2B04 -DUSBD_PID_DFU=0xD006 -DUSBD_PID_CDC=0xC006 -DSPARK_PLATFORM -g3 -gdwarf-2 -Os -mcpu=cortex-m3 -mthumb -DINCLUDE_PLATFORM=1 -DPRODUCT_ID=6 -DPRODUCT_FIRMWARE_VERSION=65535 -DUSE_STDPERIPH_DRIVER -DDFU_BUILD_ENABLE -DPARTICLE_NO_ARDUINO_COMPATIBILITY=0 -DSYSTEM_VERSION_STRING=0.6.1 -DRELEASE_BUILD -I./inc -I../wiring/inc -I../system/inc -I../services/inc -I../communication/src -I../hal/inc -I../hal/shared -I../hal/src/photon -I../hal/src/stm32f2xx -I../hal/src/stm32 -I../hal/src/photon/api -I../platform/shared/inc -I../platform/MCU/STM32F2xx/STM32_USB_Host_Driver/inc -I../platform/MCU/STM32F2xx/STM32_StdPeriph_Driver/inc -I../platform/MCU/STM32F2xx/STM32_USB_OTG_Driver/inc -I../platform/MCU/STM32F2xx/STM32_USB_Device_Driver/inc -I../platform/MCU/STM32F2xx/SPARK_Firmware_Driver/inc -I../platform/MCU/shared/STM32/inc -I../platform/MCU/STM32F2xx/CMSIS/Include -I../platform/MCU/STM32F2xx/CMSIS/Device/ST/Include -I../dynalib/inc -I/workspace//src -I./libraries -I/workspace//src -I/workspace//src -I/workspace//src -I/workspace//src -I/workspace/lib/ITEADLIB_Nextion/src -I/workspace/lib/SparkFun_Serial_Graphic_LCD/src -I/workspace/lib/HttpClient/src -I. -MD -MP -MF ../build/target/user/platform-6-m/workspace/src/nextiontest1.o.d -ffunction-sections -fdata-sections -Wall -Wno-switch -Wno-error=deprecated-declarations -fmessage-length=0 -fno-strict-aliasing -DSPARK=1 -DPARTICLE=1 -DSTART_DFU_FLASHER_SERIAL_SPEED=14400 -DSTART_YMODEM_FLASHER_SERIAL_SPEED=28800 -DSPARK_PLATFORM_NET=BCM9WCDUSI09 -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc  -DLOG_INCLUDE_SOURCE_INFO=1 -DPARTICLE_USER_MODULE -DUSE_THREADING=0 -DUSE_SPI=SPI -DUSE_CS=A2 -DUSE_SPI=SPI -DUSE_CS=A2 -DUSE_THREADING=0 -DUSER_FIRMWARE_IMAGE_SIZE=0x20000 -DUSER_FIRMWARE_IMAGE_LOCATION=0x80A0000 -DMODULAR_FIRMWARE=1 -DMODULE_VERSION=4 -DMODULE_FUNCTION=5 -DMODULE_INDEX=1 -DMODULE_DEPENDENCY=4,2,105 -D_WINSOCK_H -D_GNU_SOURCE -DLOG_MODULE_CATEGORY="\"app\""  -fno-exceptions -fno-rtti -fcheck-new -std=gnu++11 -c -o ../build/target/user/platform-6-m/workspace/src/nextiontest1.o /workspace//src/nextiontest1.cpp
/workspace//src/nextiontest1.cpp:35:1: error: 'HttpClient' does not name a type
 
 ^

/workspace//src/nextiontest1.cpp:38:1: error: 'http_header_t' does not name a type
 char res[20];  // Scratch buffer for converting numbers to strings
 ^

/workspace//src/nextiontest1.cpp:46:1: error: 'http_request_t' does not name a type
 
 ^

/workspace//src/nextiontest1.cpp:47:1: error: 'http_response_t' does not name a type
 // Headers currently need to be set at init, useful for API keys etc.
 ^

/workspace//src/nextiontest1.cpp: In function 'void lcdPrintForecast()':
/workspace//src/nextiontest1.cpp:166:4: error: 'request' was not declared in this scope
   // Other sites that look good:
    ^

/workspace//src/nextiontest1.cpp:174:5: error: 'http' was not declared in this scope
 
     ^

/workspace//src/nextiontest1.cpp:174:23: error: 'response' was not declared in this scope
 
                       ^

/workspace//src/nextiontest1.cpp:174:33: error: 'headers' was not declared in this scope
 
                                 ^

/workspace//src/nextiontest1.cpp:161:12: warning: unused variable 'mn' [-Wunused-variable]
   // Grab the one word 12 hr. forecast from myweathrr2.com
            ^
/workspace//src/nextiontest1.cpp: In function 'void lcdPrintNews()':
/workspace//src/nextiontest1.cpp:242:4: error: 'request' was not declared in this scope
   // If this doesn't work, try:
    ^

/workspace//src/nextiontest1.cpp:250:5: error: 'http' was not declared in this scope
    String s, hs, ms ;
     ^

/workspace//src/nextiontest1.cpp:250:23: error: 'response' was not declared in this scope
    String s, hs, ms ;
                       ^

/workspace//src/nextiontest1.cpp:250:33: error: 'headers' was not declared in this scope
    String s, hs, ms ;
                                 ^

/workspace//src/nextiontest1.cpp:239:12: warning: unused variable 'mn' [-Wunused-variable]
   // Grab the one word 12 hr. forecast from myweathrr2.com
            ^
/workspace//src/nextiontest1.cpp: In function 'void lcdPrintTAF()':
/workspace//src/nextiontest1.cpp:314:4: error: 'request' was not declared in this scope
   // --------------------------------------------------------------------
    ^

/workspace//src/nextiontest1.cpp:322:5: error: 'http' was not declared in this scope
 
     ^

/workspace//src/nextiontest1.cpp:322:23: error: 'response' was not declared in this scope
 
                       ^

/workspace//src/nextiontest1.cpp:322:33: error: 'headers' was not declared in this scope
 
                                 ^

/workspace//src/nextiontest1.cpp:310:12: warning: unused variable 'mn' [-Wunused-variable]
      }
            ^
../build/module.mk:267: recipe for target '../build/target/user/platform-6-m/workspace/src/nextiontest1.o' failed
make[2]: Leaving directory '/firmware/user'
make[2]: *** [../build/target/user/platform-6-m/workspace/src/nextiontest1.o] Error 1
../../../build/recurse.mk:11: recipe for target 'user' failed
make[1]: Leaving directory '/firmware/modules/photon/user-part'
make[1]: *** [user] Error 2
../build/recurse.mk:11: recipe for target 'modules/photon/user-part' failed
make: *** [modules/photon/user-part] Error 2

If that means did I comment out the #include line for HttpClient, then yes, I did that.

I also tried deleting both tabs for HttpClient.cpp and HttpClient.h, then hitting “+” to start over again, naming the lib “HttpClient”, recopying the HttpClient.cpp and HttpClient.h files from the HTTPCLIENT library found in the Libraries tab, saving, and then recompiling. Didn’t help.

That’s not removing the library. You still need that include for your own version of the library. To remove a library, you need to go over to the left pane, and remove the library there. However, I was just looking at some of my code, and I now don’t see any way to remove a library. I thought there used to be a remove button (an “x” next to the library name?) but now I don’t see that any more. Hmm…

2 Likes

Ha. Finally. Thanks a million, @Ric. I mistakenly believed that removing the #include would cause the compiler to automagically use the files in my top-line tabs. Luckily, my IDE has the “X”. I clicked that, confirmed, recompiled and hey presto, success!

Yeah, I see that too, if I create a new app. It is missing on my old apps where the heading above the libraries says “Included Legacy Libraries”, instead of just “Included Libraries”.

Oh, and back to the original question. I changed the value of “buffer” in HttpClient.h from 1024 to 8192 and now I’m getting all my data from the API endpoint. It’s not truncated anymore.

Is there some legacy reason this number is set so low? Perhaps Particle could break it out as a user-settable value?

@Michele, that size was decided by the original author of the library. This is community member submitted library, not a Particle library :wink:

Oh, OK. I was just looking at the Help for the LIbraries tab, and there it says (emphasis mine)

Particle libraries are reliable. In addition to building and sharing our own high quality libraries, Particle verifies and promotes high quality community libraries that are fully documented, perform reliably, and include a variety of usage examples. Using our official and verified libraries means you’ll spend less time debugging and more time building your project.

Is there any way to hunt down the author of this library? There’s no hint in the files.

@Michele, here is the Author’s github site:

Given his level of activity, he may not be maintaining the library. Post an issue to see if he responds. :wink: