Introduction to the Google APIs Client Library for .NET
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Introduction to the Google APIs Client Library for .NET

on

  • 476 views

Introduction to the Google APIs .NET client library

Introduction to the Google APIs .NET client library
https://code.google.com/p/google-api-dotnet-client/

Statistics

Views

Total Views
476
Views on SlideShare
401
Embed Views
75

Actions

Likes
0
Downloads
2
Comments
0

16 Embeds 75

http://peleyal.blogspot.com 48
http://peleyal.blogspot.in 7
http://peleyal.blogspot.co.il 5
http://peleyal.blogspot.com.au 2
http://peleyal.blogspot.co.uk 2
http://peleyal.blogspot.no 1
http://peleyal.blogspot.fr 1
http://peleyal.blogspot.sg 1
http://peleyal.blogspot.ca 1
http://peleyal.blogspot.com.es 1
http://peleyal.blogspot.co.nz 1
http://peleyal.blogspot.it 1
http://peleyal.blogspot.cz 1
http://peleyal.blogspot.nl 1
http://peleyal.blogspot.se 1
http://peleyal.blogspot.ru 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • In the traditional client-server authentication model, the client requests an access-restricted resource (protected resource) on the server by authenticating with the server using the resource owner's credentials. OLD In order to provide third-party applications access to restricted resources, the resource owner shares its credentials with the third party NEW resource owner - An entity capable of granting access to a protected resource. When the resource owner is a person, it is referred to as an end-user. resource server (GOOGLE) - The server hosting the protected resources, capable of accepting and responding to protected resource requests using access tokens. client - An application making protected resource requests on behalf of the resource owner and with its authorization. authorization server (GOOGLE) - The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.

Introduction to the Google APIs Client Library for .NET Presentation Transcript

  • 1. Introduction to the .NET client library https://code.google.com/p/google-api-dotnet-client/ Eyal Peled peleyal@
  • 2. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 3. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 4. Google APIs .NET REST ● Representational State Transfer ● Client and servers transfer resource representations ● The set of verbs in a REST API is typically limited to “CRUD” ● See Google API Explorer for links to all Google API Rest services https://code.google.com/p/google-api-dotnet-client/
  • 5. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 6. Google APIs .NET Http Layer HttpClient ●A simple programming interface to code against - SendAsync, GetAsync, etc. ●It uses the new Task based asynchronous methods, which makes writing responsive and performant UI applications across all platforms a lot simpler. ●Targets Windows 7 and 8, WP, etc. See PCL ●Part of .NET 4.5 (not PCL) and available for .NET 4.0 developers as a PCL (using NuGet) https://code.google.com/p/google-api-dotnet-client/
  • 7. https://code.google.com/p/google-api-dotnet-client/ Google APIs .NET Http Layer HttpClient ●Message handlers as a key architectural component ●Every request is passed through a chain of handlers (derive from HttpMessageHandler) ●HttpClientHandler uses ● System.Net.HttpWebRequest and ● System.Net.HttpWebResponse under the cover, and provides a great abstraction.
  • 8. Google APIs .NET Http Layer ConfigurableMessageHandler The main HTTP logic IHttpExecuteInterceptor Interceptor before request is made IHttpUnsuccessfulResponseHandler Handler for abnormal HTTP response IHttpExceptionHandler Handler for an exception during a request https://code.google.com/p/google-api-dotnet-client/
  • 9. Google APIs .NET Http Layer ws https://code.google.com/p/google-api-dotnet-client/ ConfigurableHttpClient ● Inherits from HttpClient ● Contains the handler
  • 10. Google APIs .NET Http Layer https://code.google.com/p/google-api-dotnet-client/ HttpClientFactory • Constructs a new HttpClient • Great for mocking using CreateHandler (By default creates HttpClientHandler)
  • 11. Google APIs .NET Http Layer https://code.google.com/p/google-api-dotnet-client/ BackOffHandler ● Implements exception and unsuccessful response handlers ● Contains a BackOff logic
  • 12. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 13. Google APIs .NET Client Service https://code.google.com/p/google-api-dotnet-client/ IClientService ● Serialization ● GZip support ● Authenticator (Will be removed after a new Auth library will be created)
  • 14. Google APIs .NET Client Service https://code.google.com/p/google-api-dotnet-client/ BaseClientService ● Thread-safe uses Initializer ● Expoenential back-off policy ● Api Key ● GZip Enabled ● Client Factory
  • 15. Google APIs .NET Client Service Generated services inherit from BaseClientSerivce ● They implement resource related properties • They contain resources and methods based on Discovery Follow DriveService implementation in the next slide... https://code.google.com/p/google-api-dotnet-client/
  • 16. Google APIs .NET Client Service public class DriveService : Google.Apis.Services.BaseClientService { public DriveService(Google.Apis.Services.BaseClientService.Initializer initializer) : base(initializer) { about = new AboutResource(this); files = new FilesResource(this); ... } public override string Name { get { return "drive"; } } public override string BaseUri { get { return "https://www.googleapis.com/drive/v2/"; } } public override string BasePath { get { return "drive/v2/"; } } public enum Scopes { /// <summary>View and manage the files and documents in your Google Drive</summary> [Google.Apis.Util.StringValueAttribute("https://www.googleapis.com/auth/drive")] Drive, /// <summary>View and manage its own configuration data in your Google Drive</summary> [Google.Apis.Util.StringValueAttribute("https://www.googleapis.com/auth/drive.appdata")] DriveAppdata,/// <summary>View your Google Drive apps</summary> … } https://code.google.com/p/google-api-dotnet-client/
  • 17. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 18. Google APIs .NET Service Request https://code.google.com/p/google-api-dotnet-client/ ClientServiceRequest ● ETag support ● based TPL Execute ExecuteAsync ExecuteAsStream ExecuteAsStreamAsync
  • 19. Google APIs .NET Service Request Generated requests inherit from ClientServiceRequest ● They Implement the concrete HttpMethod, RestPath, etc. ● They are executed by calling to Execute (or ExecuteAsync) Follow GetRequest (File) implementation in the next slide... https://code.google.com/p/google-api-dotnet-client/
  • 20. Google APIs .NET Service Request public class GetRequest : DriveBaseServiceRequest<Google.Apis.Drive.v2.Data.File> { public GetRequest(Google.Apis.Services.IClientService service, string fileId) : base(service) { FileId = fileId; InitParameters(); } [Google.Apis.Util.RequestParameterAttribute("fileId", Google.Apis.Util.RequestParameterType.Path)] public virtual string FileId { get; private set; } [Google.Apis.Util.RequestParameterAttribute("projection", Google.Apis.Util.RequestParameterType.Query)] public virtual System.Nullable<ProjectionEnum> Projection { get; set; } public override string MethodName { get { return "get"; } } public override string HttpMethod { get { return "GET"; } } public override string RestPath { get { return "files/{fileId}"; } } … } https://code.google.com/p/google-api-dotnet-client/
  • 21. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 22. Google APIs .NET Media Resumable Media Upload https://code.google.com/p/google-api-dotnet-client/ The protocol ● Recovery server errors ● Chunk size ● Progress changed event ● Upload ● UploadAsync
  • 23. Google APIs .NET Media Media Downloader https://code.google.com/p/google-api-dotnet-client/ ● Chunk size ● ProgressChanged event ● Download ● DownloadAsync
  • 24. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 25. Google APIs .NET OAuth2 https://code.google.com/p/google-api-dotnet-client/
  • 26. Google APIs .NET OAuth2 https://code.google.com/p/google-api-dotnet-client/ Google OAuth2 documentation Google API Console Support installed and web applications Support service account Current implementation ●IAuthenticator to apply authorization header to a request ●Usage of DotNetOpenAuth ●Implementation is in Google.Apis.Authentication.OAuth2
  • 27. Google APIs .NET OAuth2 https://code.google.com/p/google-api-dotnet-client/ Roadmap ● Remove DotNetOpenAuth ● Create a Google.Apis.Auth PCL ● Create concrete implementation for  Google.Apis.Auth.DotNet4 (installed applications)  Google.Apis.Auth.Mvc4 (web applications)  Google.Apis.Auth.WP (Windows Phone)  Google.Apis.Auth.WinRT (Windows 8 applications) The main reason for creating a specific assembly for a platform is based on the way we read the authorization code.
  • 28. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 29. Google APIs .NET PCL Portable Class Library Current status ● Google.Apis is PCL ● The generated APIs are PCLs as well Roadmap ● Create a Google.Apis.Auth PCL library (see OAuth slides) https://code.google.com/p/google-api-dotnet-client/
  • 30. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 31. Google APIs .NET 3rd parties NuGet packages: • Newtonsoft.Json 5.0.5 Json is the client's default data format • Microsoft.Net.Http 2.1.10 We use HttpClient as our transport layer. • Microsoft.Bcl.Async 1.10.16 Although we target .NET 4.0 we use async-await • Zlib.Portable 1.9.2 While GZip is enabled, we use this library to encode messages • log4net The library's logging framework https://code.google.com/p/google-api-dotnet-client/
  • 32. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 33. Google APIs .NET Discovery ● Each Google API service exposes a discovery doc using the json format (e.g. https://www.googleapis.com/discovery/v1/apis/drive/v2/rest) ● The service generator generates a service, resources, models and requests by this doc ● Similar to wsdl ● Read more about Discovery API here https://code.google.com/p/google-api-dotnet-client/
  • 34. Agenda Rest Http Layer Client Service Service Request Media OAuth2 PCL 3rd parties Discovery Code Generator https://code.google.com/p/google-api-dotnet-client/
  • 35. Google APIs .NET Code Generator https://code.google.com/p/google-api-dotnet-client/ ● From 1.5.0-beta we use Google APIs client generator (which is available here) ● The .NET specific templates for 1.5.0-beta are available here. ● The decision to move to Google APIs client generator was based on the following:  Share logic with other Google APIs client libraries  It is easier to use Django templates  It reduces library code significantly  One step forward supporting End Points
  • 36. Resources • code.google.com - WIKI • Google API .NET Announcements blog • StackOverflow google-api-dotnet-client tag • Google Group • Google API Explorer • Google API Console https://code.google.com/p/google-api-dotnet-client/
  • 37. Questions? https://code.google.com/p/google-api-dotnet-client/