flickcurl_upload_status static *_flickr_api_upload_photo( dt_storage_flickr_params_t *p, char *fname, char *caption, char *description, gint imgid ) { flickcurl_upload_params *params = g_malloc(sizeof(flickcurl_upload_params)); flickcurl_upload_status *status; memset(params,0,sizeof(flickcurl_upload_params)); params->safety_level = 1; //Defaults to safe photos params->content_type = 1; //Defaults to photo (we don't support video!) params->title = caption; params->description = description; if (imgid) params->tags = dt_tag_get_list(imgid, ","); params->photo_file = fname; //fname should be the URI of temp file params->is_public = (int) p->public_perm; params->is_friend = (int) p->friend_perm; params->is_family = (int) p->family_perm; status = flickcurl_photos_upload_params(p->flickr_api->fc, params); if (!status) { fprintf (stderr,"[flickr] Something went wrong when uploading"); g_free (params); return NULL; } g_free(params); return status; }
int upload_photo(const char *photoset, const char *photo, const char *path) { flickcurl_upload_status* status; flickcurl_upload_params params; cached_photoset *cps; cached_photo *cp; int retval = FAIL; pthread_rwlock_wrlock(&cache_lock); cps = g_hash_table_lookup(photoset_ht, photoset); if(!cps) goto fail; if(!(cp = g_hash_table_lookup(cps->photo_ht, photo))) goto fail; memset(¶ms, '\0', sizeof(flickcurl_upload_params)); params.safety_level = 1; /* default safety */ params.content_type = 1; /* default photo */ params.photo_file = path; params.description = "Uploaded using FlickrMS"; params.title = cp->ci.name; status = flickcurl_photos_upload_params(fc, ¶ms); if(status) { if( cps->ci.dirty == DIRTY ) { // if photoset is dirty, create it char * photosetid = flickcurl_photosets_create(fc, cps->ci.name, NULL, status->photoid, NULL); if( photosetid ) { cps->ci.id = photosetid; cps->ci.dirty = CLEAN; } } else if( strcmp( cps->ci.id, "" ) ) { // if photoset has an id, add new photo to it flickcurl_photosets_addPhoto(fc, cps->ci.id, status->photoid); } flickcurl_free_upload_status(status); } cp->ci.dirty = CLEAN; cps->set = CACHE_UNSET; retval = SUCCESS; fail: pthread_rwlock_unlock(&cache_lock); return retval; }
/** * flickcurl_photos_upload: * @fc: flickcurl context * @photo_file: photo filename * @title: title or NULL * @description: description of photo (HTML) (or NULL) * @tags: space-separated list of tags (or NULL) * @is_public: is public photo boolean (non-0 true) * @is_friend: is friend photo boolean (non-0 true) * @is_family: is family photo boolean (non-0 true) * * Uploads a photo * * Implements Uploading Photos (0.10) * * See flickcurl_photos_upload_params() to set additional upload * parameters such as safety level and content type. * * @deprecated: Replaced by flickcurl_photos_upload_params() with * #flickcurl_upload_params argument. * * Return value: #flickcurl_upload_status or NULL on failure **/ flickcurl_upload_status* flickcurl_photos_upload(flickcurl* fc, const char* photo_file, const char *title, const char *description, const char *tags, int is_public, int is_friend, int is_family) { flickcurl_upload_params params; memset(¶ms, '\0', sizeof(flickcurl_upload_params)); params.photo_file = photo_file; params.title = title; params.description = description; params.tags = tags; params.is_public = is_public; params.is_friend = is_friend; params.is_family = is_family; params.safety_level= -1; params.content_type= -1; return flickcurl_photos_upload_params(fc, ¶ms); }