mynamebrody / pizzadash

This is a node.js application that "hacks" your Amazon Dash Button to order you a Domino's pizza!
MIT License
185 stars 33 forks source link

Needs to be one app #3

Open RIAEvangelist opened 9 years ago

RIAEvangelist commented 9 years ago

The user shouldn't have to run multiple scripts to get stuff working. Should be seamless. Perhaps a web server could be integrated to spin up a little page for choosing store etc.

Or perhaps the app could just order from the closest open store which delivers.

mynamebrody commented 9 years ago

Both great ideas, I want to make it as seamless as possible for someone, at least we have it down to the "npm install" so far, next up should be a small web server or a small script to customize it for them

RIAEvangelist commented 9 years ago

I have built a web server that could easily be incorporated.

npm install --save node-http-server

see the node-http-docs

but we'll also need a small site to input the info and display basic info on buttons being pressed.

I wouldn't mind handling the front end of that.

We will need to encrypt the cc info of course. Probably use a heavy duty rolling random encryption every x number of min.

mynamebrody commented 9 years ago

I was chatting with another buddy about have a small site you run locally that will create the app.js file for you or I have a default app.js file and the small site will create you a .env file on your machine that the app will use for all personal information, credit card information, and order. (It would be cool if we could have the small site take in the address and present the closest Domino's stores and their menu/coupons? While this wouldn't encrypt the cc info, this app currently doesn't anyways since it is all running locally anyways, so your information is only as secure as your home network.

RIAEvangelist commented 9 years ago

I'd be very careful with how you store cc info.

Especially since it will be stored in a 2 way encryption method with the decryption algorithm available on the same box.

mynamebrody commented 9 years ago

I was definitely thinking of just storing CC info in a .env file where it wouldn't ever be checked in and just stored locally on ones network..

Possibly implement something the way this guy did for his Uber Dash Button: https://github.com/geoffrey/uber-dash-configurator

RIAEvangelist commented 9 years ago

Using a domino's account would probably be better. Then the card is stored by dominos not you. User goes to set up account on dominos website then uses their credentials in their dash.

This wayt the only theft that can be done is ordering pizza, not buying a yaht and clothes and trip to tahiti.

JoeIaquinto commented 8 years ago

@RIAEvangelist Do you know how it would be possible to use a domino's account with this? I'm working with a group to develop a web server using flask to input user info and order right now and it would be great if users could set their order using their account for rewards points and added security. Is available in the dominos api?

eledroos commented 8 years ago

@RIAEvangelist @JoeIaquinto did either of you guys work out how to get a Domino's Account working on this project?

JoeIaquinto commented 8 years ago

What I ended up doing was capturing the http request made from placing an order on the actual Domino's website and saving that to be resent when the button is pressed. This did allow me to use my account because it was included in the request as I was logged in on the website.

eledroos commented 8 years ago

@JoeIaquinto Ah cool! How would I go about doing that exactly? I'm trying to get this running for my roommate's birthday present and I know making sure his Dominos account would work with this is essential for the constant free pizzas he boasts about..

Alternatively if you have it checked in somewhere that I could look at....?

Thanks!

JoeIaquinto commented 8 years ago

I'll have to take a look, I got it working the night before my presentation last spring so I think I neglected to push it onto my fork. Also, the new AWS IoT button came out so you actually may be able to get this running on AWS lambda with a few modifications.

On Wed, Oct 12, 2016, 12:51 PM Nasser Eledroos notifications@github.com wrote:

@JoeIaquinto https://github.com/JoeIaquinto Ah cool! How would I go about doing that exactly? I'm trying to get this running for my roommate's birthday present and I know making sure his Dominos account would work with this is essential for the constant free pizzas he boasts about..

Alternatively if you have it checked in somewhere that I could look at....?

Thanks!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bhberson/pizzadash/issues/3#issuecomment-253270964, or mute the thread https://github.com/notifications/unsubscribe-auth/AGQr87GnDVBd1GgNDuc000yfzjAdRgKWks5qzRACgaJpZM4GC44J .

eledroos commented 8 years ago

@JoeIaquinto Okay thanks!

Yeah I saw with the AWS IoT button - I have a webserver I'd prefer to use this with to be honest - I also already have like 4 Dash buttons.

JoeIaquinto commented 8 years ago

@eledroos Honestly giving this another look it would be a lot easier to use https://github.com/maddox/dasher to use Twitter's API and create a tweet with "@dominos :pizza: #easyorder" than going through Domino's unsupported web API. It's a matter of time before they team up with the Amazon dash team and connect the AWS IoT button officially or make a Dominos dash available.

jlk6wu commented 7 years ago

Is there any way to get an order to go through without providing credit card information? Something that allows you to pay upon delivery? I've looked through the Dominos API documentation and haven't found this option, but was hoping for a second opinion. Thanks! This is really cool.

JoeIaquinto commented 7 years ago

Try using chrome developer tools to capture the POST message sent when ordering with pay on delivery selected. The dominos node.js api is a little outdated and we found it was easier to just spoof the HTTP requests from the pi as if you were doing it by hand on the site, then the dash button just triggers that routine.