diff --git a/harbour/.gitignore b/harbour/.gitignore new file mode 100644 index 0000000..e43e4cc --- /dev/null +++ b/harbour/.gitignore @@ -0,0 +1,13 @@ +api.ini +*.c +*.obj +*.map +*.exe +*.bat +*.log +*.ppo +*.dbf +*.dbt +*.ntx +*.xbp +xbuild.windows.ini \ No newline at end of file diff --git a/harbour/README.md b/harbour/README.md new file mode 100644 index 0000000..36795e5 --- /dev/null +++ b/harbour/README.md @@ -0,0 +1,30 @@ +# Acessando a API utilizando Harbour + +Para realizar uma requisição na API, utilize a função **"API_Omie"** + +Altere os parâmetros **APP_KEY** e **APP_SECRET** dentro do arquivo api.ini conforme as credenciais do seu aplicativo na Omie. +[http://docs.omie.com.br/m/20204/l/612759-obtendo-a-chave-de-acesso-para-integracoes-de-api](http://docs.omie.com.br/m/20204/l/612759-obtendo-a-chave-de-acesso-para-integracoes-de-api) + +## Parâmetros da Função: + +**cEndpointURI :** + - *Tipo:* Caracter (String) + - *Esperado:* Url do Endpoint da API Omie + - *Obrigatório*: Sim + +**cMetodo :** + - *Tipo:* Caracter (String) + - *Esperado:* Método da API Omie + - *Obrigatório*: Sim + +**hParams :** + - *Tipo:* Hash + - *Esperado:* Parâmetros da Requisição + - *Obrigatório*: Sim + +## Retorno da Função + - *Tipo:* Array + - *Esperado:* + - - \[1\] : *Tipo:* Lógico | *Houve Erro:* .T. ou .F. + - - \[2\] : *Tipo:* Hash | *Conteúdo retornado na resposta JSON* + - - \[3\] : *Tipo:* Caracter | *Conteúdo retornado no Body da resposta* diff --git a/harbour/api.ini b/harbour/api.ini new file mode 100644 index 0000000..4fb1d18 --- /dev/null +++ b/harbour/api.ini @@ -0,0 +1,3 @@ +[AUTH] +APP_KEY = suakey +APP_SECRET = suasecret diff --git a/harbour/api.prg b/harbour/api.prg new file mode 100644 index 0000000..2b617e3 --- /dev/null +++ b/harbour/api.prg @@ -0,0 +1,56 @@ +FUNCTION main + LOCAL hParams := {=>} + LOCAL hResult := {=>} + + //Parametros que serão enviados + hParams['pagina'] := 1 + hParams['registros_por_pagina'] = 50 + + //Exemplo de chamada para listar cidades + hResult := API_Omie("https://app.omie.com.br/api/v1/geral/cidades/", ; + "PesquisarCidades", ; + hParams) + + ? ValToPrg(hResult) +RETURN NIL + + +/* Comunica com a API da Omie*/ +FUNCTION API_Omie + PARAM cEndpointURI, cMetodo, hParams + LOCAL hIniData := HB_ReadIni( "api.ini" ) + LOCAL cKey := AllTrim(hIniData["AUTH"]["APP_KEY"]) + LOCAL cSecret := AllTrim(hIniData["AUTH"]["APP_SECRET"]) + LOCAL hResult := {=>} + LOCAL cJson + + TRY + oHttp := CreateObject("MSXML2.ServerXMLHTTP.6.0") + CATCH + ? "Não foi possível iniciar o objeto MSXML" + QUIT + END + + cJson := '{' + ; + '"call": "' + cMetodo + '",' + ; + '"app_key": "' + cKey + '",' + ; + '"app_secret": "' + cSecret + '",' + ; + '"param": [' + hb_jsonEncode(hParams) + ']' + ; + '}' + + oHttp:Open("POST", cEndpointURI, .F.) + oHttp:SetRequestHeader("Content-Type", "application/json") + oHttp:Send(cJson) + + cResponse := oHttp:ResponseText + + IF oHttp:ReadyState = 4 .AND. oHttp:Status = 200 + hResult[1] := .F. + hResult[2] := hb_jsonDecode(cResponse) + hResult[3] := cResponse + ELSE + hResult[1] := .T. + hResult[2] := "{}" + hResult[3] := cResponse + ENDIF +RETURN hResult \ No newline at end of file