SlideShare a Scribd company logo
Web Services A Web service is defined as "a software system designed to support interoperable machine to machine interaction over a network". Web services are frequently just Internet Application Programming Interfaces (API) that can be accessed over a network, such as the Internet , and executed on a remote system hosting the requested services   Web services are application components Web services communicate using open protocols Web services are self-contained and self-describing Web services can be discovered using UDDI Web services can be used by other applications XML is the basis for Web services
How Does it Work? The basic Web services platform is XML + HTTP. XML provides a language which can be used between different platforms and programming languages and still express complex messages and functions. The HTTP protocol is the most used Internet protocol. Web services platform elements: SOAP (Simple Object Access Protocol) UDDI (Universal Description, Discovery and Integration) WSDL (Web Services Description Language).
Web Services take Web-applications to the Next Level By using Web services, your application can publish its function or message to the rest of the world.   Web services use XML to code and to decode data, and SOAP to transport it (using open protocols). With Web services, your accounting department's Win 2k server's billing system can connect with your IT supplier's UNIX server.
Web services on Ruby on Rails Most web services are based on one of three architectures: Representational State Transfer (REST), Simple Object Access Protocol (SOAP), or Extensible Markup Language Remote Procedural Calls (XML-RPC). Web services often offer access via two or more of these architectures. For example, we'll be offering both SOAP and XML-RPC access to clients in the ActionWebService server, so clients can implement the architecture that's easiest for their specific application. If you're building your web service clients in Ruby and implementing them as part of a Rails application, you are in luck. Building web service clients with Ruby on Rails requires only a few simple steps and involves just a few Ruby libraries. Even better news is that the majority of libraries you use for building clientsCGI, NET, REXML, Soap4r, XSD, and XML-RPCare automatically loaded by your Rails environment. All you have to worry about is knowing when, how, and where to use each library.
Amazon E-Commerce Services API The Amazon E-Commerce Services (ECS) API is a web service API accessible through SOAP and REST that provides access to Amazon.com's online retail platform. Using these web services, developers can: Find items that are available on sale on Amazon.com, either by Amazon.com itself or by other merchants Get detailed information on the items including pricing and availability Get customer reviews on the items, including customer ratings  Find items that are similar To use the Amazon ECS API as a developer you need to register for an Amazon Web Service (AWS) access key ID. This access ID is used with every request that you send to the Amazon ECS.
Registering for an Amazon Web Service access key ID To register for the AWS access key ID, go to http://www.amazon.com/gp/aws/registration/registration-form.html. If you're an existing Amazon.com customer, you can provide your email address and your account password. If you don't have an existing Amazon Web Services account, you will be asked to create one. Once you create the Amazon Web Services account, you will be sent an email and also redirected to the success page. Select the Amazon E-Commerce Service link as the service you would like to explore. When you enter the Amazon E-Commerce web services link, you will see a small button to your right:  Your Web Services Account . Click on it and it will show you a list of actions you can do with your web services account. Click on the  AWS Access Identifiers  link to see your access key ID.
Registering as an Amazon Associate Associates is Amazon.com's affiliate marketing program and it allows you to earn money by recommending purchases on Amazon.com. When you register to be an associate, you will receive an associate ID. In the mashup shown in this chapter, we will include an associate ID in your shopping cart in order for you to earn extra money.  To join the Associates program, go to http://affiliate-program.amazon.com/join and click on the 'Apply now' button. Enter your email address and account password (you should have an account by now) for your account. You will need to fill up a form and provide information on your site, after which you will be shown an associate ID, which you can use in your mashup.
Amazon ECS Ruby library The Amazon ECS library (http://rubyforge.org/projects/amazon-ecs) is a Ruby package that provides easy access to the Amazon ECS APIs. This library accesses the Amazon ECS REST APIs using Hpricot (http://code.whytheluckystiff.net/hpricot) and is flexible enough to allow use of all Amazon ECS APIs, even those not directly supported with convenience methods.
What we will be doing? For this mashup we will be creating a new Rails application to demonstrate how you can integrate this feature into your website. The Rails application will have a left-hand sidebar that shows your book, its details, and a list of similar books. Your visitors can also view comments and ratings from other readers posted on Amazon.com.  This mashup also enables you to create a remote shopping cart at Amazon.com to let your visitors buy directly through you. At the same time, it allows you to earn some extra money by being an Amazon Associate and referring other similar books to your visitors and allowing your visitors to add them to the remote shopping cart. When your visitors are ready to buy, the mashup will redirect them to Amazon.com for checkout and payment .
This is the sequence of actions we will take to create this mashup: Create a Rails application Install the Amazon ECS Ruby library Create the books controller Create the Amazon Rails library and use it to get information on the book Create the sidebar view to display the book information and similar books Get customer reviews and create the customer comments and ratings view
Note that this mashup doesn't require database access at all.This is ideal in the case where your existing website doesn't have a database and you're not keen to pay your hosting company additional money for one. However if you have an existing database you can easily add another table and add in some simple ActiveRecord models to represent the history. Also note that there is very little that you are actually processing or even storing at your mashup—almost everything is residing at Amazon.com
Installing the Amazon ECS Ruby library >gem install amazon-ecs --include-dependencies Creating the books controller Next, we will need to create the one and only controller in this whole mashup. Create a file called books_controller.rb in the RAILS_ROOT/app/controllers folder. The books controller is a very simple controller.  class BooksController < ApplicationController  include Amazon  @@book_asin = '0974514055'  def sidebar  @book = get_book_details @@book_asin  @similars = get_similar_products @@book_asin  end end
Creating the Amazon Rails library This is a Ruby module that we include in your book controller. It contains the main processing logic of the mashup. It is used mainly to communicate with the Amazon ECS API provided by Amazon.com, using the Amazon ECS Ruby library by Herryanto Siatono. Create a Ruby file in the RAILS_ROOT/lib folder called amazon.rb. For those uninitiated in Ruby on Rails, all Ruby files placed here are directly accessible to the Rails application during run time. This is why we only need to add the line include Amazon in the controller. require 'amazon/ecs' module Amazon  @@key_id = <your Amazon.com access key ID>  @@associate_id = <your associate ID>  # get the details of the book given the ASIN  def get_book_details(asin)  book = Hash.new
res = ecs.item_lookup(asin, :response_group => 'Large')  book[:title] = res.first_item.get(&quot;title&quot;)  book[:publication_date] = res.first_item.get(&quot;publicationdate&quot;)  book[:salesrank] = res.first_item.get(&quot;salesrank&quot;)  book[:image_url] = res.first_item.get(&quot;mediumimage/url&quot;)  book[:author] = res.first_item.get(&quot;itemattributes/author&quot;)  book[:isbn] = res.first_item.get(&quot;itemattributes/isbn&quot;)  book[:price] = res.first_item.get(&quot;price/currencycode&quot;) + res.first_item.get(&quot;price/formattedprice&quot;)  book[:total_reviews] = res.first_item.get(&quot;customerreviews/totalreviews&quot;)  book[:average_rating] = res.first_item.get(&quot;customerreviews/averagerating&quot;)  book[:offer_listing_id] = res.first_item.get(&quot;offerlisting/offerlistingid&quot;)  return book  end # get similar products to a given ASIN  def get_similar_products(asin)  similars = Array.new  res = ecs.send_request(:aWS_access_key_id => @@key_id, : operation => 'SimilarityLookup', :item_id => asin, : response_group => 'Small,Images' )  res.items.each do |item|  similar = Hash.new  similar[:asin] = item.get('asin')  similar[:title] = item.get('itemattributes/title')  similar[:author] = item.get('itemattributes/author')  similar[:small_image] = item.get_hash('smallimage')  similars << similar  end  return similars  end
protected  # configure and return an Ecs object def ecs  Amazon::Ecs.configure do |options|  options[:aWS_access_key_id] = @@key_id  options[:associate_tag] = @@associate_id  end  return Amazon::Ecs  end End We will need to require the Amazon ECS Ruby library, and also define the AWS access key ID and associate ID that you have acquired from Amazon.com in a previous section. Define both of them in class variables, as they are not going to change.First, we define a convenient method that returns the Amazon::Ecs object that is configured with the access key ID and the associate ID.Next, define two instance methods. The first is to get the book's details and the second is to get books that are related or 'similar' to your book. Similarity is based on books that customers bought, that is, customers who bought X also bought Y. This assures us that the customer is really interested in those books. In both methods you need to provide an ASIN. In our case the ASIN is from the book controller, where we hard-coded your book's ASIN  get_book_details method use the Amazon::Ecs.item_lookup method from the Amazon ECS Ruby library, passing in the ASIN and requesting a Large response group. This method wraps around the ItemLookup web service from the Amazon ECS API. This response group returns various pieces of information, which we subsequently extract into a Hash and display in the view. The get_similar_products method on the other hand uses a web service directly from the Amazon ECS API called SimilarityLookup. SimilarityLookup does not have an equivalent wrapper method in the Amazon ECS Ruby library. However, the Amazon ECS Ruby library is flexible enough to allow other requests through the Amazon::Ecs#send_request method by placing the web service name through the : operation parameter. We also request two response groups to be returned, that is, Small and Images.
As in get_book_details, we extract the information we need from the returned response and place it in a Hash, which in turn is placed in an array of similar items and returned to the view. Creating the sidebar The Amazon Rails library is the brain of our mashup but it's not visible or exciting. Let's create something visible next, the sidebar. First, create the layout used for all templates in the book views. Create a file in the folder RAILS_ROOT/app/views/layouts named books.rhtml: Next, create a folder called RAILS_ROOT/app/views/books and a view file called sidebar.rhtml in this folder.
<div class=&quot;info&quot; id=&quot;bookBox&quot;>  <table class=&quot;box&quot;>  <tbody><tr>  <td class=&quot;topLeft&quot;> </td> <td class=&quot;topCenter&quot;>  <div class=&quot;center&quot;>  <h1><%= h @book[:title]%></h1>  <h2><%= h @book[:author]%></h2>  <%= image_tag @book[:image_url]%>  <p/>  <strong><%= h @book[:price]%></strong>  <p/>  <span>Published <%= h @book[: publication_date]%></span>  </div>  <div>  <strong><%= h @book[:salesrank]%></ strong>  </div>  <br/>  <div>  <strong>Other books you might be interested in</strong>  <br/>  <table>  <% @similars.each { |similar|%>  <tr><td align='center'>  <%= image_tag(similar[:small_image][: url], :border => 0) %>  </td></tr>  <tr><td align='center'>  <%= h similar[:title]%>  </td></tr>
This view file will show the sidebar with the details of the book. Now let's quickly preview the fruits of your labor! Start the server with: $./script/server Then go to http://localhost:3000/books/sidebar
Note the blank space to the right of the page. This is deliberate. After all, the sidebar is a part of your website, not your entire site. For example, this blank space could be your existing blog. We will also be using it later on for the customer reviews as well as the shopping cart. Getting customer reviews Next, we want to get customer reviews that have been posted on Amazon.com and display them to the right of the sidebar. To do this, we will add a picture just below the sales ranking. The picture will display the average customer rating of the book, using the rating system in Amazon.com, which is 0 stars to 5 stars. Clicking on this picture will show the customer reviews in blank space to the right of the sidebar. The Amazon ECS API allows 5 customer reviews to be retrieved in each call, so we will also do some simple pagination for the customer   reviews.
<span>Published <%= h @book[: publication_date]%></span>  </div>  <div class=&quot;right-float&quot;><%= link_to_ remote(image_tag(&quot;#{@book[:average_rating]}. gif&quot;, :border => 0), :update => 'update_area',: url => {:action => 'reviews' ,:page => 1}) %></div>   <td><div id=&quot;update_area&quot;></div></td>   Next, add the following action in the books_controller.rb file: def reviews  @reviews = get_customer_reviews @@book_asin, params[:page].to_i  @page = params[:page].to_i  End The get_customer_reviews method in this action comes from our Amazon Rails library again, so add this method in the amazon.rb file:
# get customer reviews of the product given the ASIN  def get_customer_reviews(asin,page=1)  res = ecs.item_lookup(asin, :review_page => page, :response_group => 'Reviews')  reviews = res.first_item/&quot;customerreviews/review&quot;  reviews.collect { |review|  Amazon::Element.get_hash(review)  }  End The get_customer_reviews method, like the get_book_details method, uses Amazon::Ecs.item_lookup to retrieve the reviews. However, this time we are asking for the Reviews response group, which we will convert into a Hash and return it to the view. Lastly we need to create the reviews view to display the reviews. Create a file named reviews.rhtml in RAILS_ROOT/app/views/books:
<h1>Customer reviews</h1> <% @reviews.each { |review| %> <table class='reviews'>  <tr><th><%= h review[:summary]%></th></tr>  <tr><td><div class=&quot;left-float&quot;><%= h review[:date]%></div> <div class=&quot;right-float&quot;> <%= image_tag(&quot;#{review[:rating]}.0.gif&quot;)%> </div></td></tr>  <tr><td><%= CGI.unescapeHTML review[:content]%></td></tr> </table>  <% } %> <div class='left-float'><%= link_to_remote '<< previous', :update => 'update_area', :url => {:action => 'reviews', :page => @page - 1} unless @page == 1%></div> <div class='right-float'><%= link_to_remote 'next >>', :update => 'update_area', :url => {:action => 'reviews', :page => @page + 1} %></div>
Notice that the image for the rating follows a similar format to that for the average rating. However because Amazon.com doesn't allow customers to put fractions of a star as a rating, the rating will always be a whole number. We also need to unescape the HTML in review[:content] using CGI.unescapeHTML in order to display the HTML formatting in the text properly. In case you are wondering, CGI is already included in the Rails framework, which explains why you can use it without requiring it earlier on. We also provide a simple pagination mechanism that allows us to move to the next page of reviews. Here's how it turns out. Click on the rating graphic to bring up the customer reviews:
 
Summary We've learned about Amazon's E-Commerce API web service and how we can use it to retrieve information on the products sold by Amazon.com and its merchants.  References: http://docs.amazonwebservices.com/AWSEcommerceService/2005-10-05/index.html http://developer.amazonwebservices.com http://www.somelifeblog.com/2008/12/ruby-amazon-associates-web-services-aws.html
THANK YOU
Ad

More Related Content

What's hot (14)

Url Submissiotn list | SEO search engine url submissions list
Url Submissiotn list | SEO search engine url submissions listUrl Submissiotn list | SEO search engine url submissions list
Url Submissiotn list | SEO search engine url submissions list
romanticdock4696
 
API Basics
API BasicsAPI Basics
API Basics
Ritul Chaudhary
 
Soap.doc
Soap.docSoap.doc
Soap.doc
xavier john
 
ASP.NET Lecture 1
ASP.NET Lecture 1ASP.NET Lecture 1
ASP.NET Lecture 1
Julie Iskander
 
Azardi:Content Fulfilment Introduction
Azardi:Content Fulfilment IntroductionAzardi:Content Fulfilment Introduction
Azardi:Content Fulfilment Introduction
Infogrid Pacific Pte. Ltd
 
Design API using RAML - basics
Design API using RAML - basicsDesign API using RAML - basics
Design API using RAML - basics
kunal vishe
 
How we improved performance at Mixbook
How we improved performance at MixbookHow we improved performance at Mixbook
How we improved performance at Mixbook
Anton Astashov
 
Webfx
WebfxWebfx
Webfx
Mukut K Saha
 
ASP.Net Presentation Part1
ASP.Net Presentation Part1ASP.Net Presentation Part1
ASP.Net Presentation Part1
Neeraj Mathur
 
RESTful API Design Fundamentals
RESTful API Design FundamentalsRESTful API Design Fundamentals
RESTful API Design Fundamentals
Hüseyin BABAL
 
Alexa101 course slides
Alexa101 course slidesAlexa101 course slides
Alexa101 course slides
Dan Bloy
 
Jmp206 Web Services Bootcamp Final Draft
Jmp206   Web Services Bootcamp Final DraftJmp206   Web Services Bootcamp Final Draft
Jmp206 Web Services Bootcamp Final Draft
Bill Buchan
 
Creating an Effective Mobile API
Creating an Effective Mobile API Creating an Effective Mobile API
Creating an Effective Mobile API
Nick DeNardis
 
Data normalization across API interactions
Data normalization across API interactionsData normalization across API interactions
Data normalization across API interactions
Cloud Elements
 
Url Submissiotn list | SEO search engine url submissions list
Url Submissiotn list | SEO search engine url submissions listUrl Submissiotn list | SEO search engine url submissions list
Url Submissiotn list | SEO search engine url submissions list
romanticdock4696
 
Design API using RAML - basics
Design API using RAML - basicsDesign API using RAML - basics
Design API using RAML - basics
kunal vishe
 
How we improved performance at Mixbook
How we improved performance at MixbookHow we improved performance at Mixbook
How we improved performance at Mixbook
Anton Astashov
 
ASP.Net Presentation Part1
ASP.Net Presentation Part1ASP.Net Presentation Part1
ASP.Net Presentation Part1
Neeraj Mathur
 
RESTful API Design Fundamentals
RESTful API Design FundamentalsRESTful API Design Fundamentals
RESTful API Design Fundamentals
Hüseyin BABAL
 
Alexa101 course slides
Alexa101 course slidesAlexa101 course slides
Alexa101 course slides
Dan Bloy
 
Jmp206 Web Services Bootcamp Final Draft
Jmp206   Web Services Bootcamp Final DraftJmp206   Web Services Bootcamp Final Draft
Jmp206 Web Services Bootcamp Final Draft
Bill Buchan
 
Creating an Effective Mobile API
Creating an Effective Mobile API Creating an Effective Mobile API
Creating an Effective Mobile API
Nick DeNardis
 
Data normalization across API interactions
Data normalization across API interactionsData normalization across API interactions
Data normalization across API interactions
Cloud Elements
 

Viewers also liked (20)

Business communication (zayani)
Business communication (zayani)Business communication (zayani)
Business communication (zayani)
hassan777898
 
Getting the most out of google calendar
Getting the most out of google calendarGetting the most out of google calendar
Getting the most out of google calendar
Brandon Raymo
 
Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013
Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013
Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013
teguhtriguna
 
Introducción a las redes sociales
Introducción a las redes socialesIntroducción a las redes sociales
Introducción a las redes sociales
Montse Puig
 
Q4 2013 jnpr financial results slides 1 23 14
Q4 2013 jnpr financial results slides   1 23 14Q4 2013 jnpr financial results slides   1 23 14
Q4 2013 jnpr financial results slides 1 23 14
IRJuniperNetworks
 
Database connectivity with data reader by varun tiwari
Database connectivity with data reader by varun tiwariDatabase connectivity with data reader by varun tiwari
Database connectivity with data reader by varun tiwari
Bosco Technical Training Society, Don Bosco Technical School (Aff. GGSIP University, New Delhi)
 
Kita Hebat
Kita Hebat Kita Hebat
Kita Hebat
Arlita Dwi Utami
 
Dez tendências que podem mudar nosso futuro nos próximos anos
Dez tendências que podem mudar nosso futuro nos próximos anosDez tendências que podem mudar nosso futuro nos próximos anos
Dez tendências que podem mudar nosso futuro nos próximos anos
Juliano Kimura
 
Introducing PhoneGap to SproutCore 2
Introducing PhoneGap to SproutCore 2Introducing PhoneGap to SproutCore 2
Introducing PhoneGap to SproutCore 2
mwbrooks
 
Brookfield - White Paper - LGBT Assignees
Brookfield - White Paper - LGBT AssigneesBrookfield - White Paper - LGBT Assignees
Brookfield - White Paper - LGBT Assignees
ymcnulty
 
Pikachu Verde e Amarelo: a saga da franquia Pokémon no Brasil
Pikachu Verde e Amarelo: a saga da franquia Pokémon no BrasilPikachu Verde e Amarelo: a saga da franquia Pokémon no Brasil
Pikachu Verde e Amarelo: a saga da franquia Pokémon no Brasil
Gabriela-Kurtz
 
Consumer Credit Directive Report
Consumer Credit Directive ReportConsumer Credit Directive Report
Consumer Credit Directive Report
Chris Howells
 
Test
TestTest
Test
Suhendra
 
Materi iman kepada kitab allah (nisrokhah)
Materi iman kepada kitab allah (nisrokhah)Materi iman kepada kitab allah (nisrokhah)
Materi iman kepada kitab allah (nisrokhah)
samiul12
 
Portfolio Maitelavado
Portfolio MaitelavadoPortfolio Maitelavado
Portfolio Maitelavado
Maite
 
Social media voor politici. Kansen & valkuilen.
Social media voor politici. Kansen & valkuilen. Social media voor politici. Kansen & valkuilen.
Social media voor politici. Kansen & valkuilen.
Pixular - Kortrijk - Roeselare - Stefaan Lammertyn
 
Multi-homed applications
Multi-homed applicationsMulti-homed applications
Multi-homed applications
Andreas Ehn
 
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
Venketash (Pat) Ramadass
 
New Features in .Net Framework 4.0 By Nyros Developer
New Features in .Net Framework 4.0 By Nyros DeveloperNew Features in .Net Framework 4.0 By Nyros Developer
New Features in .Net Framework 4.0 By Nyros Developer
Nyros Technologies
 
Measuring the End User
Measuring the End User Measuring the End User
Measuring the End User
APNIC
 
Business communication (zayani)
Business communication (zayani)Business communication (zayani)
Business communication (zayani)
hassan777898
 
Getting the most out of google calendar
Getting the most out of google calendarGetting the most out of google calendar
Getting the most out of google calendar
Brandon Raymo
 
Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013
Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013
Bonjour French Film Festival - Runner Up Young Spikes Indonesia 2013
teguhtriguna
 
Introducción a las redes sociales
Introducción a las redes socialesIntroducción a las redes sociales
Introducción a las redes sociales
Montse Puig
 
Q4 2013 jnpr financial results slides 1 23 14
Q4 2013 jnpr financial results slides   1 23 14Q4 2013 jnpr financial results slides   1 23 14
Q4 2013 jnpr financial results slides 1 23 14
IRJuniperNetworks
 
Dez tendências que podem mudar nosso futuro nos próximos anos
Dez tendências que podem mudar nosso futuro nos próximos anosDez tendências que podem mudar nosso futuro nos próximos anos
Dez tendências que podem mudar nosso futuro nos próximos anos
Juliano Kimura
 
Introducing PhoneGap to SproutCore 2
Introducing PhoneGap to SproutCore 2Introducing PhoneGap to SproutCore 2
Introducing PhoneGap to SproutCore 2
mwbrooks
 
Brookfield - White Paper - LGBT Assignees
Brookfield - White Paper - LGBT AssigneesBrookfield - White Paper - LGBT Assignees
Brookfield - White Paper - LGBT Assignees
ymcnulty
 
Pikachu Verde e Amarelo: a saga da franquia Pokémon no Brasil
Pikachu Verde e Amarelo: a saga da franquia Pokémon no BrasilPikachu Verde e Amarelo: a saga da franquia Pokémon no Brasil
Pikachu Verde e Amarelo: a saga da franquia Pokémon no Brasil
Gabriela-Kurtz
 
Consumer Credit Directive Report
Consumer Credit Directive ReportConsumer Credit Directive Report
Consumer Credit Directive Report
Chris Howells
 
Materi iman kepada kitab allah (nisrokhah)
Materi iman kepada kitab allah (nisrokhah)Materi iman kepada kitab allah (nisrokhah)
Materi iman kepada kitab allah (nisrokhah)
samiul12
 
Portfolio Maitelavado
Portfolio MaitelavadoPortfolio Maitelavado
Portfolio Maitelavado
Maite
 
Multi-homed applications
Multi-homed applicationsMulti-homed applications
Multi-homed applications
Andreas Ehn
 
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
emediaIT - Sharepoint 2010 and K2 Breakfast - 2010.04.22
Venketash (Pat) Ramadass
 
New Features in .Net Framework 4.0 By Nyros Developer
New Features in .Net Framework 4.0 By Nyros DeveloperNew Features in .Net Framework 4.0 By Nyros Developer
New Features in .Net Framework 4.0 By Nyros Developer
Nyros Technologies
 
Measuring the End User
Measuring the End User Measuring the End User
Measuring the End User
APNIC
 
Ad

Similar to Aws (20)

Intro To Asp
Intro To AspIntro To Asp
Intro To Asp
Adil Jafri
 
Rails
RailsRails
Rails
SHC
 
Ruby On Rails Siddhesh
Ruby On Rails SiddheshRuby On Rails Siddhesh
Ruby On Rails Siddhesh
Siddhesh Bhobe
 
Building a chatbot – step by step
Building a chatbot – step by stepBuilding a chatbot – step by step
Building a chatbot – step by step
CodeOps Technologies LLP
 
Application Note APLX-LMW-0403: Interfacing the Apache Web ...
Application Note APLX-LMW-0403: Interfacing the Apache Web ...Application Note APLX-LMW-0403: Interfacing the Apache Web ...
Application Note APLX-LMW-0403: Interfacing the Apache Web ...
webhostingguy
 
Comprehensive Guide: Web Scraping with AWS Lambda
Comprehensive Guide: Web Scraping with AWS LambdaComprehensive Guide: Web Scraping with AWS Lambda
Comprehensive Guide: Web Scraping with AWS Lambda
X-Byte Enterprise Crawling
 
McrUmbMeetup 22 May 14: Umbraco and Amazon
McrUmbMeetup 22 May 14: Umbraco and AmazonMcrUmbMeetup 22 May 14: Umbraco and Amazon
McrUmbMeetup 22 May 14: Umbraco and Amazon
Dan Lister
 
The serverless LAMP stack
The serverless LAMP stackThe serverless LAMP stack
The serverless LAMP stack
⛷️ Ben Smith
 
Programming With Amazon, Google, And E Bay
Programming With Amazon, Google, And E BayProgramming With Amazon, Google, And E Bay
Programming With Amazon, Google, And E Bay
Phi Jack
 
Serverless APIs and you
Serverless APIs and youServerless APIs and you
Serverless APIs and you
James Beswick
 
Serverless architectures-with-aws-lambda
Serverless architectures-with-aws-lambdaServerless architectures-with-aws-lambda
Serverless architectures-with-aws-lambda
saifam
 
20200513 Getting started with AWS Amplify
20200513   Getting started with AWS Amplify20200513   Getting started with AWS Amplify
20200513 Getting started with AWS Amplify
Marcia Villalba
 
re:Invent ARC307 - Serverless architectural patterns and best practices.pdf
re:Invent ARC307 - Serverless architectural patterns and best practices.pdfre:Invent ARC307 - Serverless architectural patterns and best practices.pdf
re:Invent ARC307 - Serverless architectural patterns and best practices.pdf
Heitor Lessa
 
Aws Lambda Cart Microservice Server Less
Aws Lambda Cart Microservice Server LessAws Lambda Cart Microservice Server Less
Aws Lambda Cart Microservice Server Less
Dhanu Gupta
 
Web 2 0 Tools
Web 2 0 ToolsWeb 2 0 Tools
Web 2 0 Tools
ramesh kumar
 
What's new in Serverless at AWS?
What's new in Serverless at AWS?What's new in Serverless at AWS?
What's new in Serverless at AWS?
Daniel Zivkovic
 
Serverless Applications with AWS SAM
Serverless Applications with AWS SAMServerless Applications with AWS SAM
Serverless Applications with AWS SAM
Chris Munns
 
A Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptx
A Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptxA Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptx
A Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptx
Productdata Scrape
 
Deploying computer vision model as api using aws lambda and api gateway
Deploying computer vision model as api using aws lambda and api gatewayDeploying computer vision model as api using aws lambda and api gateway
Deploying computer vision model as api using aws lambda and api gateway
Shirish Gupta
 
interacting with AWS2 .pdf
interacting       with    AWS2      .pdfinteracting       with    AWS2      .pdf
interacting with AWS2 .pdf
Mohamed Alashram
 
Rails
RailsRails
Rails
SHC
 
Ruby On Rails Siddhesh
Ruby On Rails SiddheshRuby On Rails Siddhesh
Ruby On Rails Siddhesh
Siddhesh Bhobe
 
Application Note APLX-LMW-0403: Interfacing the Apache Web ...
Application Note APLX-LMW-0403: Interfacing the Apache Web ...Application Note APLX-LMW-0403: Interfacing the Apache Web ...
Application Note APLX-LMW-0403: Interfacing the Apache Web ...
webhostingguy
 
Comprehensive Guide: Web Scraping with AWS Lambda
Comprehensive Guide: Web Scraping with AWS LambdaComprehensive Guide: Web Scraping with AWS Lambda
Comprehensive Guide: Web Scraping with AWS Lambda
X-Byte Enterprise Crawling
 
McrUmbMeetup 22 May 14: Umbraco and Amazon
McrUmbMeetup 22 May 14: Umbraco and AmazonMcrUmbMeetup 22 May 14: Umbraco and Amazon
McrUmbMeetup 22 May 14: Umbraco and Amazon
Dan Lister
 
Programming With Amazon, Google, And E Bay
Programming With Amazon, Google, And E BayProgramming With Amazon, Google, And E Bay
Programming With Amazon, Google, And E Bay
Phi Jack
 
Serverless APIs and you
Serverless APIs and youServerless APIs and you
Serverless APIs and you
James Beswick
 
Serverless architectures-with-aws-lambda
Serverless architectures-with-aws-lambdaServerless architectures-with-aws-lambda
Serverless architectures-with-aws-lambda
saifam
 
20200513 Getting started with AWS Amplify
20200513   Getting started with AWS Amplify20200513   Getting started with AWS Amplify
20200513 Getting started with AWS Amplify
Marcia Villalba
 
re:Invent ARC307 - Serverless architectural patterns and best practices.pdf
re:Invent ARC307 - Serverless architectural patterns and best practices.pdfre:Invent ARC307 - Serverless architectural patterns and best practices.pdf
re:Invent ARC307 - Serverless architectural patterns and best practices.pdf
Heitor Lessa
 
Aws Lambda Cart Microservice Server Less
Aws Lambda Cart Microservice Server LessAws Lambda Cart Microservice Server Less
Aws Lambda Cart Microservice Server Less
Dhanu Gupta
 
What's new in Serverless at AWS?
What's new in Serverless at AWS?What's new in Serverless at AWS?
What's new in Serverless at AWS?
Daniel Zivkovic
 
Serverless Applications with AWS SAM
Serverless Applications with AWS SAMServerless Applications with AWS SAM
Serverless Applications with AWS SAM
Chris Munns
 
A Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptx
A Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptxA Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptx
A Stepwise Guide to Scrape Aliexpress Digital Camera Data (1).pptx
Productdata Scrape
 
Deploying computer vision model as api using aws lambda and api gateway
Deploying computer vision model as api using aws lambda and api gatewayDeploying computer vision model as api using aws lambda and api gateway
Deploying computer vision model as api using aws lambda and api gateway
Shirish Gupta
 
interacting with AWS2 .pdf
interacting       with    AWS2      .pdfinteracting       with    AWS2      .pdf
interacting with AWS2 .pdf
Mohamed Alashram
 
Ad

More from Nyros Technologies (20)

MVC Architecture in ASP.Net By Nyros Developer
MVC Architecture in ASP.Net By Nyros DeveloperMVC Architecture in ASP.Net By Nyros Developer
MVC Architecture in ASP.Net By Nyros Developer
Nyros Technologies
 
Web Designing Bugs - Fixes By Nyros Developer
Web Designing Bugs - Fixes By Nyros DeveloperWeb Designing Bugs - Fixes By Nyros Developer
Web Designing Bugs - Fixes By Nyros Developer
Nyros Technologies
 
Capistrano Deployment By Nyros Developer
Capistrano Deployment By Nyros DeveloperCapistrano Deployment By Nyros Developer
Capistrano Deployment By Nyros Developer
Nyros Technologies
 
Silver Light By Nyros Developer
Silver Light By Nyros DeveloperSilver Light By Nyros Developer
Silver Light By Nyros Developer
Nyros Technologies
 
Web 2.0 Design Standards By Nyros Developer
Web 2.0 Design Standards By Nyros DeveloperWeb 2.0 Design Standards By Nyros Developer
Web 2.0 Design Standards By Nyros Developer
Nyros Technologies
 
Web 2.0 By Nyros Developer
Web 2.0 By Nyros DeveloperWeb 2.0 By Nyros Developer
Web 2.0 By Nyros Developer
Nyros Technologies
 
Caching By Nyros Developer
Caching By Nyros DeveloperCaching By Nyros Developer
Caching By Nyros Developer
Nyros Technologies
 
Language Integrated Query By Nyros Developer
Language Integrated Query By Nyros DeveloperLanguage Integrated Query By Nyros Developer
Language Integrated Query By Nyros Developer
Nyros Technologies
 
Oops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperOops in PHP By Nyros Developer
Oops in PHP By Nyros Developer
Nyros Technologies
 
Connect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros DeveloperConnect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros Developer
Nyros Technologies
 
Github By Nyros Developer
Github By Nyros DeveloperGithub By Nyros Developer
Github By Nyros Developer
Nyros Technologies
 
Research on Audio and Video Streaming
Research on Audio and Video StreamingResearch on Audio and Video Streaming
Research on Audio and Video Streaming
Nyros Technologies
 
User Interface
User InterfaceUser Interface
User Interface
Nyros Technologies
 
Audio and Video Streaming
Audio and Video StreamingAudio and Video Streaming
Audio and Video Streaming
Nyros Technologies
 
Deploying Rails Apps with Capistrano
Deploying Rails Apps with CapistranoDeploying Rails Apps with Capistrano
Deploying Rails Apps with Capistrano
Nyros Technologies
 
Capistrano - Deployment Tool
Capistrano - Deployment ToolCapistrano - Deployment Tool
Capistrano - Deployment Tool
Nyros Technologies
 
Social Networking
Social NetworkingSocial Networking
Social Networking
Nyros Technologies
 
Payment Gateway
Payment GatewayPayment Gateway
Payment Gateway
Nyros Technologies
 
GIT By Sivakrishna
GIT By SivakrishnaGIT By Sivakrishna
GIT By Sivakrishna
Nyros Technologies
 
Test Drive Development in Ruby On Rails
Test Drive Development in Ruby On RailsTest Drive Development in Ruby On Rails
Test Drive Development in Ruby On Rails
Nyros Technologies
 
MVC Architecture in ASP.Net By Nyros Developer
MVC Architecture in ASP.Net By Nyros DeveloperMVC Architecture in ASP.Net By Nyros Developer
MVC Architecture in ASP.Net By Nyros Developer
Nyros Technologies
 
Web Designing Bugs - Fixes By Nyros Developer
Web Designing Bugs - Fixes By Nyros DeveloperWeb Designing Bugs - Fixes By Nyros Developer
Web Designing Bugs - Fixes By Nyros Developer
Nyros Technologies
 
Capistrano Deployment By Nyros Developer
Capistrano Deployment By Nyros DeveloperCapistrano Deployment By Nyros Developer
Capistrano Deployment By Nyros Developer
Nyros Technologies
 
Silver Light By Nyros Developer
Silver Light By Nyros DeveloperSilver Light By Nyros Developer
Silver Light By Nyros Developer
Nyros Technologies
 
Web 2.0 Design Standards By Nyros Developer
Web 2.0 Design Standards By Nyros DeveloperWeb 2.0 Design Standards By Nyros Developer
Web 2.0 Design Standards By Nyros Developer
Nyros Technologies
 
Language Integrated Query By Nyros Developer
Language Integrated Query By Nyros DeveloperLanguage Integrated Query By Nyros Developer
Language Integrated Query By Nyros Developer
Nyros Technologies
 
Oops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperOops in PHP By Nyros Developer
Oops in PHP By Nyros Developer
Nyros Technologies
 
Connect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros DeveloperConnect with Facebook to Rails Application By Nyros Developer
Connect with Facebook to Rails Application By Nyros Developer
Nyros Technologies
 
Research on Audio and Video Streaming
Research on Audio and Video StreamingResearch on Audio and Video Streaming
Research on Audio and Video Streaming
Nyros Technologies
 
Deploying Rails Apps with Capistrano
Deploying Rails Apps with CapistranoDeploying Rails Apps with Capistrano
Deploying Rails Apps with Capistrano
Nyros Technologies
 
Test Drive Development in Ruby On Rails
Test Drive Development in Ruby On RailsTest Drive Development in Ruby On Rails
Test Drive Development in Ruby On Rails
Nyros Technologies
 

Recently uploaded (20)

Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 

Aws

  • 1. Web Services A Web service is defined as &quot;a software system designed to support interoperable machine to machine interaction over a network&quot;. Web services are frequently just Internet Application Programming Interfaces (API) that can be accessed over a network, such as the Internet , and executed on a remote system hosting the requested services Web services are application components Web services communicate using open protocols Web services are self-contained and self-describing Web services can be discovered using UDDI Web services can be used by other applications XML is the basis for Web services
  • 2. How Does it Work? The basic Web services platform is XML + HTTP. XML provides a language which can be used between different platforms and programming languages and still express complex messages and functions. The HTTP protocol is the most used Internet protocol. Web services platform elements: SOAP (Simple Object Access Protocol) UDDI (Universal Description, Discovery and Integration) WSDL (Web Services Description Language).
  • 3. Web Services take Web-applications to the Next Level By using Web services, your application can publish its function or message to the rest of the world. Web services use XML to code and to decode data, and SOAP to transport it (using open protocols). With Web services, your accounting department's Win 2k server's billing system can connect with your IT supplier's UNIX server.
  • 4. Web services on Ruby on Rails Most web services are based on one of three architectures: Representational State Transfer (REST), Simple Object Access Protocol (SOAP), or Extensible Markup Language Remote Procedural Calls (XML-RPC). Web services often offer access via two or more of these architectures. For example, we'll be offering both SOAP and XML-RPC access to clients in the ActionWebService server, so clients can implement the architecture that's easiest for their specific application. If you're building your web service clients in Ruby and implementing them as part of a Rails application, you are in luck. Building web service clients with Ruby on Rails requires only a few simple steps and involves just a few Ruby libraries. Even better news is that the majority of libraries you use for building clientsCGI, NET, REXML, Soap4r, XSD, and XML-RPCare automatically loaded by your Rails environment. All you have to worry about is knowing when, how, and where to use each library.
  • 5. Amazon E-Commerce Services API The Amazon E-Commerce Services (ECS) API is a web service API accessible through SOAP and REST that provides access to Amazon.com's online retail platform. Using these web services, developers can: Find items that are available on sale on Amazon.com, either by Amazon.com itself or by other merchants Get detailed information on the items including pricing and availability Get customer reviews on the items, including customer ratings Find items that are similar To use the Amazon ECS API as a developer you need to register for an Amazon Web Service (AWS) access key ID. This access ID is used with every request that you send to the Amazon ECS.
  • 6. Registering for an Amazon Web Service access key ID To register for the AWS access key ID, go to http://www.amazon.com/gp/aws/registration/registration-form.html. If you're an existing Amazon.com customer, you can provide your email address and your account password. If you don't have an existing Amazon Web Services account, you will be asked to create one. Once you create the Amazon Web Services account, you will be sent an email and also redirected to the success page. Select the Amazon E-Commerce Service link as the service you would like to explore. When you enter the Amazon E-Commerce web services link, you will see a small button to your right: Your Web Services Account . Click on it and it will show you a list of actions you can do with your web services account. Click on the AWS Access Identifiers link to see your access key ID.
  • 7. Registering as an Amazon Associate Associates is Amazon.com's affiliate marketing program and it allows you to earn money by recommending purchases on Amazon.com. When you register to be an associate, you will receive an associate ID. In the mashup shown in this chapter, we will include an associate ID in your shopping cart in order for you to earn extra money. To join the Associates program, go to http://affiliate-program.amazon.com/join and click on the 'Apply now' button. Enter your email address and account password (you should have an account by now) for your account. You will need to fill up a form and provide information on your site, after which you will be shown an associate ID, which you can use in your mashup.
  • 8. Amazon ECS Ruby library The Amazon ECS library (http://rubyforge.org/projects/amazon-ecs) is a Ruby package that provides easy access to the Amazon ECS APIs. This library accesses the Amazon ECS REST APIs using Hpricot (http://code.whytheluckystiff.net/hpricot) and is flexible enough to allow use of all Amazon ECS APIs, even those not directly supported with convenience methods.
  • 9. What we will be doing? For this mashup we will be creating a new Rails application to demonstrate how you can integrate this feature into your website. The Rails application will have a left-hand sidebar that shows your book, its details, and a list of similar books. Your visitors can also view comments and ratings from other readers posted on Amazon.com. This mashup also enables you to create a remote shopping cart at Amazon.com to let your visitors buy directly through you. At the same time, it allows you to earn some extra money by being an Amazon Associate and referring other similar books to your visitors and allowing your visitors to add them to the remote shopping cart. When your visitors are ready to buy, the mashup will redirect them to Amazon.com for checkout and payment .
  • 10. This is the sequence of actions we will take to create this mashup: Create a Rails application Install the Amazon ECS Ruby library Create the books controller Create the Amazon Rails library and use it to get information on the book Create the sidebar view to display the book information and similar books Get customer reviews and create the customer comments and ratings view
  • 11. Note that this mashup doesn't require database access at all.This is ideal in the case where your existing website doesn't have a database and you're not keen to pay your hosting company additional money for one. However if you have an existing database you can easily add another table and add in some simple ActiveRecord models to represent the history. Also note that there is very little that you are actually processing or even storing at your mashup—almost everything is residing at Amazon.com
  • 12. Installing the Amazon ECS Ruby library >gem install amazon-ecs --include-dependencies Creating the books controller Next, we will need to create the one and only controller in this whole mashup. Create a file called books_controller.rb in the RAILS_ROOT/app/controllers folder. The books controller is a very simple controller. class BooksController < ApplicationController include Amazon @@book_asin = '0974514055' def sidebar @book = get_book_details @@book_asin @similars = get_similar_products @@book_asin end end
  • 13. Creating the Amazon Rails library This is a Ruby module that we include in your book controller. It contains the main processing logic of the mashup. It is used mainly to communicate with the Amazon ECS API provided by Amazon.com, using the Amazon ECS Ruby library by Herryanto Siatono. Create a Ruby file in the RAILS_ROOT/lib folder called amazon.rb. For those uninitiated in Ruby on Rails, all Ruby files placed here are directly accessible to the Rails application during run time. This is why we only need to add the line include Amazon in the controller. require 'amazon/ecs' module Amazon @@key_id = <your Amazon.com access key ID> @@associate_id = <your associate ID> # get the details of the book given the ASIN def get_book_details(asin) book = Hash.new
  • 14. res = ecs.item_lookup(asin, :response_group => 'Large') book[:title] = res.first_item.get(&quot;title&quot;) book[:publication_date] = res.first_item.get(&quot;publicationdate&quot;) book[:salesrank] = res.first_item.get(&quot;salesrank&quot;) book[:image_url] = res.first_item.get(&quot;mediumimage/url&quot;) book[:author] = res.first_item.get(&quot;itemattributes/author&quot;) book[:isbn] = res.first_item.get(&quot;itemattributes/isbn&quot;) book[:price] = res.first_item.get(&quot;price/currencycode&quot;) + res.first_item.get(&quot;price/formattedprice&quot;) book[:total_reviews] = res.first_item.get(&quot;customerreviews/totalreviews&quot;) book[:average_rating] = res.first_item.get(&quot;customerreviews/averagerating&quot;) book[:offer_listing_id] = res.first_item.get(&quot;offerlisting/offerlistingid&quot;) return book end # get similar products to a given ASIN def get_similar_products(asin) similars = Array.new res = ecs.send_request(:aWS_access_key_id => @@key_id, : operation => 'SimilarityLookup', :item_id => asin, : response_group => 'Small,Images' ) res.items.each do |item| similar = Hash.new similar[:asin] = item.get('asin') similar[:title] = item.get('itemattributes/title') similar[:author] = item.get('itemattributes/author') similar[:small_image] = item.get_hash('smallimage') similars << similar end return similars end
  • 15. protected # configure and return an Ecs object def ecs Amazon::Ecs.configure do |options| options[:aWS_access_key_id] = @@key_id options[:associate_tag] = @@associate_id end return Amazon::Ecs end End We will need to require the Amazon ECS Ruby library, and also define the AWS access key ID and associate ID that you have acquired from Amazon.com in a previous section. Define both of them in class variables, as they are not going to change.First, we define a convenient method that returns the Amazon::Ecs object that is configured with the access key ID and the associate ID.Next, define two instance methods. The first is to get the book's details and the second is to get books that are related or 'similar' to your book. Similarity is based on books that customers bought, that is, customers who bought X also bought Y. This assures us that the customer is really interested in those books. In both methods you need to provide an ASIN. In our case the ASIN is from the book controller, where we hard-coded your book's ASIN get_book_details method use the Amazon::Ecs.item_lookup method from the Amazon ECS Ruby library, passing in the ASIN and requesting a Large response group. This method wraps around the ItemLookup web service from the Amazon ECS API. This response group returns various pieces of information, which we subsequently extract into a Hash and display in the view. The get_similar_products method on the other hand uses a web service directly from the Amazon ECS API called SimilarityLookup. SimilarityLookup does not have an equivalent wrapper method in the Amazon ECS Ruby library. However, the Amazon ECS Ruby library is flexible enough to allow other requests through the Amazon::Ecs#send_request method by placing the web service name through the : operation parameter. We also request two response groups to be returned, that is, Small and Images.
  • 16. As in get_book_details, we extract the information we need from the returned response and place it in a Hash, which in turn is placed in an array of similar items and returned to the view. Creating the sidebar The Amazon Rails library is the brain of our mashup but it's not visible or exciting. Let's create something visible next, the sidebar. First, create the layout used for all templates in the book views. Create a file in the folder RAILS_ROOT/app/views/layouts named books.rhtml: Next, create a folder called RAILS_ROOT/app/views/books and a view file called sidebar.rhtml in this folder.
  • 17. <div class=&quot;info&quot; id=&quot;bookBox&quot;> <table class=&quot;box&quot;> <tbody><tr> <td class=&quot;topLeft&quot;> </td> <td class=&quot;topCenter&quot;> <div class=&quot;center&quot;> <h1><%= h @book[:title]%></h1> <h2><%= h @book[:author]%></h2> <%= image_tag @book[:image_url]%> <p/> <strong><%= h @book[:price]%></strong> <p/> <span>Published <%= h @book[: publication_date]%></span> </div> <div> <strong><%= h @book[:salesrank]%></ strong> </div> <br/> <div> <strong>Other books you might be interested in</strong> <br/> <table> <% @similars.each { |similar|%> <tr><td align='center'> <%= image_tag(similar[:small_image][: url], :border => 0) %> </td></tr> <tr><td align='center'> <%= h similar[:title]%> </td></tr>
  • 18. This view file will show the sidebar with the details of the book. Now let's quickly preview the fruits of your labor! Start the server with: $./script/server Then go to http://localhost:3000/books/sidebar
  • 19. Note the blank space to the right of the page. This is deliberate. After all, the sidebar is a part of your website, not your entire site. For example, this blank space could be your existing blog. We will also be using it later on for the customer reviews as well as the shopping cart. Getting customer reviews Next, we want to get customer reviews that have been posted on Amazon.com and display them to the right of the sidebar. To do this, we will add a picture just below the sales ranking. The picture will display the average customer rating of the book, using the rating system in Amazon.com, which is 0 stars to 5 stars. Clicking on this picture will show the customer reviews in blank space to the right of the sidebar. The Amazon ECS API allows 5 customer reviews to be retrieved in each call, so we will also do some simple pagination for the customer reviews.
  • 20. <span>Published <%= h @book[: publication_date]%></span> </div> <div class=&quot;right-float&quot;><%= link_to_ remote(image_tag(&quot;#{@book[:average_rating]}. gif&quot;, :border => 0), :update => 'update_area',: url => {:action => 'reviews' ,:page => 1}) %></div> <td><div id=&quot;update_area&quot;></div></td> Next, add the following action in the books_controller.rb file: def reviews @reviews = get_customer_reviews @@book_asin, params[:page].to_i @page = params[:page].to_i End The get_customer_reviews method in this action comes from our Amazon Rails library again, so add this method in the amazon.rb file:
  • 21. # get customer reviews of the product given the ASIN def get_customer_reviews(asin,page=1) res = ecs.item_lookup(asin, :review_page => page, :response_group => 'Reviews') reviews = res.first_item/&quot;customerreviews/review&quot; reviews.collect { |review| Amazon::Element.get_hash(review) } End The get_customer_reviews method, like the get_book_details method, uses Amazon::Ecs.item_lookup to retrieve the reviews. However, this time we are asking for the Reviews response group, which we will convert into a Hash and return it to the view. Lastly we need to create the reviews view to display the reviews. Create a file named reviews.rhtml in RAILS_ROOT/app/views/books:
  • 22. <h1>Customer reviews</h1> <% @reviews.each { |review| %> <table class='reviews'> <tr><th><%= h review[:summary]%></th></tr> <tr><td><div class=&quot;left-float&quot;><%= h review[:date]%></div> <div class=&quot;right-float&quot;> <%= image_tag(&quot;#{review[:rating]}.0.gif&quot;)%> </div></td></tr> <tr><td><%= CGI.unescapeHTML review[:content]%></td></tr> </table> <% } %> <div class='left-float'><%= link_to_remote '<< previous', :update => 'update_area', :url => {:action => 'reviews', :page => @page - 1} unless @page == 1%></div> <div class='right-float'><%= link_to_remote 'next >>', :update => 'update_area', :url => {:action => 'reviews', :page => @page + 1} %></div>
  • 23. Notice that the image for the rating follows a similar format to that for the average rating. However because Amazon.com doesn't allow customers to put fractions of a star as a rating, the rating will always be a whole number. We also need to unescape the HTML in review[:content] using CGI.unescapeHTML in order to display the HTML formatting in the text properly. In case you are wondering, CGI is already included in the Rails framework, which explains why you can use it without requiring it earlier on. We also provide a simple pagination mechanism that allows us to move to the next page of reviews. Here's how it turns out. Click on the rating graphic to bring up the customer reviews:
  • 24.  
  • 25. Summary We've learned about Amazon's E-Commerce API web service and how we can use it to retrieve information on the products sold by Amazon.com and its merchants. References: http://docs.amazonwebservices.com/AWSEcommerceService/2005-10-05/index.html http://developer.amazonwebservices.com http://www.somelifeblog.com/2008/12/ruby-amazon-associates-web-services-aws.html