cloud services

Download Report

Transcript cloud services

cloud services

access to everything over the web

Disclaimer: This document is provided “as-is”. Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes. © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and Windows Live are trademarks of the Microsoft group of companies. All other trademarks are property of their respective owners. advanced topics in touchdevelop

what it is

o

“meta API”

• retrieve all information visible in touchdevelop app • outlook: callbacks, plugins (meta apps) o

build on web standards

• HTTP, REST, JSON ✿

touchdevelop.com/help/cloudservices

advanced topics in touchdevelop

architecture

o o o front-ends • •

TouchDevelop WP7 app

(any)

browser

talks with Azure Web Service talks with Azure Web App

Windows Identity Foundation

• allows users to authenticate with Windows Live ID, Facebook Azure •

web site

• • •

web service storage

(public data)

storage

(private data) talks with Azure Web Service controls Azure Storage advanced topics in touchdevelop

Azure Storage (public) Azure Web Service Azure Storage (private) Azure Web Site WP7 devices with TouchDevelop app Windows Identity Foundation web browser advanced topics in touchdevelop

HTTP

o

HyperText Transfer Protocol

o

the protocol used by the World Wide Web

advanced topics in touchdevelop

HTTP

o o

example

Request Headers

• GET http://www.touchdevelop.com/api/ecvs HTTP/1.1 • Host: www.touchdevelop.com • Cache-Control: max-age=0 • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 • Accept-Encoding: gzip,deflate,sdch

Response Headers

• HTTP/1.1 200 OK • Content-Length: 451 • Expires: -1 Date: Fri, 10 Feb 2012 02:51:48 GMT • Content-Type: application/json; charset=utf-8 • Cache-Control: no-cache, no-store • Pragma: no-cache advanced topics in touchdevelop

REST

o o REST (

Re

presentational

S

tate

T

ransfer) is a lightweight alternative to mechanisms like RPC (Remote Procedure Calls) and Web Services (SOAP, WSDL, et al.). RESTful applications use HTTP requests to post data (create and/or update), read data (e.g., make queries), and delete data. Thus, REST uses HTTP for all four CRUD (Create/Read/Update/Delete) operations.

advanced topics in touchdevelop

REST here

o o

Currently, only supported verb is ‘GET’

All accesses are stateless advanced topics in touchdevelop

JSON

o

JSON

(JavaScript Object Notation) is a lightweight data-interchange format.

o • •

two building blocks:

a collection of name/value pairs (“object”, “record”, …) an ordered list of values (“array”, …) advanced topics in touchdevelop

JSON grammar

array | object example

string/number/boolean follow grammar of corresponding JavaScript literals

array: “ [ “ [json (“ , ” comma)*] “ ] ” field: string “ : ” json object: “ [ “ field [(“ , ” field)*] “ ] ” ] [ “elem0”, 1, { }, “x” : “value of field x”, “y” : 42 false advanced topics in touchdevelop

JSON

o

example

GET http://www.touchdevelop.com/api/ecvs HTTP/1.1 { "kind":"script", "time":44139093, "id":"ezdf", "url":"http://touchdevelop.com/ezdf", "name":"Smart Rail Table", "description":"", "userid":"yvfc", "username":"Sascha M. B.", "icon":"directions", "iconbackground":"#008000", "iconurl":"https://az31353.vo.msecnd.net/c01/wbso.png", "positivereviews":0, "comments":0, … advanced topics in touchdevelop

JSON example

… "capabilities":[ } {"name":"sourcegeolocation","iconurl":"https://az31353.vo.msecnd.net/c01/qzgl.png" }, {"name":"sinkweb","iconurl":"https://az31353.vo.msecnd.net/c01/mopx.png"} ], "flows":[], "haserrors":false, "rootid":"dgig", "updateid":"ezdf", "ishidden":false, "islibrary":false, "installations":0, "runs":0 advanced topics in touchdevelop

main lists

o o o o o o o o o /api/new-scripts /api/top-scripts /api/featured-scripts /api/search?text=[text] /api/users /api/comments /api/screenshots /api/reviews optional list parameters: ?count=[number]&continuation=[token] advanced topics in touchdevelop

publication properties

o o o o o o o o o o /api/[id] /api/[scriptid]/text /api/[scriptid]/ast /api/[scriptid]/successors /api/[scriptid]/base /api/[userid]/scripts /api/[scriptid or userid or commentid]/comments /api/[scriptid or userid]/screenshots /api/[commentid or scriptid or userid]/reviews /api/[userid]/picture advanced topics in touchdevelop

apis: json

o o o o o o o o Web→download json Downloads a web service response as a JSON data structure Json Object→kind Gets a json kind (string, number, boolean, object, array) string: Json Object→to string number: boolean: object: array: Json Object→to number Json Object→to boolean Json Object→keys , Json Object→field Json Object→at , Json Object→count advanced topics in touchdevelop

exercise

► in touchdevelop, write code that… • • Posts the names of new scripts Posts links to the urls of new scripts ► in touchdevelop , write code that figures out… • of the (around) 100 new scripts, which have at least one ♥ ?

☁ http://touchdevelop.com/axaw (solution) advanced topics in touchdevelop

homework

► in your favorite language, write code that figures out… • • • • • • how many scripts are there?

how many AST nodes does the biggest script have?

which script got the most ♥ ?

which user gave the most ♥ ?

what is the longest script (number of lines)?

which script got updated the most?

advanced topics in touchdevelop