Unverified Commit c602ff1f authored by Yishay Mendelsohn's avatar Yishay Mendelsohn Committed by GitHub
Browse files

Merge pull request #100 from datreeio/staging

staging
parents ee670358 03da46fc
No related merge requests found
Showing with 59 additions and 17 deletions
+59 -17
......@@ -70,13 +70,13 @@ type TestCommandContext struct {
func New(ctx *TestCommandContext) *cobra.Command {
testCommand := &cobra.Command{
Use: "test",
Short: "Execute static analysis for pattern",
Long: "Execute static analysis for pattern. Input should be glob or `-` for stdin",
Use: "test <pattern>",
Short: "Execute static analysis for given <pattern>",
Long: "Execute static analysis for given <pattern>. Input should be glob or `-` for stdin",
Args: func(cmd *cobra.Command, args []string) error {
if len(args) < 1 {
errMessage := "requires at least 1 arg"
fmt.Println(errMessage)
errMessage := "Requires at least 1 arg\n"
cmd.Usage()
return fmt.Errorf(errMessage)
}
return nil
......
......@@ -2,6 +2,7 @@ package httpClient
import (
"bytes"
"compress/gzip"
"encoding/json"
"fmt"
"io"
......@@ -89,27 +90,47 @@ func (c *Client) Request(method string, resourceURI string, body interface{}, he
}
func (c *Client) createNewRequest(method string, url string, body interface{}, headers map[string]string) (*http.Request, error) {
bodyBuffer, err := c.parseBody(body)
if err != nil {
return nil, err
}
request, err := http.NewRequest(method, url, bodyBuffer)
if err != nil {
return nil, err
}
requestHeaders := c.mergeWithDefaultHeaders(headers)
c.addHeadersToRequest(request, requestHeaders)
var request *http.Request
var err error
if body != nil {
var encodedBuf bytes.Buffer
enc := json.NewEncoder(&encodedBuf)
enc.SetEscapeHTML(false)
err = enc.Encode(body)
if err != nil {
return nil, err
}
var gzippedBuf bytes.Buffer
gzipWriter := gzip.NewWriter(&gzippedBuf)
gzipWriter.Write(encodedBuf.Bytes())
if err = gzipWriter.Close(); err != nil {
return nil, err
}
request, err = http.NewRequest(method, url, &gzippedBuf)
if err != nil {
return nil, err
}
contentTypeHeader := c.getValueOfHeader(headers, "Content-Type")
if contentTypeHeader == "" {
request.Header.Set("Content-Type", defaultContentType)
} else {
request.Header.Set("Content-Type", contentTypeHeader)
}
request.Header.Set("Content-Encoding", "gzip")
} else {
request, err = http.NewRequest(method, url, nil)
if err != nil {
return nil, err
}
}
requestHeaders := c.mergeWithDefaultHeaders(headers)
c.addHeadersToRequest(request, requestHeaders)
return request, nil
}
......
package httpClient
import (
"bytes"
"compress/gzip"
"io/ioutil"
"net/http"
"net/http/httptest"
......@@ -79,6 +81,20 @@ func TestRequestWithBadUrl(t *testing.T) {
assert.NotNil(t, err)
}
func gunzipBody(body []byte) string {
buf := bytes.NewBuffer(body)
gzipReader, err := gzip.NewReader(buf)
if err != nil {
panic(err)
}
var gunzippedBuf bytes.Buffer
_, err = gunzippedBuf.ReadFrom(gzipReader)
if err != nil {
panic(err)
}
return string(gunzippedBuf.Bytes())
}
func createMockServer(t *testing.T, tc *testCase) *httptest.Server {
return httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
......@@ -86,7 +102,12 @@ func createMockServer(t *testing.T, tc *testCase) *httptest.Server {
body, _ := ioutil.ReadAll(req.Body)
assert.Equal(t, tc.expectedRequestBody, string(body))
if len(tc.expectedRequestBody) > 0 {
gunzippedBody := gunzipBody(body)
assert.Equal(t, tc.expectedRequestBody, gunzippedBody)
} else {
assert.Equal(t, tc.expectedRequestBody, string(body))
}
assert.Equal(t, tc.method, req.Method)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment