Skip to content

okmeter/fcgi_client

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go fastcgi client with fcgi params support

Build Status GoDoc

Examples

simple get request

    func main() {
        reqParams := "name=value"

        env := make(map[string]string)
        env["SCRIPT_FILENAME"] = "/home/www/test.php"
        env["SERVER_SOFTWARE"] = "go / fcgiclient "
        env["REMOTE_ADDR"] = "127.0.0.1"
        env["QUERY_STRING"] = reqParams

        fcgi, err := fcgiclient.Dial("unix", "/tmp/php-fpm.sock")
        if err != nil {
                log.Println("err:", err)
        }

        resp, err := fcgi.Get(env)
        if err != nil {
                log.Println("err:", err)
        }

        content, err = ioutil.ReadAll(resp.Body)
        if err != nil {
                log.Println("err:", err)
        }
        log.Println("content:", string(content))
    }

or post form data

    func main() {

        env := make(map[string]string)
        env["SCRIPT_FILENAME"] = "/home/www/test.php"

        fcgi, err := fcgiclient.Dial("unix", "/tmp/php-fpm.sock")
        if err != nil {
                log.Println("err:", err)
        }

        resp, err := fcgi.PostForm(env, url.Values{"foo": {"bar"}})
        if err != nil {
                log.Println("err:", err)
        }

        content, err = ioutil.ReadAll(resp.Body)
        if err != nil {
                log.Println("err:", err)
        }
        log.Println("content:", string(content))
    }

or send file

    func main() {

        env := make(map[string]string)
        env["SCRIPT_FILENAME"] = "/home/www/test.php"

        fcgi, err := fcgiclient.Dial("unix", "/tmp/php-fpm.sock")
        if err != nil {
                log.Println("err:", err)
        }

        resp, err := fcgi.PostFile(env, url.Values{"foo": {"bar"}}, map[string]string{"file1":"/path/to/file1"})
        if err != nil {
                log.Println("err:", err)
        }

        content, err = ioutil.ReadAll(resp.Body)
        if err != nil {
                log.Println("err:", err)
        }
        log.Println("content:", string(content))
    }

More examples can be found in fcgiclient_test.go

Functions

func Dial

func Dial(network, address string) (fcgi *FCGIClient, err error)

Connects to the fcgi responder at the specified network address. See func net.Dial for a description of the network and address parameters.

func DialTimeout

func DialTimeout(network, address string, timeout time.Duration) (fcgi *FCGIClient, err error)

Connects to the fcgi responder at the specified network address with timeout. See func net.DialTimeout for a description of the network, address and timeout parameters.

func NewClient

func NewClient(conn net.Conn) (fcgi *FCGIClient)

Creates FCGIClient from existing connection. It is useful when you need to use custom dialer.

func (*FCGIClient) Get

func (this *FCGIClient) Get(p map[string]string) (resp *http.Response, err error)

Get issues a GET request to the fcgi responder.

func (*FCGIClient) Post

func (this *FCGIClient) Post(p map[string]string, bodyType string,
                             body io.Reader, l int) (resp *http.Response, err error)

Get issues a Post request to the fcgi responder. with request body in the format that bodyType specified

func (*FCGIClient) PostFile

func (this *FCGIClient) PostFile(p map[string]string, data url.Values,
                                 file map[string]string) (resp *http.Response, err error)

PostFile issues a POST to the fcgi responder in multipart(RFC 2046) standard, with form as a string key to a list values (url.Values), and/or with file as a string key to a list file path.

func (*FCGIClient) PostForm

func (this *FCGIClient) PostForm(p map[string]string,
                                 data url.Values) (resp *http.Response, err error)

PostForm issues a POST to the fcgi responder, with form as a string key to a list values (url.Values)

func (*FCGIClient) Request

func (this *FCGIClient) Do(p map[string]string, req io.Reader) (r io.Reader, err error)

Request returns a HTTP Response with Header and Body from fcgi responder

func (*FCGIClient) Do

func (this *FCGIClient) Request(p map[string]string,
                                     req io.Reader) (resp *http.Response, err error)

Do made the request and returns a io.Reader that translates the data read from fcgi responder out of fcgi packet before returning it.

func (*FCGIClient) Close

func (this *FCGIClient) Close()

Close fcgi connnection

About

go fastcgi client with fcgi params support

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 89.4%
  • PHP 10.6%