protected override void Handle(CreateOffer request) { var offerObj = JsonConvert.DeserializeObject <Offer>(JsonConvert.SerializeObject(request)); offerObj._id = Guid.NewGuid().ToString(); offerObj.CqrsType = Cqrs.Query; offerObj.ListProduct.ToList().ForEach(x => { x.Guid = Guid.NewGuid().ToString(); }); if (offerObj.EffectiveStartDate < offerObj.EffectiveEndDate) { var dbOffers = new CouchClient(Couch.EndPoint).GetDatabaseAsync(Couch.DBOffers).Result; var dbUsers = new CouchClient(Couch.EndPoint).GetDatabaseAsync(Couch.DBUsers).Result; var dbUser = new CouchClient(Couch.EndPoint).GetDatabaseAsync(request.DbName).Result; var userObj = JsonConvert.DeserializeObject <User>( dbUser.GetAsync("org.couchdb.user:"******"location", SelectorOperator.Equals, userObj.Location)) .Result.Docs.ToObject <List <User> >(); if (users.Any()) { foreach (var user in users) { if (!user.Email.Equals(userObj.Email, StringComparison.InvariantCultureIgnoreCase)) { dbUser = new CouchClient(Couch.EndPoint).GetDatabaseAsync(user.DbName).Result; dbUser.ForceUpdateAsync(JToken.FromObject(offerObj)); } } } } } }
protected override void Handle(RequestCoupon request) { var dbOffers = new CouchClient(Couch.EndPoint).GetDatabaseAsync(Couch.DBOffers).Result; var jTOffer = dbOffers.GetAsync(request.IdOffer).Result.Json; var offer = jTOffer.ToObject <Offer>(); if (offer._id != null) { offer.ListProduct.Where(x => x.Guid.Equals(request.GuidProduct)).ToList().ForEach(x => { if (x.IsCoupon && x.AmountCoupon > 0) { x.ListUserCoupon.Add(new UserCoupon { UserEmail = request.UserEmail }); } }); var offerToken = JToken.FromObject(offer); offerToken["_rev"] = jTOffer["_rev"].ToString(); UpdateWithMergeConflicts(offerToken, dbOffers); var userDB_ = new CouchClient(Couch.EndPoint).GetDatabaseAsync(request.DbName).Result; userDB_.ForceUpdateAsync(JToken.FromObject(offer)); var dbUsers = new CouchClient(Couch.EndPoint).GetDatabaseAsync(Couch.DBUsers).Result; var users = dbUsers.SelectAsync(new FindBuilder().Selector("location", SelectorOperator.Equals, offer.Location)) .Result.Docs.ToObject <List <User> >(); foreach (var user in users) { if (!user.Email.Equals(request.UserEmail, StringComparison.InvariantCultureIgnoreCase)) { userDB_ = new CouchClient(Couch.EndPoint).GetDatabaseAsync(user.DbName).Result; userDB_.ForceUpdateAsync(JToken.FromObject(offer)); } } } }
protected override HttpStatusCode Handle(CreateUser request) { var dbUsers = new CouchClient(Couch.EndPoint).GetDatabaseAsync(Couch.DBUsers).Result; var user = JsonConvert.DeserializeObject <User>(dbUsers.GetAsync(request._id).Result.Content); if (user._id == null) { var userObj = JsonConvert.DeserializeObject <User>(JsonConvert.SerializeObject(request)); userObj.CqrsType = Cqrs.Query; userObj.DbName = $"userdb-{userObj.Email.StringToHex()}"; userObj.Roles = new string[] { }; userObj.Type = "user"; var result = dbUsers.UpdateAsync(JToken.FromObject(userObj)).Result; if (result.StatusCode == HttpStatusCode.Created) { var dbOffers = new CouchClient(Couch.EndPoint).GetDatabaseAsync(Couch.DBOffers).Result; var offers = dbOffers.SelectAsync(new FindBuilder().Selector("location", SelectorOperator.Equals, userObj.Location)) .Result.Docs.ToObject <List <Offer> >(); var dbUser = new CouchClient(Couch.EndPoint).GetDatabaseAsync(userObj.DbName).Result; dbUser.ForceUpdateAsync(JToken.FromObject(userObj)); if (offers.Any()) { dbUser.BulkInsertAsync(offers.ToArray()); } } return(result.StatusCode); } else { return(HttpStatusCode.NotFound); } }
protected override HttpStatusCode Handle(GoogleSearch request) { var _engine = Python.CreateEngine(); var searchPaths = _engine.GetSearchPaths(); searchPaths.Add(@"C:\IronPython\Lib"); //searchPaths.Add(@"C:\Python27\Lib"); searchPaths.Add(@"C:\Python27\Lib\site-packages"); _engine.SetSearchPaths(searchPaths); var _scope = _engine.CreateScope(); List pythonResult = null; pythonResult = _engine.Execute( $@"from bs4 import BeautifulSoup import requests import re import urllib2 import os import argparse import sys import json import ssl from sys import argv # adapted from http://stackoverflow.com/questions/20716842/python-download-images-from-google-image-search def get_soup(url,header): return BeautifulSoup(urllib2.urlopen(urllib2.Request(url,headers=header), context=ssl._create_unverified_context()),'html.parser') def main(args): parser = argparse.ArgumentParser(description='Scrape Google images') parser.add_argument('-s', '--search', default='{request.Search}', type=str, help='search term') args = parser.parse_args() query = args.search#raw_input(args.search) image_type='Action' query= query.split() query='+'.join(query) url= 'https://www.google.com/search?q='+query+'&source=lnms&tbm=isch' header={{ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36'}} try: soup = get_soup(url, header) except urllib2.URLError, e: print e.reason print e.args ActualImages =[]# contains the link for Large original images, type of image for a in soup.find_all('div',{{ 'class':'rg_meta'}}): link , Type =json.loads(a.text)['ou'] ,json.loads(a.text)['ity'] ActualImages.append((link, Type)) return ActualImages main(argv) ", _scope); var listLinkType = new List <Tuple <string, string> >(); foreach (PythonTuple element in pythonResult) { listLinkType.Add(new Tuple <string, string>(element.First().ToString(), element.Last().ToString())); } var list = listLinkType.Select(x => x.Item1).Take(5); var dbUser = new CouchClient(Couch.EndPoint).GetDatabaseAsync(request.DbName).Result; var googleSearchImg = dbUser.GetAsync("googleSearchImg").Result; if (googleSearchImg.StatusCode == System.Net.HttpStatusCode.OK) { var googleSearchImgObj = JsonConvert.DeserializeObject <GoogleSearchImg>(googleSearchImg.Content); googleSearchImgObj.Search = request.Search; googleSearchImgObj.ListUrlImages = list.ToArray(); var result = dbUser.ForceUpdateAsync(JToken.FromObject(googleSearchImgObj)).Result; return(result.StatusCode); } else { var googleSearchImgObj = new GoogleSearchImg(); googleSearchImgObj._id = "googleSearchImg"; googleSearchImgObj.Search = request.Search; googleSearchImgObj.DbName = request.DbName; googleSearchImgObj.CqrsType = Cqrs.Query; googleSearchImgObj.ListUrlImages = list.ToArray(); var result = dbUser.ForceUpdateAsync(JToken.FromObject(googleSearchImgObj)).Result; return(result.StatusCode); } }