forked from edennz/artoolkit6-calibration
-
Notifications
You must be signed in to change notification settings - Fork 3
/
fileUploader.h
95 lines (82 loc) · 3.81 KB
/
fileUploader.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
* fileUploader.h
* artoolkitX
*
* This file is part of artoolkitX.
*
* artoolkitX is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* artoolkitX is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with artoolkitX. If not, see <http://www.gnu.org/licenses/>.
*
* As a special exception, the copyright holders of this library give you
* permission to link this library with independent modules to produce an
* executable, regardless of the license terms of these independent modules, and to
* copy and distribute the resulting executable under terms of your choice,
* provided that you also meet, for each linked independent module, the terms and
* conditions of the license of that module. An independent module is a module
* which is neither derived from nor based on this library. If you modify this
* library, you may extend this exception to your version of the library, but you
* are not obligated to do so. If you do not wish to do so, delete this exception
* statement from your version.
*
* Copyright 2018 Realmax, Inc.
* Copyright 2015-2017 Daqri LLC. All Rights Reserved.
* Copyright 2013-2015 ARToolworks, Inc. All Rights Reserved.
*
* Author(s): Philip Lamb
*/
#ifndef FILEUPLOADER_H
#define FILEUPLOADER_H
//
// HTML form and file uploader via HTTP POST.
//
// When tickled, each index file in "queueDirPath" with extension "formExtension" will be opened
// and read for form data to be uploaded to URL "formPostURL" via HTTP POST.
// The format of the index file is 1 form field per line. From the beginning of the line up to
// the first ',' character is taken as the field name. The rest of the line after the ','
// up to the end-of-line is taken as the field contents.
// A field with the name 'file' is treated differently. If such a field is found, the field
// contents are taken as the pathname to a file to be uploaded. The file will be uploaded
// under a field named 'file', with its filename (not including any other path component)
// supplied as the filename portion of the field.
//
// Uses libcURL internally.
// Don't forget to add library load calls on the Java side:
// static {
// System.loadLibrary("crypto");
// System.loadLibrary("ssl");
// System.loadLibrary("curl");
// }
//
#include <sys/time.h> // struct timeval, gettimeofday(), timeradd()
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
#define UPLOAD_STATUS_BUFFER_LEN 128
// Check for existence of queue directory, and create if not already existing.
// Returns false if directory could not be created, true otherwise.
// This needs to be done no later than before the first call to fileUploaderTickle().
bool fileUploaderCreateQueueDir(const char *queueDirPath);
typedef struct _FILE_UPLOAD_HANDLE FILE_UPLOAD_HANDLE_t;
FILE_UPLOAD_HANDLE_t *fileUploaderInit(const char *queueDirPath, const char *formExtension, const char *formPostURL, const float statusHideAfterSecs);
void fileUploaderFinal(FILE_UPLOAD_HANDLE_t **handle_p);
bool fileUploaderTickle(FILE_UPLOAD_HANDLE_t *handle);
// -1 = An error.
// 0 = no background tasks or messages.
// 1 = background task currently in progress.
// 2 = background task complete, message still to be shown.
int fileUploaderStatusGet(FILE_UPLOAD_HANDLE_t *handle, char statusBuf[UPLOAD_STATUS_BUFFER_LEN], struct timeval *currentTime_p);
#ifdef __cplusplus
}
#endif
#endif // !FILEUPLOADER_H