Skip to content
13 changes: 13 additions & 0 deletions harbour/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
api.ini
*.c
*.obj
*.map
*.exe
*.bat
*.log
*.ppo
*.dbf
*.dbt
*.ntx
*.xbp
xbuild.windows.ini
30 changes: 30 additions & 0 deletions harbour/README.md
Original file line number Diff line number Diff line change
@@ -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*
3 changes: 3 additions & 0 deletions harbour/api.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[AUTH]
APP_KEY = suakey
APP_SECRET = suasecret
56 changes: 56 additions & 0 deletions harbour/api.prg
Original file line number Diff line number Diff line change
@@ -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