Hello community,
here is the log from the commit of package smugbatch for openSUSE:Factory
checked in at Thu Apr 14 09:41:13 CEST 2011.
--------
New Changes file:
--- /dev/null 2010-08-26 16:28:41.000000000 +0200
+++ /mounts/work_src_done/STABLE/smugbatch/smugbatch.changes 2010-12-11 17:33:54.000000000 +0100
@@ -0,0 +1,43 @@
+-------------------------------------------------------------------
+Sat Dec 11 16:33:27 UTC 2010 - aj@suse.de
+
+- cleanup spec file with spec-cleaner.
+
+-------------------------------------------------------------------
+Sat Dec 11 16:12:35 UTC 2010 - aj@suse.de
+
+- Support new smugmug API 1.2.2
+
+-------------------------------------------------------------------
+Fri Dec 19 12:00:00 UTC 2008 - prusnak@suse.cz
+
+- fixed build
+- added manpages
+
+-------------------------------------------------------------------
+Thu Dec 11 12:00:00 UTC 2008 - aj@suse.de
+
+- Update to version 005:
+ Ability to create the album to upload to if it is not already present
+ - many thanks to troy for this feature
+
+-------------------------------------------------------------------
+Sun Jul 27 12:00:00 UTC 2008 - aj@suse.de
+
+- Update to version 004:
+ lots of minor fixes
+
+-------------------------------------------------------------------
+Sun May 18 12:00:00 UTC 2008 - aj@suse.de
+
+- Update to version 003:
+ added ability to have a config file for password and user id
+ added smugdown, seems to work for public albums, not for private yet
+ --quiet option to all apps.
+ smugls actually works properly now.
+
+-------------------------------------------------------------------
+Thu May 01 12:00:00 UTC 2008 - aj@suse.de
+
+- Initial build version.
+
calling whatdependson for head-i586
New:
----
smugbatch-005.tar.bz2
smugbatch-api1.2.2.patch
smugbatch.changes
smugbatch.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ smugbatch.spec ++++++
#
# spec file for package smugbatch
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: smugbatch
Group: Productivity/Graphics/Other
%if 0%{?suse_version} > 1020
BuildRequires: libcurl-devel
%else
BuildRequires: curl-devel
%endif
Version: 005
Release: 1
License: GPLv2
Summary: Tools for smugmug.com
Url: http://github.com/gregkh/smugbatch/tree/master
Source: %{name}-%{version}.tar.bz2
Patch1: smugbatch-api1.2.2.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Command line tools to access smugmug.com.
Authors:
--------
Greg Kroah-Hartman
%prep
%setup -q
%patch1 -p1
%build
make V=1 CFLAGS="%{optflags}"
%install
mkdir -p %{buildroot}%{_prefix}/bin
install -m 0755 smugdown smugup smugls %{buildroot}%{_prefix}/bin
mkdir -p %{buildroot}%{_mandir}/man1
install -m 0644 smugls.1 smugup.1 %{buildroot}%{_mandir}/man1
%files
%defattr(-,root,root)
%doc RELEASE-NOTES COPYING ChangeLog
%doc %{_mandir}/man1/*.gz
%{_bindir}/smug*
%changelog
++++++ smugbatch-api1.2.2.patch ++++++
diff --git a/smug.h b/smug.h
index 37fa7b6..4f0b8c1 100644
--- a/smug.h
+++ b/smug.h
@@ -62,6 +62,7 @@ struct session {
char *password;
char *email;
char *session_id;
+ char *su_cookie;
struct list_head albums;
struct list_head files_upload;
struct list_head files_download;
@@ -126,7 +127,7 @@ extern struct album *smug_create_album(const char *album_title,
extern int smug_get_albums(struct session *session);
extern int smug_read_images(struct session *session, struct album *album);
extern void smug_parse_configfile(struct session *session);
-extern int smug_download(struct filename *filename);
+extern int smug_download(struct session *session, struct filename *filename);
extern int debug;
diff --git a/smug_core.c b/smug_core.c
index c498516..1fc2702 100644
--- a/smug_core.c
+++ b/smug_core.c
@@ -41,31 +41,31 @@ static char *user_agent = "smugbatch/"SMUGBATCH_VERSION" (greg@kroah.com)";
static char *session_id_tag = "Session id";
static char *smugmug_album_list_url =
- "https://api.smugmug.com/hack/rest/1.2.0/?"
+ "https://secure.smugmug.com/services/api/rest/1.2.2/?"
"method=smugmug.albums.get"
"&SessionID=%s&APIKey=%s";
static char *smugmug_album_create_url =
- "https://api.smugmug.com/hack/rest/1.2.0/?"
+ "https://secure.smugmug.com/services/api/rest/1.2.2/?"
"method=smugmug.albums.create"
"&SessionID=%s&Title=%s&CategoryID=%s&AlbumTemplateID=%s";
static char *smugmug_category_list_url =
- "https://api.smugmug.com/hack/rest/1.2.0/?"
+ "https://secure.smugmug.com/services/api/rest/1.2.2/?"
"method=smugmug.categories.get"
"&SessionID=%s";
static char *smugmug_quicksettings_list_url =
- "https://api.smugmug.com/hack/rest/1.2.0/?"
+ "https://secure.smugmug.com/services/api/rest/1.2.2/?"
"method=smugmug.albumtemplates.get"
"&SessionID=%s";
static char *smugmug_login_url =
- "https://api.smugmug.com/hack/rest/1.2.0/?"
+ "https://secure.smugmug.com/services/api/rest/1.2.2/?"
"method=smugmug.login.withPassword"
"&EmailAddress=%s&Password=%s&APIKey=%s";
static char *smugmug_logout_url =
- "https://api.smugmug.com/hack/rest/1.2.0/?"
+ "https://secure.smugmug.com/services/api/rest/1.2.2/?"
"method=smugmug.logout"
"&SessionID=%s&APIKey=%s";
static char *smugmug_image_list_url =
- "https://api.smugmug.com/hack/rest/1.2.0/?"
+ "https://secure.smugmug.com/services/api/rest/1.2.2/?"
"method=smugmug.images.get"
"&SessionID=%s&Heavy=1&AlbumID=%s&AlbumKey=%s";
static char *smugmug_upload_url =
@@ -89,6 +89,47 @@ CURL *curl_init(void)
return curl;
}
+static char *get_su_cookie(CURL *curl)
+{
+ CURLcode res;
+ struct curl_slist *cookies;
+ struct curl_slist *nc;
+ char *cookie = NULL;
+
+ res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
+ if (res != CURLE_OK) {
+ fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
+ curl_easy_strerror(res));
+ exit(1);
+ }
+ nc = cookies;
+ while (nc) {
+ char domain[50], p1[50], p2[50], p3[50], name[50], value[50];
+ long unsigned int t;
+ int res;
+
+ /* #HttpOnly_.smugmug.com\tTRUE\t/\tFALSE\t0\tSMSESS\t99363be4c3ceb3f153f875216539524a */
+ res =
+ sscanf(nc->data, "%s\t%s\t%s\t%s\t%lu\t%s\t%s", domain, p1,
+ p2, p3, &t, name, value);
+ if (res == 7 && strcmp(name, "_su") == 0) {
+ cookie = valloc(strlen(value) + 1 + 4);
+ sprintf(cookie, "_su=%s", value);
+ }
+ nc = nc->next;
+ }
+ curl_slist_free_all(cookies);
+ return cookie;
+}
+
+static void curl_set_cookie(CURL *curl, const char *cookie)
+{
+ if (cookie == NULL)
+ return;
+
+ curl_easy_setopt(curl, CURLOPT_COOKIE, cookie);
+}
+
char *my_basename(char *name)
{
@@ -252,6 +293,7 @@ struct session *session_alloc(void)
struct session *session;
session = zalloc(sizeof(*session));
+ session->su_cookie = NULL;
if (!session)
return NULL;
INIT_LIST_HEAD(&session->albums);
@@ -518,6 +560,7 @@ int upload_file(struct session *session, struct filename *filename,
dbg("%s is %d bytes big\n", filename->filename, (int)file_info.st_size);
sprintf(url, smugmug_upload_url, filename->basename);
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
@@ -532,7 +575,7 @@ int upload_file(struct session *session, struct filename *filename,
sprintf(buf, "Content-MD5: %s", md5_string);
dbg("%s\n", buf);
headers = curl_slist_append(headers, buf);
- headers = curl_slist_append(headers, "X-Smug-Version: 1.2.0");
+ headers = curl_slist_append(headers, "X-Smug-Version: 1.2.2");
headers = curl_slist_append(headers, "X-Smug-ResponseType: REST");
sprintf(buf, "X-Smug-SessionID: %s", session->session_id);
dbg("%s\n", buf);
@@ -669,7 +712,7 @@ int smug_login(struct session *session)
dbg("url = %s\n", url);
curl_easy_setopt(curl, CURLOPT_URL, url);
-
+ curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
/* log into smugmug */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
@@ -678,7 +721,7 @@ int smug_login(struct session *session)
printf("error(%d) trying to login\n", res);
return -EINVAL;
}
-
+ session->su_cookie = get_su_cookie(curl);
char *rsp_stat = find_value(curl_buf->data, "rsp stat", NULL);
if (!rsp_stat)
return -EINVAL;
@@ -721,6 +764,7 @@ int smug_logout(struct session *session)
sprintf(url, smugmug_logout_url, session->session_id, api_key);
dbg("url = %s\n", url);
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
@@ -756,6 +800,8 @@ int smug_get_albums(struct session *session)
sprintf(url, smugmug_album_list_url, session->session_id, api_key);
dbg("url = %s\n", url);
+
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
@@ -803,6 +849,7 @@ char *smug_get_quicksettings_id(const char *qs_name, struct session *session)
sprintf(url, smugmug_quicksettings_list_url, session->session_id);
dbg("url = %s\n", url);
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
@@ -880,6 +927,7 @@ char *smug_get_category_id(const char *category_title, struct session *session)
sprintf(url, smugmug_category_list_url, session->session_id);
dbg("url = %s\n", url);
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
@@ -975,6 +1023,7 @@ struct album *smug_create_album(const char *album_title,
free(category_id);
free(qs_id);
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
@@ -1052,6 +1101,8 @@ int smug_read_images(struct session *session, struct album *album)
sprintf(url, smugmug_image_list_url, session->session_id,
album->id, album->key);
dbg("url = %s\n", url);
+
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
@@ -1073,7 +1124,7 @@ int smug_read_images(struct session *session, struct album *album)
return 0;
}
-int smug_download(struct filename *filename)
+int smug_download(struct session *session, struct filename *filename)
{
struct smug_curl_buffer *curl_buf;
CURL *curl = NULL;
@@ -1105,6 +1156,7 @@ int smug_download(struct filename *filename)
dbg("3\n");
dbg("url = %s\n", filename->original_url);
+ curl_set_cookie(curl, session->su_cookie);
curl_easy_setopt(curl, CURLOPT_URL, filename->original_url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl_buf);
diff --git a/smugdown.c b/smugdown.c
index 96ddab5..c338880 100644
--- a/smugdown.c
+++ b/smugdown.c
@@ -156,7 +156,7 @@ int main(int argc, char *argv[], char *envp[])
list_for_each_entry(temp, &session->files_download, entry) {
if (strcmp(temp->filename, filename->filename) == 0) {
/* we found something to download */
- smug_download(filename);
+ smug_download(session, filename);
}
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org