Получение данных Jira тикета по Atlassian API
Получение данных Jira тикета по Atlassian API
Для получения данных по Jira тикету достаточно воспользоваться Atlassian REST API
curl -D- \ -X GET \ -H "Authorization: Basic <base64 encoded stuff>“ \ -H "Content-Type: application/json" \ "https://yourcompany.atlassian.net/rest/api/2/issue/TICKET-NUMBER"
В качестве токена авторизации можно (но не рекомендуется) воспользоваться base64 представлением вашего пароля:
echo -n '[email protected]:your-password' | openssl base64
Шаблон Golang table testing
Шаблон Golang table testing
Допустим у нас имеется некая функция:
NormalizeEndpoint(endpointBefore string) string
Подготовим тесты на эту функцию:
func TestNormalizeEndpoints(t *testing.T) {
type runnerTest struct {
name string
endpointBefore string
endpointAfter string
}
var tests = []runnerTest{
{"Test 1", "https://case1.com", "case1"},
{"Test 2", "https://case2.com", "case2"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert.Equal(t, tt.endpointAfter, NormalizeEndpoint(tt.endpointBefore))
})
}
}
При помощи нехитрой конструкции можно написать неплохие table тесты, которые легко обновлять и добавлять новые кейсы.
Golang — Squirrel SQL Query Generator
Golang — Squirrel SQL Query Generator
Пример удобной библиотеки для генерации SQL кода в Golang. Нет необходимости писать большие и сложные sprintf и делать экранирование вручную. Просто воспользуемся удобными синтаксисом библиотеки squirrel.
Для начала:
import "github.com/Masterminds/squirrel"
Теперь допустим нам нужно добавить новую запись в нашу postgres табличку.
Для начала важно указать корректный placholder формат, без этого Postgres будет выдавать ошибку на сгенерированный SQL:
Скрипт корректировки курсов Bestchange
Скрипт корректировки курсов Bestchange
Разработан и выведен в отдельно существующий компонент специальный скрипт для автокорректировки курсов для агрегатора bestchange. Данный продукт просто необходим для обменных пунктов, которые работают через bestchange.ru и которые хотят быть постоянно в топе по определенным направлениям.
Какие параметры можно регулировать?
- Установка минимального-максимального курса.
- Использование коррекции при установке курса +/-.
- Установка курса в зависимости от резервов конкурента.
- Задание интервал обновления курсов.
- Установка «рабочих часов» для корректировки.
Данный модуль может поставляться как компонент внутри обменного пункта через специальное внутреннее API либо как отдельно стоящий сервис в вашей сети либо через облачное решение. Для внедрения в действующий обменный пункт достаточно настроить сам модуль и добавить специальный адрес для получения сигналов от модуля.
Получить реальный IP адрес клиента с Cloudflare в PHP
Получить реальный IP адрес клиента с Cloudflare в PHP
При использовании сервиса Cloudflare стоит вопрос получения реального IP адреса клиента. Специально для этого Cloudflare отдает заголовок HTTP_CF_CONNECTING_IP.
Нам достаточно его забрать в любом виде (через библиотеку желательно, а не через суперглобальную переменную т.к суперглобальные переменные в PHP это всегда зло):
$ipAddress = $_SERVER['HTTP_CF_CONNECTING_IP']; echo $ipAddress;
PHP скрипт загрузки папки с файлами на S3 bucket
PHP скрипт загрузки папки с файлами на S3 bucket
Очень простой и эффективный метод отправить все необходимые файлы с выбранной папки на ваш S3.
Устанавливаем aws-sdk-php:
composer require "aws/aws-sdk-php"
Готовим скрипт:
#!/usr/bin/env php
<?php
use Aws\S3\S3Client;
require __DIR__.'/vendor/autoload.php';
if ($_SERVER['argc']<2){
print 'Expected dir as parameter: run.php /dir/to/sync'.PHP_EOL;
exit(1);
}
$dir = $_SERVER['argv'][1];
$s3Client = new S3Client([
'version' => 'latest',
'region' => '',
'endpoint' => '',
'credentials' => [
'key' => '',
'secret' => '',
],
]);
$s3Client->uploadDirectory($dir,'bucket/folder');
Очень просто запускаем:
Production ready Dockerfile для Go приложения
Production ready Dockerfile для Go приложения
Ничего лишнего, только пример хорошего Dockerfile для Go приложения при помощи multi-stage build:
FROM golang:1-alpine AS builder RUN mkdir /app WORKDIR /app # be sure that you have .dockerignore in your directory COPY . ./ # maybe you don't need it? depends on what you have on your Makefile: RUN apk add --update bash make git RUN make # --- FROM alpine COPY --from=builder /reporter/out/mobproxy-report / RUN apk add --no-cache ca-certificates ENTRYPOINT ["/app"] # keep it if needed: CMD ["/app", "version"]
В следующем сниппете покажу пример Makefile для production ready Golang приложения.
Golang пример unmarshal json в map
Golang пример unmarshal json в map
req, _ := http.NewRequest(http.MethodGet, "https://api.example.com/messages", nil)
resp,_ := httpClient.Do(req)
bodyBytes, err := ioutil.ReadAll(resp.Body)
var data map[string]interface{}
err = json.Unmarshal(bodyBytes, &data)
if err != nil {
log.Fatal(err)
}
logs := data["messages"]
for _, log := range logs.([]interface{}) {
log = log.(map[string]interface{})["message"]
httpHost := log.(map[string]interface{})["http_host"]
httpStatusCode := log.(map[string]interface{})["http_response_code"].(float64)
endpoint := new(Endpoint)
endpoint.Url = httpHost.(string)
endpoint.StatusCode = int(httpStatusCode)
fmt.Println("Endpoint", endpoint.Url, endpoint.StatusCode)
}
Данный снипет показывает пример работы с json структурой типа:
Golang пример http клиента с Basic авторизацией
Golang пример http клиента с Basic авторизацией
Пример использования стандартного http клиента для проведения GET запросов с Basic авторизацией:
basicAuth := "Basic " + basicAuth("user", "password")
var netClient = &http.Client{
Timeout: time.Second * 10,
}
url := "/some-endpoint"
req, err := http.NewRequest("GET", url, nil)
if err != nil {
log.Fatal(err)
}
req.Header.Add("Authorization", basicAuth)
resp, err := netClient.Do(req)
defer resp.Body.Close()
if resp.StatusCode == http.StatusOK {
bodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
bodyString := string(bodyBytes)
log.Println(bodyString)
}
Отправка в логи Graylog из консоли
Отправка в логи Graylog из консоли
Полезная команда для отправки по UDP логов в ваш сервер логов (на примере Graylog сервера):
echo '{"version": "1.1","host":"example.org","short_message":"A short message that helps you identify what is going on","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}' | gzip | nc -u -w 1 graylog-input.yourserver.com 12201