[web2py] Re: web2py not reading Amazon SNS Subscription Confirmation requests?

2012-08-09 Thread Osman Masood
Thanks Massimo! It worked. request.body.read() had the JSON.

On Thursday, August 9, 2012 9:42:05 AM UTC+8, Massimo Di Pierro wrote:

 There is nothing in request.args because I assume the URL is called 
 without args.
 There is nothing in request.vars because the request contains no HTTP 
 variables. It is an HTTP post with a json data in the request body. HTTP 
 does not know anything about json. Web2py has no clue or way to guess the 
 request body contains json. It may as well be gibberish. Whoever created 
 the protocol should have used a mime multipart content (which is how forms 
 are submitted).

 Anyway, you can still email yourself:

request.env # the headers

 and 

request.body.read()  # the content of the body

 and you will get what you want.




 On Wednesday, 8 August 2012 19:55:49 UTC-5, Osman Masood wrote:

 Hi all,
 I'm trying to confirm an Amazon SNS subscription with a web2py controller 
 action. The Amazon SNS subscription format is described 
 herehttp://docs.amazonwebservices.com/sns/latest/gsg/SendMessageToHttp.html#SendMessageToHttp.confirm
  (through 
 probably not necessary to understand this problem.)

 My controller action (default/amazon_sns_endpoint) basically just emails 
 request.vars and request.args to myself. It receives a POST request from 
 the subscription service. However, for some reason, it doesn't seem to be 
 able to process the POST request, i.e. request.vars and request.args are 
 always {} and []. (I do, however, get the email.) 

 Maybe web2py messes up when it handles some of the headers? An example 
 POST request looks like this:

 POST / HTTP/1.1
 x-amz-sns-message-type: SubscriptionConfirmation
 x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
 x-amz-sns-topic-arn: arn:aws:sns:us-east-1:123456789012:MyTopic
 x-amz-sns-subscription-arn: 
 arn:aws:sns:us-east-1:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
 Content-Length: 1336
 Content-Type: text/plain; charset=UTF-8
 Host: example.com
 Connection: Keep-Alive
 User-Agent: Amazon Simple Notification Service Agent

 {
   Type : SubscriptionConfirmation,
   MessageId : 165545c9-2a5c-472c-8df2-7ff2be2b3b1b,
   Token : 
 2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736,
   TopicArn : arn:aws:sns:us-east-1:123456789012:MyTopic,
   Message : You have chosen to subscribe to the topic 
 arn:aws:sns:us-east-1:123456789012:MyTopic.\nTo confirm the subscription, 
 visit the SubscribeURL included in this message.,
   SubscribeURL : 
 https://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscriptionTopicArn=arn:aws:sns:us-east-1:123456789012:MyTopicToken=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736;,
   Timestamp : 2012-04-26T20:45:04.751Z,
   SignatureVersion : 1,
   Signature : 
 skvXQIEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=,
   SigningCertURL : 
 https://sns.us-east-1.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem;
   }



-- 





[web2py] Re: web2py not reading Amazon SNS Subscription Confirmation requests?

2012-08-08 Thread Massimo Di Pierro
There is nothing in request.args because I assume the URL is called without 
args.
There is nothing in request.vars because the request contains no HTTP 
variables. It is an HTTP post with a json data in the request body. HTTP 
does not know anything about json. Web2py has no clue or way to guess the 
request body contains json. It may as well be gibberish. Whoever created 
the protocol should have used a mime multipart content (which is how forms 
are submitted).

Anyway, you can still email yourself:

   request.env # the headers

and 

   request.body.read()  # the content of the body

and you will get what you want.




On Wednesday, 8 August 2012 19:55:49 UTC-5, Osman Masood wrote:

 Hi all,
 I'm trying to confirm an Amazon SNS subscription with a web2py controller 
 action. The Amazon SNS subscription format is described 
 herehttp://docs.amazonwebservices.com/sns/latest/gsg/SendMessageToHttp.html#SendMessageToHttp.confirm
  (through 
 probably not necessary to understand this problem.)

 My controller action (default/amazon_sns_endpoint) basically just emails 
 request.vars and request.args to myself. It receives a POST request from 
 the subscription service. However, for some reason, it doesn't seem to be 
 able to process the POST request, i.e. request.vars and request.args are 
 always {} and []. (I do, however, get the email.) 

 Maybe web2py messes up when it handles some of the headers? An example 
 POST request looks like this:

 POST / HTTP/1.1
 x-amz-sns-message-type: SubscriptionConfirmation
 x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
 x-amz-sns-topic-arn: arn:aws:sns:us-east-1:123456789012:MyTopic
 x-amz-sns-subscription-arn: 
 arn:aws:sns:us-east-1:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
 Content-Length: 1336
 Content-Type: text/plain; charset=UTF-8
 Host: example.com
 Connection: Keep-Alive
 User-Agent: Amazon Simple Notification Service Agent

 {
   Type : SubscriptionConfirmation,
   MessageId : 165545c9-2a5c-472c-8df2-7ff2be2b3b1b,
   Token : 
 2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736,
   TopicArn : arn:aws:sns:us-east-1:123456789012:MyTopic,
   Message : You have chosen to subscribe to the topic 
 arn:aws:sns:us-east-1:123456789012:MyTopic.\nTo confirm the subscription, 
 visit the SubscribeURL included in this message.,
   SubscribeURL : 
 https://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscriptionTopicArn=arn:aws:sns:us-east-1:123456789012:MyTopicToken=2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d609c582afbacc99c583a916b9981dd2728f4ae6fdb82efd087cc3b7849e05798d2d2785c03b0879594eeac82c01f235d0e717736;,
   Timestamp : 2012-04-26T20:45:04.751Z,
   SignatureVersion : 1,
   Signature : 
 skvXQIEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=,
   SigningCertURL : 
 https://sns.us-east-1.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem;
   }



--