Refactoring in C, currently in development

This commit is contained in:
Debucquoy Anthony 2023-06-04 12:35:42 +02:00
parent 9733003e9e
commit e3508eee23
7 changed files with 108 additions and 22 deletions

View File

@ -1,12 +0,0 @@
cmake_minimum_required(VERSION 3.15)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED On)
set(CMAKE_EXPORT_COMPILE_COMMANDS On)
project(teaui)
add_executable(teaui)
add_subdirectory(src)

8
build.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
set -xe
CFLAGS=$(pkg-config --cflags ncurses libcurl)
LIBS=$(pkg-config --libs ncurses libcurl)
gcc ${CFLAGS} -o main main.c giteaAPI.c ${LIBS}

41
giteaAPI.c Normal file
View File

@ -0,0 +1,41 @@
#include "giteaAPI.h"
#include <curl/curl.h>
#include <curl/easy.h>
#include <string.h>
#include <malloc.h>
SESSION teaui_gitea_session(const char *instance){
curl_global_init(0);
CURL *handle = curl_easy_init();
SESSION ret = {.handle=handle};
memcpy(ret.instance, instance, strlen(instance));
return ret;
}
void teaui_gitea_cleanup(SESSION s){
curl_global_cleanup();
curl_easy_cleanup(s.handle);
}
void teaui_gitea_auth_basic(SESSION s, const char *user, const char *pass){
curl_easy_setopt(s.handle, CURLOPT_USERNAME, user);
curl_easy_setopt(s.handle, CURLOPT_PASSWORD, pass);
}
void teaui_gitea_auth_token(SESSION s, const char *token){
char header[256] = "Authorization: ";
strcat(header, token);
curl_easy_setopt(s.handle , CURLOPT_HEADERDATA, header);
}
const char* teaui_gitea_auth_generateToken(SESSION s, const char * username){
char endpoint[1024];
strcpy(endpoint, s.instance);
strcat(endpoint, "/api/v1/users/");
strcat(endpoint, username);
strcat(endpoint, "/tokens");
curl_easy_setopt(s.handle, CURLOPT_URL, endpoint);
curl_easy_perform(s.handle);
return "";
}

19
giteaAPI.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef GITEA_API_H_
#define GITEA_API_H_
#include <curl/curl.h>
typedef struct {
CURL* handle;
char* instance;
} SESSION;
SESSION teaui_gitea_session(const char *instance);
void teaui_gitea_cleanup(SESSION s);
void teaui_gitea_auth_basic(SESSION s, const char *user, const char *pass);
void teaui_gitea_auth_token(SESSION s, const char *token);
const char* teaui_gitea_auth_generateToken(SESSION s, const char *username);
#endif /* ifndef GITEA_API_H_ */

40
main.c Normal file
View File

@ -0,0 +1,40 @@
#include <curses.h>
#include <stdio.h>
#include "giteaAPI.h"
#include <ncurses.h>
int main(void)
{
SESSION s = teaui_gitea_session("https://git.herisson.ovh");
#if 0
initscr();
start_color();
init_pair(1, COLOR_RED, COLOR_GREEN);
WINDOW* test = newwin(16, 9, 2, 2);
wattron(test, COLOR_PAIR(1));
box(test, 0, 0);
wattroff(test, COLOR_PAIR(1));
noecho();
timeout(0);
refresh();
bool should_quit = false;
while(!should_quit){
wrefresh(test);
int in = getch();
if(in != ERR){
switch (in) {
case 'a':
should_quit = true;
break;
case 'd':
wattron(test, COLOR_PAIR(1));
wprintw(test, "Hello, Dari!");
wattroff(test, COLOR_PAIR(1));
}
}
}
endwin();
#endif
}

View File

@ -1,3 +0,0 @@
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
main.cpp
)

View File

@ -1,7 +0,0 @@
#include <ncurses.h>
int main(int argc, char *argv[])
{
printf("Hello, World!");
return 0;
}