[twitter-dev] Re: Twitter Search issue

2009-03-03 Thread Matt Sanford

Hi Paul,

It sounds like whatever is generating your API requests is double  
URL encoding. So the space becomes %20, and then on the second url  
encoding the % becomes a %25.


Thanks;
  — Matt Sanford / @mzsanford

On Mar 3, 2009, at 07:34 AM, Paul Kinlan wrote:


Hi,

I am noticing something that I think is odd at the moment.

Some of our users are not getting searches that are enclosed in  
quotes via the API, yet they work directly from the website.


For example there is a difference between the following query on the  
API and Website:


http://search.twitter.com/search?q=%22exeter%20city%22 which has the  
same results as http://search.twitter.com/search?q=%22exeter+city%22


but returns a different result via the API using the following query

http://search.twitter.com/search.json?q=exeter%20city;

Looking at what is returned by the API the query looks like it has  
been transformed in to %22exeter%2520city%22. To me the %2520  
looks odd when I would expect %20


Kind Regards,
Paul Kinlan




[twitter-dev] Re: Twitter Search issue

2009-03-03 Thread Paul Kinlan
Hi Matt,

I was typing the search term through IE (to test it after reports that 
enclosed searches aren't working) as
http://search.twitter.com/search.json?q=exeter city which it then converts
to http://search.twitter.com/search.json?q=exeter%20city; but the result
came back as %22exeter*%2520*city%22 (see json object below) in the search
API json object.  It works in firefox so I am presuming firefox is correctly
encoding the url.

{results:[],since_id:0,max_id:1273765306,refresh_url:?since_id=1273765306q=%22exeter%2520city%22,results_per_page:15,completed_in:1.313905,page:1,query:%22exeter%2520city%22}

it is highly likely that if IE is having the issue, the client API would
probably have it, however the query that is going out over the wire (I
checked with fiddler as exeter%20city and the result comes back as above,
so I don't think it is us for the entire problem).

Kind Regards,
Paul.

2009/3/3 Matt Sanford m...@twitter.com

 Hi Paul,
 It sounds like whatever is generating your API requests is double URL
 encoding. So the space becomes %20, and then on the second url encoding the
 % becomes a %25.

 Thanks;
   — Matt Sanford / @mzsanford

 On Mar 3, 2009, at 07:34 AM, Paul Kinlan wrote:

 Hi,

 I am noticing something that I think is odd at the moment.

 Some of our users are not getting searches that are enclosed in quotes via
 the API, yet they work directly from the website.

 For example there is a difference between the following query on the API
 and Website:

 http://search.twitter.com/search?q=%22exeter%20city%22 which has the same
 results as http://search.twitter.com/search?q=%22exeter+city%22

 but returns a different result via the API using the following query

 http://search.twitter.com/search.json?q=exeter%20city;

 Looking at what is returned by the API the query looks like it has been
 transformed in to %22exeter*%2520*city%22. To me the %2520 looks odd
 when I would expect %20

 Kind Regards,
 Paul Kinlan





[twitter-dev] Re: Twitter Search issue

2009-03-03 Thread Chad Etzel

I also just tested searching exeter city in TweetGrid with IE,
FireFox, and Chrome. All came back with the same results.
fwiw,
-Chad

On Tue, Mar 3, 2009 at 11:14 AM, Matt Sanford m...@twitter.com wrote:
 Hi Paul,
     I just tested form the command line and everything seems fine with: curl
 'http://search.twitter.com/search.json?q=%22exeter%20city%22'
     If you are typing %20 into the IE address bar it is likely try to
 correct your %  (which is not a valid URL character) and making it %25 in
 the request but displaying it correctly to you. Try replacing it with a + or
 a space and see what you get.
 Thanks;
   — Matt
 - Show quoted text -
 On Mar 3, 2009, at 08:06 AM, Paul Kinlan wrote:

 Forgot to add, I am checking our client library now too.

 Paul.

 2009/3/3 Paul Kinlan paul.kin...@gmail.com

 Hi Matt,

 I was typing the search term through IE (to test it after reports that 
 enclosed searches aren't working) as
 http://search.twitter.com/search.json?q=exeter city which it then converts
 to http://search.twitter.com/search.json?q=exeter%20city; but the result
 came back as %22exeter%2520city%22 (see json object below) in the search
 API json object.  It works in firefox so I am presuming firefox is correctly
 encoding the url.


 {results:[],since_id:0,max_id:1273765306,refresh_url:?since_id=1273765306q=%22exeter%2520city%22,results_per_page:15,completed_in:1.313905,page:1,query:%22exeter%2520city%22}

 it is highly likely that if IE is having the issue, the client API would
 probably have it, however the query that is going out over the wire (I
 checked with fiddler as exeter%20city and the result comes back as above,
 so I don't think it is us for the entire problem).

 Kind Regards,
 Paul.

 2009/3/3 Matt Sanford m...@twitter.com

 Hi Paul,
     It sounds like whatever is generating your API requests is double URL
 encoding. So the space becomes %20, and then on the second url encoding the
 % becomes a %25.
 Thanks;
   — Matt Sanford / @mzsanford
 On Mar 3, 2009, at 07:34 AM, Paul Kinlan wrote:

 Hi,

 I am noticing something that I think is odd at the moment.

 Some of our users are not getting searches that are enclosed in quotes
 via the API, yet they work directly from the website.

 For example there is a difference between the following query on the API
 and Website:

 http://search.twitter.com/search?q=%22exeter%20city%22 which has the same
 results as http://search.twitter.com/search?q=%22exeter+city%22

 but returns a different result via the API using the following query

 http://search.twitter.com/search.json?q=exeter%20city;

 Looking at what is returned by the API the query looks like it has been
 transformed in to %22exeter%2520city%22. To me the %2520 looks odd when I
 would expect %20

 Kind Regards,
 Paul Kinlan







[twitter-dev] Re: Twitter Search issue

2009-03-03 Thread Paul Kinlan
Hi,

It works with the +, but I knew that :)

With a space (in IE) it encodes it as %20 when it makes the request and I
can see it through fiddler (as below) and it comes back.

GET /search.json?q=exeter%20city HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/x-ms-application, application/vnd.ms-xpsdocument,
application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash,
application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,
*/*
Accept-Language: en-gb
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET
CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618;
InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
Host: search.twitter.com
Connection: Keep-Alive
Cookie:
__utma=43838368.379476752167577530.1234449205.1234449205.1234449205.1;
__utmz=43838368.1234449205.1.1.utmcsr=blog.twe2.com|utmccn=(referral)|utmcmd=referral|utmcct=/;
__utmv=43838368.lang%3A%20en_GB

I fully accept it is probably our client software that is not encoding
correcly, but I also tried this from the command line curl 
http://search.twitter.com/search.json?q=\exeter%20city\; the response
comes back as %22exeter%2520city%22 in the json object.  From my point of
view I know the quotes are not correct, but it looks like twitter is
encoding them when it recieves them.  I belive our client API is sending
double quotes rather %22.

Kind Regards,
Paul

2009/3/3 Chad Etzel jazzyc...@gmail.com


 I also just tested searching exeter city in TweetGrid with IE,
 FireFox, and Chrome. All came back with the same results.
 fwiw,
 -Chad

 On Tue, Mar 3, 2009 at 11:14 AM, Matt Sanford m...@twitter.com wrote:
  Hi Paul,
  I just tested form the command line and everything seems fine
 with: curl
  'http://search.twitter.com/search.json?q=%22exeter%20city%22'
  If you are typing %20 into the IE address bar it is likely try to
  correct your %  (which is not a valid URL character) and making it %25 in
  the request but displaying it correctly to you. Try replacing it with a +
 or
  a space and see what you get.
  Thanks;
— Matt
  - Show quoted text -
  On Mar 3, 2009, at 08:06 AM, Paul Kinlan wrote:
 
  Forgot to add, I am checking our client library now too.
 
  Paul.
 
  2009/3/3 Paul Kinlan paul.kin...@gmail.com
 
  Hi Matt,
 
  I was typing the search term through IE (to test it after reports that
 
  enclosed searches aren't working) as
  http://search.twitter.com/search.json?q=exeter city which it then
 converts
  to http://search.twitter.com/search.json?q=exeter%20city; but the
 result
  came back as %22exeter%2520city%22 (see json object below) in the
 search
  API json object.  It works in firefox so I am presuming firefox is
 correctly
  encoding the url.
 
 
 
 {results:[],since_id:0,max_id:1273765306,refresh_url:?since_id=1273765306q=%22exeter%2520city%22,results_per_page:15,completed_in:1.313905,page:1,query:%22exeter%2520city%22}
 
  it is highly likely that if IE is having the issue, the client API would
  probably have it, however the query that is going out over the wire (I
  checked with fiddler as exeter%20city and the result comes back as
 above,
  so I don't think it is us for the entire problem).
 
  Kind Regards,
  Paul.
 
  2009/3/3 Matt Sanford m...@twitter.com
 
  Hi Paul,
  It sounds like whatever is generating your API requests is double
 URL
  encoding. So the space becomes %20, and then on the second url encoding
 the
  % becomes a %25.
  Thanks;
— Matt Sanford / @mzsanford
  On Mar 3, 2009, at 07:34 AM, Paul Kinlan wrote:
 
  Hi,
 
  I am noticing something that I think is odd at the moment.
 
  Some of our users are not getting searches that are enclosed in quotes
  via the API, yet they work directly from the website.
 
  For example there is a difference between the following query on the
 API
  and Website:
 
  http://search.twitter.com/search?q=%22exeter%20city%22 which has the
 same
  results as http://search.twitter.com/search?q=%22exeter+city%22
 
  but returns a different result via the API using the following query
 
  http://search.twitter.com/search.json?q=exeter%20city;
 
  Looking at what is returned by the API the query looks like it has been
  transformed in to %22exeter%2520city%22. To me the %2520 looks odd
 when I
  would expect %20
 
  Kind Regards,
  Paul Kinlan
 
 
 
 
 



[twitter-dev] Re: Twitter Search issue

2009-03-03 Thread Chad Etzel

Ok, I can replicate your results with curl

$ curl -v http://search.twitter.com/search.json?q=\exeter%20city\;

...returns the wrong results, as you say.

$ curl -v http://search.twitter.com/search.json?q=%22exeter%20city%22;

...returns the correct results.

I think double quotes are not actually valid URL characters (tho some
browsers try to treat them as such), so you should really turn  into
%22 before the requests go out.


That said, I'm starting to agree with Paul that twitter is doing some
sort of encoding trick on their end when literal quotes are sent in
the request:

$ curl -v http://search.twitter.com/search.json?q=\exeter%20city\;
* About to connect() to search.twitter.com port 80 (#0)
*   Trying 128.121.146.107... connected
* Connected to search.twitter.com (128.121.146.107) port 80 (#0)
 GET /search.json?q=exeter%20city HTTP/1.1
 User-Agent: curl/7.16.4 (i486-pc-linux-gnu) libcurl/7.16.4 OpenSSL/0.9.8e 
 zlib/1.2.3.3 libidn/1.0
 Host: search.twitter.com
 Accept: */*

 HTTP/1.1 200 OK
 Date: Tue, 03 Mar 2009 17:09:34 GMT
 Server: hi
 Status: 200 OK
 Cache-Control: max-age=20, must-revalidate, max-age=300
 Content-Type: application/json; charset=utf-8
 X-Served-By: searchweb003.twitter.com
 Expires: Tue, 03 Mar 2009 17:14:34 GMT
 Content-Length: 195
 Vary: Accept-Encoding
 X-Varnish: 1733084231
 Age: 0
 Via: 1.1 varnish
 X-Cache-Svr: searchweb003.twitter.com
 X-Cache: MISS
 Connection: close

* Closing connection #0
{results:[],since_id:0,max_id:1274236746,refresh_url:?since_id=1274236746q=%22exeter%2520city%22,results_per_page:15,completed_in:0.112164,page:1,query:%22exeter%2520city%22}

Now, one could argue that the request itself is invalid or malformed,
and so the result may be undefined, but I do agree that something is
happening on twitter's end.


Moral of the story: encode  as %22 in URLs.

-Chad

On Tue, Mar 3, 2009 at 11:33 AM, Paul Kinlan paul.kin...@gmail.com wrote:
 Hi,

 It works with the +, but I knew that :)

 With a space (in IE) it encodes it as %20 when it makes the request and I
 can see it through fiddler (as below) and it comes back.

 GET /search.json?q=exeter%20city HTTP/1.1
 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
 application/x-ms-application, application/vnd.ms-xpsdocument,
 application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash,
 application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,
 */*
 Accept-Language: en-gb
 UA-CPU: x86
 Accept-Encoding: gzip, deflate
 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET
 CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618;
 InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
 Host: search.twitter.com
 Connection: Keep-Alive
 Cookie:
 __utma=43838368.379476752167577530.1234449205.1234449205.1234449205.1;
 __utmz=43838368.1234449205.1.1.utmcsr=blog.twe2.com|utmccn=(referral)|utmcmd=referral|utmcct=/;
 __utmv=43838368.lang%3A%20en_GB

 I fully accept it is probably our client software that is not encoding
 correcly, but I also tried this from the command line curl
 http://search.twitter.com/search.json?q=\exeter%20city\; the response
 comes back as %22exeter%2520city%22 in the json object.  From my point of
 view I know the quotes are not correct, but it looks like twitter is
 encoding them when it recieves them.  I belive our client API is sending
 double quotes rather %22.

 Kind Regards,
 Paul

 2009/3/3 Chad Etzel jazzyc...@gmail.com

 I also just tested searching exeter city in TweetGrid with IE,
 FireFox, and Chrome. All came back with the same results.
 fwiw,
 -Chad

 On Tue, Mar 3, 2009 at 11:14 AM, Matt Sanford m...@twitter.com wrote:
  Hi Paul,
  I just tested form the command line and everything seems fine
  with: curl
  'http://search.twitter.com/search.json?q=%22exeter%20city%22'
  If you are typing %20 into the IE address bar it is likely try to
  correct your %  (which is not a valid URL character) and making it %25
  in
  the request but displaying it correctly to you. Try replacing it with a
  + or
  a space and see what you get.
  Thanks;
— Matt
  - Show quoted text -
  On Mar 3, 2009, at 08:06 AM, Paul Kinlan wrote:
 
  Forgot to add, I am checking our client library now too.
 
  Paul.
 
  2009/3/3 Paul Kinlan paul.kin...@gmail.com
 
  Hi Matt,
 
  I was typing the search term through IE (to test it after reports that
  
  enclosed searches aren't working) as
  http://search.twitter.com/search.json?q=exeter city which it then
  converts
  to http://search.twitter.com/search.json?q=exeter%20city; but the
  result
  came back as %22exeter%2520city%22 (see json object below) in the
  search
  API json object.  It works in firefox so I am presuming firefox is
  correctly
  encoding the url.
 
 
 
  {results:[],since_id:0,max_id:1273765306,refresh_url:?since_id=1273765306q=%22exeter%2520city%22,results_per_page:15,completed_in:1.313905,page:1,query:%22exeter%2520city%22}
 
  it is highly 

[twitter-dev] Re: Twitter Search issue

2009-03-03 Thread Paul Kinlan
Hi,

Yeah, I am pretty sure our Api client takes a litteral query string and
since we store it that way it is probablly sending it that way.

Paul.

2009/3/3 Matt Sanford m...@twitter.com

 Hi all,
  If you send something invalid we do attempt to fix-up invalid requests
 rather than just 400. This looks like a case where the bad request becomes a
 different sort of badness on the way out. Escaping the quotes seems like the
 only real fix.

 — Matt

 On Mar 3, 2009, at 09:13 AM, Chad Etzel wrote:


 Ok, I can replicate your results with curl

 $ curl -v http://search.twitter.com/search.json?q=\exeter%20city\;

 ...returns the wrong results, as you say.

 $ curl -v http://search.twitter.com/search.json?q=%22exeter%20city%22;

 ...returns the correct results.

 I think double quotes are not actually valid URL characters (tho some
 browsers try to treat them as such), so you should really turn  into
 %22 before the requests go out.


 That said, I'm starting to agree with Paul that twitter is doing some
 sort of encoding trick on their end when literal quotes are sent in
 the request:

 $ curl -v http://search.twitter.com/search.json?q=\exeter%20city\;
 * About to connect() to search.twitter.com port 80 (#0)
 *   Trying 128.121.146.107... connected
 * Connected to search.twitter.com (128.121.146.107) port 80 (#0)

 GET /search.json?q=exeter%20city HTTP/1.1

 User-Agent: curl/7.16.4 (i486-pc-linux-gnu) libcurl/7.16.4 OpenSSL/0.9.8e
 zlib/1.2.3.3 libidn/1.0

 Host: search.twitter.com

 Accept: */*


  HTTP/1.1 200 OK
  Date: Tue, 03 Mar 2009 17:09:34 GMT
  Server: hi
  Status: 200 OK
  Cache-Control: max-age=20, must-revalidate, max-age=300
  Content-Type: application/json; charset=utf-8
  X-Served-By: searchweb003.twitter.com
  Expires: Tue, 03 Mar 2009 17:14:34 GMT
  Content-Length: 195
  Vary: Accept-Encoding
  X-Varnish: 1733084231
  Age: 0
  Via: 1.1 varnish
  X-Cache-Svr: searchweb003.twitter.com
  X-Cache: MISS
  Connection: close
 
 * Closing connection #0

 {results:[],since_id:0,max_id:1274236746,refresh_url:?since_id=1274236746q=%22exeter%2520city%22,results_per_page:15,completed_in:0.112164,page:1,query:%22exeter%2520city%22}

 Now, one could argue that the request itself is invalid or malformed,
 and so the result may be undefined, but I do agree that something is
 happening on twitter's end.


 Moral of the story: encode  as %22 in URLs.

 -Chad

 On Tue, Mar 3, 2009 at 11:33 AM, Paul Kinlan paul.kin...@gmail.com
 wrote:

 Hi,


 It works with the +, but I knew that :)


 With a space (in IE) it encodes it as %20 when it makes the request and I

 can see it through fiddler (as below) and it comes back.


 GET /search.json?q=exeter%20city HTTP/1.1

 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,

 application/x-ms-application, application/vnd.ms-xpsdocument,

 application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash,

 application/vnd.ms-excel, application/vnd.ms-powerpoint,
 application/msword,

 */*

 Accept-Language: en-gb

 UA-CPU: x86

 Accept-Encoding: gzip, deflate

 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET

 CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618;

 InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)

 Host: search.twitter.com

 Connection: Keep-Alive

 Cookie:

 __utma=43838368.379476752167577530.1234449205.1234449205.1234449205.1;

 __utmz=43838368.1234449205.1.1.utmcsr=blog.twe2.com
 |utmccn=(referral)|utmcmd=referral|utmcct=/;

 __utmv=43838368.lang%3A%20en_GB


 I fully accept it is probably our client software that is not encoding

 correcly, but I also tried this from the command line curl

 http://search.twitter.com/search.json?q=\exeter%20city\; the response

 comes back as %22exeter%2520city%22 in the json object.  From my point of

 view I know the quotes are not correct, but it looks like twitter is

 encoding them when it recieves them.  I belive our client API is sending

 double quotes rather %22.


 Kind Regards,

 Paul


 2009/3/3 Chad Etzel jazzyc...@gmail.com


 I also just tested searching exeter city in TweetGrid with IE,

 FireFox, and Chrome. All came back with the same results.

 fwiw,

 -Chad


 On Tue, Mar 3, 2009 at 11:14 AM, Matt Sanford m...@twitter.com wrote:

 Hi Paul,

I just tested form the command line and everything seems fine

 with: curl

 'http://search.twitter.com/search.json?q=%22exeter%20city%22'http://search.twitter.com/search.json?q=%22exeter%20city%22%27

If you are typing %20 into the IE address bar it is likely try to

 correct your %  (which is not a valid URL character) and making it %25

 in

 the request but displaying it correctly to you. Try replacing it with a

 + or

 a space and see what you get.

 Thanks;

  — Matt

 - Show quoted text -

 On Mar 3, 2009, at 08:06 AM, Paul Kinlan wrote:


 Forgot to add, I am checking our client library now too.


 Paul.


 2009/3/3 Paul Kinlan paul.kin...@gmail.com


 Hi Matt,


 I