Exemple #1
0
        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));
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
        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));
                    }
                }
            }
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        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);
            }
        }