Git Product home page Git Product logo

geoip-service's Introduction

geoip-service

License: MIT Build Status Go Report Card

A fast Go-Micro based microservice for looking up MaxMind GeoIP2 and GeoLite2 database.

Prerequisites

Requires a go installation.

A Database (choose one):

Running the service

This service works as Go-Micro microservice. You may want to setup your own registry with MICRO_REGISTRY/MICRO_REGISTRY_ADDRESS or use other go-micro flags.

Download it

go get github.com/ProtocolONE/geoip-service

If you need it uou can rebuild proto file with protoc

protoc --proto_path=. --micro_out=. --go_out=. geoip.proto

Setup environment variable MAXMIND_GEOIP_DB_PATH with path to the maxmind database path. The path can be local file path like /application/assets/GeoLite2-City.mmdb, or it can be AWS S3 object path like s3://bucketName/GeoLite2-City.mmdb. In the latter case it is required to provide S3 access credentials with the environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.

By default service will be executed with declared by MICRO_REGISTRY registry and GRPC as a transport.

Using Docker

The docker file in this project used to launch geoip-service in Protocol One environment. You may change it in any way you need it.

Using the service

Once the service is running you can use go-micro to make requests

package main

import (
    "context"
    "fmt"
    "github.com/ProtocolONE/geoip-service/pkg"
    "github.com/ProtocolONE/geoip-service/pkg/proto"
    "github.com/micro/go-micro"
)

func main() {
    // create a new service
    service := micro.NewService()

    // parse command line flags
    service.Init()

    // Create new greeter client
    client := proto.NewGeoIpService(geoip.ServiceName, service.Client())

    // Call it
    rsp, err := client.GetIpData(context.TODO(), &proto.GeoIpDataRequest{IP: "8.8.8.8"})
    if err != nil {
        fmt.Println(err)
    }

    // Print response
    fmt.Println(rsp)
}

geoip-service's People

Contributors

atlix avatar misterion avatar pr0head avatar shersh avatar sidmal avatar snezhana-dorogova avatar vesvalo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geoip-service's Issues

Permission to ProtocolONE/geoip-service.git denied for pushing code into new bramnches.

Hi!
I used your code in my own repository and I had troubles with imports, such as:

go get github.com/micro/go-micro/server
go: github.com/micro/[email protected] requires
        github.com/micro/[email protected]: reading github.com/micro/protoc-gen-micro/go.mod at revision v1.0.0: git ls-remote -q origin in /home/slava/go/pkg/mod/cache/vcs/28cfbca4f5e41691076780b2017d5a1000b007b1d3d37b7a9d3b562c7adc9377: exit status 128:
        ERROR: Repository not found.

and the second one:

$ go get github.com/ProtocolONE/go-micro-plugins
go: github.com/ProtocolONE/[email protected] requires
        github.com/micro/[email protected] requires
        github.com/micro/[email protected]: reading github.com/micro/protoc-gen-micro/go.mod at revision v1.0.0: git ls-remote -q origin in /home/slava/go/pkg/mod/cache/vcs/28cfbca4f5e41691076780b2017d5a1000b007b1d3d37b7a9d3b562c7adc9377: exit status 128:
        ERROR: Repository not found.

If we seek the last version for library github.com/micro/go-micro it will be v1.18.0
I have already invesigated your files and I found https://github.com/ProtocolONE/go-micro-plugins/blob/b057e5c5b0a404b70ba8c4c7fe9698d445e47b8a/go.sum#L257C1-L257C96

This version of library doesn`t exist enymore. So we need to update go.mod of you project.

I did it in new branch update, but I don`t have permissions for creating new branches on your repository.

git push origin update
ERROR: Permission to ProtocolONE/geoip-service.git denied to lithium555.

So, give me please permissions for creating new branches or update you repository by yourself.

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.