Nest Rest API Connection Refused

1.6k views Asked by At

I am trying to set my home to away mode using the REST method. I am trying it with cURL, but I keep getting a "Connection refused after a redirect".

My Code:

$ch = curl_init("https://developer-api.nest.com/structures/$id?auth=$access_token");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"away":"away"}');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $fp);
curl_setopt($ch, CURLOPT_PUT, true);

echo curl_exec($ch);

The error log (with my id and access code changed):

* About to connect() to developer-api.nest.com port 443 (#0)
*   Trying 54.235.247.171... * connected
* Connected to developer-api.nest.com (54.235.247.171) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
* Server certificate:
*   subject: CN=developer-api.nest.com,OU=Domain Control Validated
*   start date: Apr 10 21:26:03 2014 GMT
*   expire date: Apr 10 21:26:03 2015 GMT
*   common name: developer-api.nest.com
*   issuer: CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O="GoDaddy.com, Inc.",L=Scottsdale,ST=Arizona,C=US
> PUT /structures/asdfghjkl?auth=c.asdfghjkl HTTP/1.1
Host: developer-api.nest.com
Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue

< HTTP/1.1 100 Continue
< HTTP/1.1 307 Temporary Redirect
< Content-Type: application/json; charset=UTF-8
< Access-Control-Allow-Origin: *
< Cache-Control: private, no-cache, max-age=0
< Location: https://firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/structures/asdfghjkl?auth=c.asdfghjkl
< Connection: close
< Content-Length: 0
< 
* Closing connection #0
* Issue another request to this URL: 'https://firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/structures/asdfghjkl?auth=c.asdfghjkl'
* About to connect() to firebase-apiserver03-tah01-iad01.dapi.production.nest.com port 9553 (#0)
*   Trying 54.167.139.72... * Connection refused
* couldn't connect to host
* Closing connection #0

Any idea why the initial connection would work, but the redirect not?

1

There are 1 answers

0
cconoly On BEST ANSWER

I found the problem to be my webserver had port 9553 blocked on the outbound side, so firebase was not refusing my connection, it was my firewall the whole time. After opening port 9553, everything worked fine.