Code Monkey home page Code Monkey logo

seo-metrick-parser's Introduction

Example project

Build API server:

# Clone the repo
git clone https://github.com/crxfoz/seo-metrick-parser.git
make run-server

# or manually

# Build binaries
make build-linux
# or build via docker container
make build-docker

# Create container
docker-compose build
# Start container
docker-compose up

Build worker:

If you would like to run api server and worker at the same host use: make run. Otherwise you have to setup worker.env file or setup a network between containers.

git clone https://github.com/crxfoz/seo-metrick-parser.git

make build-linux
# or
make build-docker

cd ./deployment
docker build -t "worker" -f Dockerfile.worker .
docker run --env-file worker.env worker

Also don't forget to put yours ApiKeys in ./deployment/keys.env.

# keys.env
MOZ_ACCESSID=member-de5df321
MOZ_SECRET_KEY=4532ea1ffd56e0200aabab8ad90ec21

Add custom parser

  • Go to parsers/repository.
  • Create a new Go-file parsers/repository/awesome_metrick.go
  • Creaty a new function or method that match the prototype func(*webclient.Webclient, string) (interface{}, error)
package repository
func GetAwesomeMetrick(client *webclient.Webclient, site string) (interface{}, error) {
	type AwesomeMetrickResult struct {
		Param1 string `json:"param_1"`
		Param2 string `json:"param_2"`
	}
	
	var result AwesomeMetrickResult
	
	return result, nil 
}

New type

package repository
type AwesomeMetrickParser struct {
    ApiKey string
}

func (a *AwesomeMetrickParser) GetAwesomeMetrick(client *webclient.Webclient, site string) (interface{}, error) {
	
	// api request to get data using a.ApiKey
	
	type AwesomeMetrickResult struct {
		Param1 string `json:"param_1"`
		Param2 string `json:"param_2"`
	}
	
	var result AwesomeMetrickResult
	
	return result, nil 
}
  • Register new parser.
    Edit parsers/list.go
func init() {
	ParsersList = []Parser{
		// ...
		{
			Name:        "Awesome",
			Description: "Get awesome metrick",
			ParserFn:    repository.GetAwesomeMetrick,
			Timeout:     time.Second * 5,
			Status:      true,
		},
	}
}
func init() {
	awesome := &AwesomeMetrickParser{ApiKey: os.Getenv("AWESOME_SERVICE_APIKEY")}
	
	ParsersList = []Parser{
		// ...
		{
			Name:        "Awesome",
			Description: "Get awesome metrick",
			ParserFn:    awesome.GetAwesomeMetrick,
			Timeout:     time.Second * 5,
			Status:      true,
		},
	}
}

Run tests

# Start test env
docker run --rm -p 5432:5432 -d --name seo_parser_postgres_test -e POSTGRES_DB=seo_parser_test postgres
docker run --rm -p 6379:6379 -d --name seo_parser_redis_test redis

# Import scheme
usql -f ./deployment/scheme.sql "pg://postgres@localhost:5432/seo_parser_test?sslmode=disable"

# Run tests
GOCACHE=off go test -v ./...

# Stop containers
docker stop seo_parser_postgres_test
docker stop seo_parser_redis_test

seo-metrick-parser's People

Contributors

crxfoz avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.