Refactoring in C, currently in development
This commit is contained in:
		@ -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
									
								
							
							
						
						
									
										8
									
								
								build.sh
									
									
									
									
									
										Executable 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
									
								
							
							
						
						
									
										41
									
								
								giteaAPI.c
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										19
									
								
								giteaAPI.h
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										40
									
								
								main.c
									
									
									
									
									
										Normal 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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,3 +0,0 @@
 | 
				
			|||||||
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
 | 
					 | 
				
			||||||
	main.cpp
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
@ -1,7 +0,0 @@
 | 
				
			|||||||
#include <ncurses.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int main(int argc, char *argv[])
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	printf("Hello, World!");
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user