blob: ac3a336c5c590a0c6d25599dba690b9db107196b [file] [log] [blame]
/*
* Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef HTTP_CALLER_H
#define HTTP_CALLER_H
#include <stdbool.h>
#include <stdint.h>
#include "rpc_caller.h"
#ifdef __cplusplus
extern "C" {
#endif
#define HTTP_CALLER_MAX_URL_LEN (2048)
/*
* An RPC caller that makes call requests via a REST API 'call' endpoint
* that provides a generic way to call trusted service operations via HTTP.
* The fw-test-api supports a call endpoint with the path:
* /services/{servicename}/call/{opcode}. A call request body carries the
* rpc header defined in protocols/rpc/common/packed-c.header.h, followed by
* serialized call parameters. A call response body carries the response header
* defined in the same file, followed by any serialized response parameters.
*/
struct http_caller {
struct rpc_caller rpc_caller;
char rpc_call_url[HTTP_CALLER_MAX_URL_LEN];
size_t req_body_size;
uint8_t *req_body_buf;
uint8_t *resp_body_buf;
};
struct rpc_caller *http_caller_init(struct http_caller *s);
void http_caller_deinit(struct http_caller *s);
bool http_caller_probe(const char *url, long *http_code);
int http_caller_open(struct http_caller *s, const char *rpc_call_url);
int http_caller_close(struct http_caller *s);
#ifdef __cplusplus
}
#endif
#endif /* HTTP_CALLER_H */