# Portuguese

### Ligação rápida com LSports - RabbitMQ

Portanto, começou a implementar os serviços LSports via RMQ, boa escolha! Vamos por a sua conexão a funcionar de uma forma simples e rápida.

Este guia tem o objetivo de dar uma melhor visão de como a equipa de Suporte da equipa LSports para resolver problemas rapidamente e com um esforço mínimo da sua parte.

**Instruções passo a passo:**\
● Primeiro, nós recomendamos usar o nosso SDK (atualmente disponível em C#, PHP ou Node) para uma implementação rápida, pode fazer do download dos ficheiros baseado na sua linguagem de programação favorita a partir daqui\
[SDK - C#](https://lsportseu-my.sharepoint.com/personal/stas_m_lsports_eu/_layouts/15/guestaccess.aspx?docid=0bd80e807559e4543b520bd0fe7f25b46\&authkey=AerSWTRZ2TMn2HyT3r9NEgE\&e=x0V82l)

O exemplo seguinte refere-se às seguintes iniciais:\
**Username: MyEmail**\
**Password: Passw0rd1234**\
**Package: 102030**\
(Pode escolher as credenciais que lhe são dadas pela LSports)

`Repare: Todos os exemplos estão em C#.`\
Caso escolha implementar o seu próprio código, irá precisar da biblioteca RMQ [aqui](https://www.rabbitmq.com/devtools.html).\
Por favor tenha em consideração que a LSports atualmente usa a versão 3.6.5.0

1. Comece por verificar de o seu pacote está ativo enviando uma chamada API como as seguintes:

**Pacote InPlay:** <https://inplay.lsports.eu/api/Package/EnablePackage?username=MyEmail&password=Passw0rd1234&packageid=102030>

**Pacote Prematch:** <https://prematch.lsports.eu/OddService/EnablePackage?username=MyEmail&password=Passw0rd1234&guid=guid-provided-by-LSports>

**Resposta:**

{% tabs %}
{% tab title="XML" %}

```xml
<xs:schema>
  <xs:element name="Message">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Header">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:short" name="HttpStatusCode"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Body">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="Message"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

{% endtab %}

{% tab title="JSON" %}

```json
{
  "type": "object",
  "properties": {
    "Header": {
      "type": "object",
      "properties": {
        "HttpStatusCode": {
          "type": "integer"
        }
      },
      "required": [
        "HttpStatusCode"
      ]
    },
    "Body": {
      "type": "object",
      "properties": {
        "Message": {
          "type": "string"
        }
      },
      "required": [
        "Message"
      ]
    }
  },
  "required": [
    "Header",
    "Body"
  ]
}
```

{% endtab %}
{% endtabs %}

Caso o pacote já tenha sido ativado então a mensagem deve conter “Value was already set”. Para qualquer outro estado ou mensagem de erro por favor verifique as suas credenciais ou contacte-nos.

2. CCrie uma ligação factory do seguinte modo:

```csharp
ConnectionFactory connectionFactory = new ConnectionFactory
```

```json
{
    HostName = "Described below",
    Port = 5672,
    UserName = "MyEmail",
    Password = "Passw0rd1234",
    AutomaticRecoveryEnabled = true,
    VirtualHost = "Customers", //Default value
    RequestedHeartbeat = 580,
    NetworkRecoveryInterval = TimeSpan.FromSeconds(1)
};
```

**RMQ HostName:**\
InPlay: **inplay-rmq.lsports.eu**\
PreMatch: **prematch-rmq.lsports.eu**

3. Crie uma ligação do seguinte modo:

```csharp
IConnection connection = _connectionFactory.CreateConnection();
```

4. Crie um modelo do seguinte modo:

```csharp
IModel model = connection.CreateModel();
```

5. Configure a qualidade de serviço:

```csharp
model.BasicQos(prefetchSize: 0, prefetchCount: 1000, global: false);
```

6. Mensagem consume:

```csharp
EventingBasicConsumer consumer = new EventingBasicConsumer(model);
consumer.Received += (sender, eventArgs) =>
{
    // Deserialize message
    // Call method to handle deserialized message
};
```

7. Começar mensagem consumo:\
   (tenha o cuidado de escrever o seu ID do pacote com sublinhados ('\_') como descrito) Por exemplo, se o ID do pacote for “102030”

```csharp
model.BasicConsume(queue: '_102030_', noAck: true, consumer: consumer)
```

* A partir daqui já deve ser capaz de criar a sua conexão RMQ e começar a receber mensagens do Batimento cardíaco.

**Requisição de uma Imagem Completa**\
Como as atualizações vindas da RMQ são apenas deltas, antes de começar a consumir mensagens vindas da LSports, pode requisitar uma imagem completa dos dados que deverá receber.\
Pode fazê-lo fazendo uma chamada API aos seguintes:

* Inplay Snapshot - Fornece os dados para todos os eventos que estão atualmente a acontecer.
* Prematch Get events - Fornece os dados para o(s)evento(s) requisitado(s).

Para uma explicação detalhada da nossa estrutura de dados, pode continuar a ler a nossa documentação.

#### Possíveis tipos de erros

**Aviso: Se a fila chegar a 10000 mensagens não lidas/unacked será automaticamente purgada e o seu pacote será desativado.**

A maioria das falhas de conexão ocorrem devido a credenciais incorretas ou pacotes inativos. Abaixo encontram-se os erros e causas mais comuns.

**"Connection failed"** - Por favor verifique os detalhes de ligação e.g. Ligação factory, anfitrião RMQ, RItualHost foram escritos corretamente\
\&#xNAN;**"Access refused"**- Por favor verifique se o seu pacote está ativo e que as credenciais de início de sessão e ID do pacote foram escritos corretamente.

**Agora tudo o que tem de fazer é, começar a requisitar os nossos dados de desporto de acordo com as suas necessidades. Para a documentação detalhada por favor siga o** [**link**](http://client.lsports.eu/OddService/Documentation) **abaixo**

**Se tiver qualquer feedback sobre o nosso documento de conexão ou se precisar de suporte, por favor contacte o nosso contacto de vendas,**\
**LSports**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lsports.eu/u/legacy-products/odds-service/other-languages/connecting-to-lsports-portuguese.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
