SlideShare a Scribd company logo
1 of 18
SoMa Project Timeline
Irina Grosu
Ana-Teodora Petrea
WADE 2013 – 2014
SoMa Project Timeline
Start Date
 Started working on the SoMa project on the 4th of November 2013.
Pick implementation technology
 The SoMa application is an ASP.NET MVC 4 project that will expose a REST API.

 The main reasons we chose this technology are:
 Provides Templates for MVC applications and Web APIs. This make it faster to develop
reliable Web APIs and applications.
 The .NET Platform provides lots of libraries to work with.
 Twitter Bootstrap is available as a NuGet package. Fast front-end development framework.
Uses LESS.
 Also, NuGet packages for working with the Twitter and Flickr APIs.
 Bing Maps are integrated in the .NET Framework.
 Visual Studio Add-Ons for better development: Productivity Power Tools 2012.
 Fast deployment to Windows Azure and reliable cloud service.
Pick Domain
 Picked Domain Name! See us at: http://soma.azurewebsites.net/
 Hosting in the

using
Synonyms providers analysis – complete analysis here
 Thesaurus - HTTP GET request to http://thesaurus.altervista.org/thesaurus/v1


Parameters: word, language, application key, response type



Request example: http://thesaurus.altervista.org/thesaurus/v1?word=finish%20line&language=en_US&key=u8JKaOitVKHOahvUs&output=xml



Response:
<response>
<list>
<category>(noun)</category>
<synonyms>finishing line|line|finish|destination|goal</synonyms>
</list>
</response>



Pros:


Provides pretty accurate synonyms



The results don't require heavy processing



One synonym list for each definition (synset) of a word -> limit searches to the most relevant ones (or the most likely to be relevant) -> only consider
the main and most common synset.
Synonyms providers analisys
 The Synonyms API from STANDS4 - offers a web API for retrieving synonyms, thesaurus information and antonyms of a given word.


Parameters: API user id, developer token id, word



Request example: http://www.stands4.com/services/v2/syno.php?uid=1001&tokenid=tk324324&word=doctor



Response
<results>
<result>
<term>doctor, doc, physician, MD, Dr., medico</term>
<definition>a licensed medical practitioner</definition>
<example>"I felt so bad I went to see my doctor"</example>
<partofspeech>noun</partofspeech>
<synonyms>doc, medico, doctor, physician, mendelevium, medical student</synonyms>
<antonyms/>
</result>
[...]
</results>



More information:
 Less accurate synonyms
 The most widely used synset is given as the first result
REST API – complete documentation here
 Created a REST API for SoMa that includes hypermedia controls.

 Exposing 2 main resources:
 /websites - Resource representing all the websites supported by the SoMa application. For
the moment, we decided on Twitter and Flickr. If the time allows it, we will also support
Vimeo.
 /resources - Generic name for all content downloaded from the supported websites: posts,
tweets, pictures, videos, etc.

 API Key required in order to prove the authenticity of the requests and to limit
their number. This should protect the application from attacks like Denial of
Service.

 To get all the available websites supported by the application a GET Request can
be made to the /websites resource.
REST API
 GET request to: /websites?key={INSERT_YOUR_KEY} => Response:
[{
"Name":"Flickr",
"Links":
[{
"Rel":"linkrels/websites/query_by_tag",
"Uri":"/websites/flickr"
}]}, {
"Name":"Twitter",
"Links":
[{
"Rel":"linkrels/websites/query_by_tag",
"Uri":"/websites/twitter"
}]
}]
REST API
 To query, for example, new photos a POST request can be made to /websites/flickr that
contains in the POST body one or more of the following parameters:
Name
tag
max_no_entries
key
use_synonyms
ignore_previous

Definition
The tag you want to search for. For example: cat.
The maximum number of the entries from the response.
A valid API Key is needed in order to use the REST API.
The API implicitly make use of synonyms but if it is wanted this can be disabled
by using the parameter with the ‘false’ value like: use_synonyms=false
The API implicitly uses previous search results (if they exists) to provide faster
access to resources. If the ignore_previous parameter is used with the value
‘true’ the previous stored content (if it exists) will be deleted and a new search
will be made for the provided tags.

 The user has also the possibility to make a DELETE request in order to remove
from the cache the information stored for a specific tag.
REST API
To retrieve, for example, the photos associated with a tag a GET request can be made to:
/resources/photos/{tag}?key={INSERT_YOUR_KEY}. Possible result:
[{
"PhotoName":"BlackCat.jpg",
"Id":"f9299cb7d7a9b9c3f57b83461c541a24",
"Url":"http://www.flickr.com/photos/doug88888/5717852049",
"Website":"flickr",
"Links":
[{
"Rel":"linkrels/resources/photos/get",
"Uri":"/resources/photos/cat/f9299cb7d7a9b9c3f57b83461c541a24"
}] }, {
"PhotoName":"Cat.jpg",
"Id":"f2fb87bbad9d093c5a631b548be70c8f",
"Url":"http://www.flickr.com/photos/ronanmccormick/9837068194",
"Website":"flickr",
"Links":
[{
"Rel":"linkrels/resources/photos/get",
"Uri":"/resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f"
}]
}]
REST API
 The user has also the possibility to request an individual resource using the tag
and the id of that resource. For example, using the URL provided in the previous
response he can request more information by making a GET request to:
/resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f?key={INSERT_YO
UR_KEY}. The response may be:
{
"PhotoName":"Cat.jpg",
"Id":"f2fb87bbad9d093c5a631b548be70c8f",
"Url":"http://www.flickr.com/photos/ronanmccormick/9837068194",
"Website":"flickr",
"Author":"Ronan McCormick“

}
Architecture & Design – complete documentation here
 Application created using the concept API First. The front-end makes use of the REST API in
order to complete user requests.
 Resource Models - general (Resource) and specific classes (PhotoResource,
MessageResource) stored in specific repositories (MessagesRepository, PhotosRepository).
Resources are stored organized after their tag and id.
 The retrieved information is Cache persistent. In order to save cache space the photo content
is not downloaded but only referenced by Url inside the resource model. The content will be
downloaded and displayed on Bing Maps at the load time of the information on the page.
 Repositories for storing resources:
 Repository: abstract class that contains the cache keys used in identifying the stored information
for the application;
 MessageRepository: stores the information regarding the messages obtained from Twitter;
 PhotosRepository: stores the information regarding the photos obtained from Flickr;
Architecture & Design
 SynonymsProvider – supports the interaction between the application and the service
used for obtaining synonyms;
 FlickrSearch – Supports the interaction between the application and the Flickr service;
 TwitterSearch – Supports the interaction between the application and the Twitter
service;
 WebsitesController – Provides access to the /websites resource representing the
resources stored by the application.
 FlickrController – Processes the POST requests sent using the /websites/flickr endpoint
of the REST API.
 TwitterController – Processes the POST requests sent using the /websites/twitter
endpoint of the REST API.
Architecture & Design
 ResourcesController – Provides access to the /resources endpoint representing
the resources stored by the application.
 PhotosController – Processes GET and DELETE requests sent using the
/resources/photos endpoint of the REST API.
 MessagesController – Processes GET and DELETE requests sent using the
/resources/messages endpoint of the REST API.
 The Class Diagram for the soma Project can be found here.
 A Sequence Diagram representing a request being made with a specific tag for
receiving messages from Twitter can be found here.
 The complete documentation of SoMa’s Architecture & Design that also
contains microdata can be found here.
Prototype
 A demo is up and running at : http://soma.azurewebsites.net/
 Any of the following requests can be tried:
 Retrieve supported websites:
http://soma.azurewebsites.net/api/websites?key=lro2e32
 Retrieve resources types:
http://soma.azurewebsites.net/api/resources?key=lro2e32
 Retrieve photos for the ‘cat’ tag:
http://soma.azurewebsites.net/api/resources/photos/cat?key=lro2e32
MidTerm Evaluation
 Blog available at: http://wadesoma.wordpress.com/

 SoMa website: http://soma.azurewebsites.net/
 Source Code available at: https://wadesoma.codeplex.com/
 Documentation available at: http://students.info.uaic.ro/~irina.grosu/soma/
Thank you!

More Related Content

What's hot

Are you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint AppsAre you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint Apps
Liam Cleary [MVP]
 
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
ijceronline
 
Writing Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday TorontoWriting Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday Toronto
Eli Robillard
 

What's hot (8)

Are you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint AppsAre you getting Sleepy. REST in SharePoint Apps
Are you getting Sleepy. REST in SharePoint Apps
 
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
 
Doing More with Less: Mash Your Way to Productivity
Doing More with Less: Mash Your Way to ProductivityDoing More with Less: Mash Your Way to Productivity
Doing More with Less: Mash Your Way to Productivity
 
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
Matraca industrial evaluation (Cha-Q tool demo event Dec 2016)
 
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...IJCER (www.ijceronline.com) International Journal of computational Engineerin...
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
 
Flickr
FlickrFlickr
Flickr
 
20090914 Petamedia Irp5
20090914 Petamedia Irp520090914 Petamedia Irp5
20090914 Petamedia Irp5
 
Writing Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday TorontoWriting Secure SharePoint Code - SharePoint Saturday Toronto
Writing Secure SharePoint Code - SharePoint Saturday Toronto
 

Similar to Timeline SoMa WADE

Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?
Srinath Perera
 
Stefaan Ponnet, Fusebox
Stefaan Ponnet, FuseboxStefaan Ponnet, Fusebox
Stefaan Ponnet, Fusebox
nascomgenk
 

Similar to Timeline SoMa WADE (20)

Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
WebApp #3 : API
WebApp #3 : APIWebApp #3 : API
WebApp #3 : API
 
Modified REST Presentation
Modified REST PresentationModified REST Presentation
Modified REST Presentation
 
SPFx Webinar Loading SharePoint data in a SPFx Webpart
SPFx Webinar Loading SharePoint data in a SPFx WebpartSPFx Webinar Loading SharePoint data in a SPFx Webpart
SPFx Webinar Loading SharePoint data in a SPFx Webpart
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
 
Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?
 
Stefaan Ponnet, Fusebox
Stefaan Ponnet, FuseboxStefaan Ponnet, Fusebox
Stefaan Ponnet, Fusebox
 
Charla desarrollo de apps con sharepoint y office 365
Charla   desarrollo de apps con sharepoint y office 365Charla   desarrollo de apps con sharepoint y office 365
Charla desarrollo de apps con sharepoint y office 365
 
Big Data Week 2013 Flow
Big Data Week 2013 FlowBig Data Week 2013 Flow
Big Data Week 2013 Flow
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearch
 
SharePoint 2013 REST APIs
SharePoint 2013 REST APIsSharePoint 2013 REST APIs
SharePoint 2013 REST APIs
 
Colloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web CrawlerColloquim Report - Rotto Link Web Crawler
Colloquim Report - Rotto Link Web Crawler
 
Api manager preconference
Api manager preconferenceApi manager preconference
Api manager preconference
 
REST based API
REST based APIREST based API
REST based API
 
Download PowerPoint Project on social programming for engineering students
Download PowerPoint Project on social programming for engineering studentsDownload PowerPoint Project on social programming for engineering students
Download PowerPoint Project on social programming for engineering students
 
OAuth Android Göteborg
OAuth Android GöteborgOAuth Android Göteborg
OAuth Android Göteborg
 
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
SharePoint Fest DC - Everything your need to know about the Microsoft Graph a...
 
REST Presentation
REST PresentationREST Presentation
REST Presentation
 
Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.Best Practices for Architecting a Pragmatic Web API.
Best Practices for Architecting a Pragmatic Web API.
 
WebAppSec Updates from W3C
WebAppSec Updates from W3CWebAppSec Updates from W3C
WebAppSec Updates from W3C
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Timeline SoMa WADE

  • 1. SoMa Project Timeline Irina Grosu Ana-Teodora Petrea WADE 2013 – 2014
  • 3. Start Date  Started working on the SoMa project on the 4th of November 2013.
  • 4. Pick implementation technology  The SoMa application is an ASP.NET MVC 4 project that will expose a REST API.  The main reasons we chose this technology are:  Provides Templates for MVC applications and Web APIs. This make it faster to develop reliable Web APIs and applications.  The .NET Platform provides lots of libraries to work with.  Twitter Bootstrap is available as a NuGet package. Fast front-end development framework. Uses LESS.  Also, NuGet packages for working with the Twitter and Flickr APIs.  Bing Maps are integrated in the .NET Framework.  Visual Studio Add-Ons for better development: Productivity Power Tools 2012.  Fast deployment to Windows Azure and reliable cloud service.
  • 5. Pick Domain  Picked Domain Name! See us at: http://soma.azurewebsites.net/  Hosting in the using
  • 6. Synonyms providers analysis – complete analysis here  Thesaurus - HTTP GET request to http://thesaurus.altervista.org/thesaurus/v1  Parameters: word, language, application key, response type  Request example: http://thesaurus.altervista.org/thesaurus/v1?word=finish%20line&language=en_US&key=u8JKaOitVKHOahvUs&output=xml  Response: <response> <list> <category>(noun)</category> <synonyms>finishing line|line|finish|destination|goal</synonyms> </list> </response>  Pros:  Provides pretty accurate synonyms  The results don't require heavy processing  One synonym list for each definition (synset) of a word -> limit searches to the most relevant ones (or the most likely to be relevant) -> only consider the main and most common synset.
  • 7. Synonyms providers analisys  The Synonyms API from STANDS4 - offers a web API for retrieving synonyms, thesaurus information and antonyms of a given word.  Parameters: API user id, developer token id, word  Request example: http://www.stands4.com/services/v2/syno.php?uid=1001&tokenid=tk324324&word=doctor  Response <results> <result> <term>doctor, doc, physician, MD, Dr., medico</term> <definition>a licensed medical practitioner</definition> <example>"I felt so bad I went to see my doctor"</example> <partofspeech>noun</partofspeech> <synonyms>doc, medico, doctor, physician, mendelevium, medical student</synonyms> <antonyms/> </result> [...] </results>  More information:  Less accurate synonyms  The most widely used synset is given as the first result
  • 8. REST API – complete documentation here  Created a REST API for SoMa that includes hypermedia controls.  Exposing 2 main resources:  /websites - Resource representing all the websites supported by the SoMa application. For the moment, we decided on Twitter and Flickr. If the time allows it, we will also support Vimeo.  /resources - Generic name for all content downloaded from the supported websites: posts, tweets, pictures, videos, etc.  API Key required in order to prove the authenticity of the requests and to limit their number. This should protect the application from attacks like Denial of Service.  To get all the available websites supported by the application a GET Request can be made to the /websites resource.
  • 9. REST API  GET request to: /websites?key={INSERT_YOUR_KEY} => Response: [{ "Name":"Flickr", "Links": [{ "Rel":"linkrels/websites/query_by_tag", "Uri":"/websites/flickr" }]}, { "Name":"Twitter", "Links": [{ "Rel":"linkrels/websites/query_by_tag", "Uri":"/websites/twitter" }] }]
  • 10. REST API  To query, for example, new photos a POST request can be made to /websites/flickr that contains in the POST body one or more of the following parameters: Name tag max_no_entries key use_synonyms ignore_previous Definition The tag you want to search for. For example: cat. The maximum number of the entries from the response. A valid API Key is needed in order to use the REST API. The API implicitly make use of synonyms but if it is wanted this can be disabled by using the parameter with the ‘false’ value like: use_synonyms=false The API implicitly uses previous search results (if they exists) to provide faster access to resources. If the ignore_previous parameter is used with the value ‘true’ the previous stored content (if it exists) will be deleted and a new search will be made for the provided tags.  The user has also the possibility to make a DELETE request in order to remove from the cache the information stored for a specific tag.
  • 11. REST API To retrieve, for example, the photos associated with a tag a GET request can be made to: /resources/photos/{tag}?key={INSERT_YOUR_KEY}. Possible result: [{ "PhotoName":"BlackCat.jpg", "Id":"f9299cb7d7a9b9c3f57b83461c541a24", "Url":"http://www.flickr.com/photos/doug88888/5717852049", "Website":"flickr", "Links": [{ "Rel":"linkrels/resources/photos/get", "Uri":"/resources/photos/cat/f9299cb7d7a9b9c3f57b83461c541a24" }] }, { "PhotoName":"Cat.jpg", "Id":"f2fb87bbad9d093c5a631b548be70c8f", "Url":"http://www.flickr.com/photos/ronanmccormick/9837068194", "Website":"flickr", "Links": [{ "Rel":"linkrels/resources/photos/get", "Uri":"/resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f" }] }]
  • 12. REST API  The user has also the possibility to request an individual resource using the tag and the id of that resource. For example, using the URL provided in the previous response he can request more information by making a GET request to: /resources/photos/cat/f2fb87bbad9d093c5a631b548be70c8f?key={INSERT_YO UR_KEY}. The response may be: { "PhotoName":"Cat.jpg", "Id":"f2fb87bbad9d093c5a631b548be70c8f", "Url":"http://www.flickr.com/photos/ronanmccormick/9837068194", "Website":"flickr", "Author":"Ronan McCormick“ }
  • 13. Architecture & Design – complete documentation here  Application created using the concept API First. The front-end makes use of the REST API in order to complete user requests.  Resource Models - general (Resource) and specific classes (PhotoResource, MessageResource) stored in specific repositories (MessagesRepository, PhotosRepository). Resources are stored organized after their tag and id.  The retrieved information is Cache persistent. In order to save cache space the photo content is not downloaded but only referenced by Url inside the resource model. The content will be downloaded and displayed on Bing Maps at the load time of the information on the page.  Repositories for storing resources:  Repository: abstract class that contains the cache keys used in identifying the stored information for the application;  MessageRepository: stores the information regarding the messages obtained from Twitter;  PhotosRepository: stores the information regarding the photos obtained from Flickr;
  • 14. Architecture & Design  SynonymsProvider – supports the interaction between the application and the service used for obtaining synonyms;  FlickrSearch – Supports the interaction between the application and the Flickr service;  TwitterSearch – Supports the interaction between the application and the Twitter service;  WebsitesController – Provides access to the /websites resource representing the resources stored by the application.  FlickrController – Processes the POST requests sent using the /websites/flickr endpoint of the REST API.  TwitterController – Processes the POST requests sent using the /websites/twitter endpoint of the REST API.
  • 15. Architecture & Design  ResourcesController – Provides access to the /resources endpoint representing the resources stored by the application.  PhotosController – Processes GET and DELETE requests sent using the /resources/photos endpoint of the REST API.  MessagesController – Processes GET and DELETE requests sent using the /resources/messages endpoint of the REST API.  The Class Diagram for the soma Project can be found here.  A Sequence Diagram representing a request being made with a specific tag for receiving messages from Twitter can be found here.  The complete documentation of SoMa’s Architecture & Design that also contains microdata can be found here.
  • 16. Prototype  A demo is up and running at : http://soma.azurewebsites.net/  Any of the following requests can be tried:  Retrieve supported websites: http://soma.azurewebsites.net/api/websites?key=lro2e32  Retrieve resources types: http://soma.azurewebsites.net/api/resources?key=lro2e32  Retrieve photos for the ‘cat’ tag: http://soma.azurewebsites.net/api/resources/photos/cat?key=lro2e32
  • 17. MidTerm Evaluation  Blog available at: http://wadesoma.wordpress.com/  SoMa website: http://soma.azurewebsites.net/  Source Code available at: https://wadesoma.codeplex.com/  Documentation available at: http://students.info.uaic.ro/~irina.grosu/soma/