~ubuntu-branches/ubuntu/vivid/cairo-dock-plug-ins/vivid

« back to all changes in this revision

Viewing changes to dnd2share/src/applet-backend-imagebin.c

Tags: upstream-2.0.9
Import upstream version 2.0.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
* This file is a part of the Cairo-Dock project
 
3
*
 
4
* Copyright : (C) see the 'copyright' file.
 
5
* E-mail    : see the 'copyright' file.
 
6
*
 
7
* This program is free software; you can redistribute it and/or
 
8
* modify it under the terms of the GNU General Public License
 
9
* as published by the Free Software Foundation; either version 3
 
10
* of the License, or (at your option) any later version.
 
11
*
 
12
* This program is distributed in the hope that it will be useful,
 
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
* GNU General Public License for more details.
 
16
* You should have received a copy of the GNU General Public License
 
17
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
*/
 
19
 
 
20
#define _BSD_SOURCE
 
21
#include <stdlib.h>
 
22
#include <math.h>
 
23
#include <unistd.h>
 
24
#include <glib/gstdio.h>
 
25
#include <string.h>
 
26
 
 
27
#include "applet-struct.h"
 
28
#include "applet-dnd2share.h"
 
29
#include "applet-backend-imagebin.h"
 
30
 
 
31
#define NB_URLS 1
 
32
static const gchar *s_UrlLabels[NB_URLS] = {"DirectLink"};
 
33
 
 
34
 
 
35
static void upload (const gchar *cFilePath)
 
36
{
 
37
        // On cree un fichier de log temporaire.
 
38
        gchar *cLogFile = g_strdup ("/tmp/dnd2share-log.XXXXXX");
 
39
        int fds = mkstemp (cLogFile);
 
40
        if (fds == -1)
 
41
        {
 
42
                g_free (cLogFile);
 
43
                return ;
 
44
        }
 
45
        close(fds);
 
46
        
 
47
        // On lance la commande d'upload.
 
48
        gchar *cCommand = g_strdup_printf ("curl --connect-timeout 5 --retry 2 --limit-rate %dk http://imagebin.ca/upload.php -F f=@'%s' -F t=file -o '%s'", myConfig.iLimitRate, cFilePath, cLogFile);
 
49
        g_print ("%s\n", cCommand);
 
50
        int r = system (cCommand);
 
51
        g_free (cCommand);
 
52
        
 
53
        // On récupère l'URL dans le log :
 
54
        gchar *cURL = NULL;
 
55
        gchar *cContent = NULL;
 
56
        gsize length = 0;
 
57
        g_file_get_contents (cLogFile, &cContent, &length, NULL);
 
58
        gchar *str = g_strstr_len (cContent, -1, "href='");
 
59
        if (str != NULL)
 
60
        {
 
61
                str += 6;
 
62
                gchar *end = strchr (str, '\'');
 
63
                if (end != NULL)
 
64
                {
 
65
                        *end = '\0';
 
66
                        cURL = g_strdup (str);
 
67
                }
 
68
        }
 
69
        g_free (cContent);
 
70
        
 
71
        g_remove (cLogFile);
 
72
        g_free (cLogFile);
 
73
        
 
74
        if (cURL == NULL)
 
75
        {
 
76
                return ;
 
77
        }
 
78
        
 
79
        // Enfin on remplit la memoire partagee avec nos URLs.
 
80
        myData.cResultUrls = g_new0 (gchar *, NB_URLS+1);
 
81
        myData.cResultUrls[0] = cURL;
 
82
}
 
83
 
 
84
 
 
85
void cd_dnd2share_register_imagebin_backend (void)
 
86
{
 
87
        cd_dnd2share_register_new_backend (CD_TYPE_IMAGE,
 
88
                "imagebin.ca",
 
89
                NB_URLS,
 
90
                s_UrlLabels,
 
91
                0,
 
92
                upload);
 
93
}