-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New samples for Cloud Functions docs (#132)
* Add HTTP Cloud Function. * Add more GCF http samples. * Change string * Added promise sample. * Add background functions tests. * Added more GCF tests. * Fix readme and make test work in Node 0.12 * Changed helloworld to camel case (#133) * Changed helloworld to camel case (#134) * Add BigQuery processing to SendGrid sample (still needs more tests). * Add basic auth check. * Add fix for property names * Make fixNames method recursive. * Changed helloworld to camel case (#136) * Add small helloGET sample. * Tweak some hello world samples. * Finish sendgrid unit tests. * Add missing readme link. * Update comment. * Make sure a response gets sent. * Made requested fixes. * Final fixes. * Couple fixes to fix test flakiness.
- Loading branch information
Showing
29 changed files
with
1,555 additions
and
365 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
// Copyright 2016, Google, Inc. | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
// [START helloworld] | ||
/** | ||
* Background Cloud Function. | ||
* | ||
* @param {Object} context Cloud Function context. | ||
* @param {Object} data Request data, provided by a trigger. | ||
* @param {string} data.message Message, provided by the trigger. | ||
*/ | ||
exports.helloWorld = function helloWorld (context, data) { | ||
if (data.message === undefined) { | ||
// This is an error case, "message" is required | ||
context.failure('No message defined!'); | ||
} else { | ||
// Everything is ok | ||
console.log(data.message); | ||
context.success(); | ||
} | ||
}; | ||
// [END helloworld] | ||
|
||
// [START helloPromise] | ||
var request = require('request-promise'); | ||
|
||
/** | ||
* Background Cloud Function that returns a Promise. | ||
* | ||
* @param {Object} data Request data, provided by a trigger. | ||
* @returns {Promise} | ||
*/ | ||
exports.helloPromise = function helloPromise (data) { | ||
return request({ | ||
uri: data.endpoint | ||
}); | ||
}; | ||
// [END helloPromise] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ | ||
"name": "nodejs-docs-samples-functions", | ||
"description": "Node.js samples found on https://cloud.google.com", | ||
"version": "0.0.1", | ||
"private": true, | ||
"license": "Apache Version 2.0", | ||
"author": "Google Inc.", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git" | ||
}, | ||
"dependencies": { | ||
"request-promise": "^3.0.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
<img src="https://avatars2.githubusercontent.com/u/2810941?v=3&s=96" alt="Google Cloud Platform logo" title="Google Cloud Platform" align="right" height="96" width="96"/> | ||
|
||
# Google Cloud Functions HTTP sample | ||
|
||
This recipe shows you how to respond to HTTP requests with a Cloud Function. | ||
|
||
View the [source code][code]. | ||
|
||
[code]: index.js | ||
|
||
## Deploy and Test | ||
|
||
1. Follow the [Cloud Functions quickstart guide][quickstart] to setup Cloud | ||
Functions for your project. | ||
|
||
1. Clone this repository: | ||
|
||
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git | ||
cd nodejs-docs-samples/functions/http | ||
|
||
1. Create a Cloud Storage Bucket to stage our deployment: | ||
|
||
gsutil mb gs://[YOUR_BUCKET_NAME] | ||
|
||
* Replace `[YOUR_BUCKET_NAME]` with the name of your Cloud Storage Bucket. | ||
|
||
1. Deploy the "helloGET" function with an HTTP trigger | ||
|
||
gcloud alpha functions deploy publish --bucket [YOUR_BUCKET_NAME] --trigger-http | ||
|
||
1. Call the "helloGET" function: | ||
|
||
curl https://[YOUR_PROJECT_REGION].[YOUR_PROJECT_ID].cloudfunctions.net/helloGET | ||
|
||
[quickstart]: https://cloud.google.com/functions/quickstart |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
// Copyright 2016, Google, Inc. | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
// [START helloworld] | ||
/** | ||
* Responds to any HTTP request that can provide a "message" field in the body. | ||
* | ||
* @param {Object} req Cloud Function request context. | ||
* @param {Object} res Cloud Function response context. | ||
*/ | ||
exports.helloWorld = function helloWorld (req, res) { | ||
if (req.body.message === undefined) { | ||
// This is an error case, as "message" is required | ||
res.status(400).send('No message defined!'); | ||
} else { | ||
// Everything is ok | ||
console.log(req.body.message); | ||
res.status(200).end(); | ||
} | ||
}; | ||
// [END helloworld] | ||
|
||
// [START helloHttp] | ||
function handleGET (req, res) { | ||
// Do something with the GET request | ||
res.status(200).send('Hello World!'); | ||
} | ||
|
||
function handlePUT (req, res) { | ||
// Do something with the PUT request | ||
res.status(403).send('Forbidden!'); | ||
} | ||
|
||
/** | ||
* Responds to a GET request with "Hello World!". Forbids a PUT request. | ||
* | ||
* @example | ||
* gcloud alpha functions call helloHttp | ||
* | ||
* @param {Object} req Cloud Function request context. | ||
* @param {Object} res Cloud Function response context. | ||
*/ | ||
exports.helloHttp = function helloHttp (req, res) { | ||
switch (req.method) { | ||
case 'GET': | ||
handleGET(req, res); | ||
break; | ||
case 'PUT': | ||
handlePUT(req, res); | ||
break; | ||
default: | ||
res.status(500).send({ error: 'Something blew up!' }); | ||
break; | ||
} | ||
}; | ||
// [END helloHttp] | ||
|
||
// [START helloContent] | ||
/** | ||
* Responds to any HTTP request that can provide a "message" field in the body. | ||
* | ||
* @param {Object} req Cloud Function request context. | ||
* @param {Object} res Cloud Function response context. | ||
*/ | ||
exports.helloContent = function helloContent (req, res) { | ||
var name; | ||
|
||
console.log(req.get('content-type')); | ||
switch (req.get('content-type')) { | ||
// '{"name":"John"}' | ||
case 'application/json': | ||
name = req.body.name; | ||
break; | ||
|
||
// 'John', stored in a Buffer | ||
case 'application/octet-stream': | ||
name = req.body.toString(); // Convert buffer to a string | ||
break; | ||
|
||
// 'John' | ||
case 'text/plain': | ||
name = req.body; | ||
break; | ||
|
||
// 'name=John' | ||
case 'application/x-www-form-urlencoded': | ||
name = req.body.name; | ||
break; | ||
} | ||
|
||
res.status(200).send('Hello ' + (name || 'World') + '!'); | ||
}; | ||
// [END helloContent] |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.