summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorGilbert Gonzales <gilbert@lindenlab.com>2013-06-05 16:31:47 -0700
committerGilbert Gonzales <gilbert@lindenlab.com>2013-06-05 16:31:47 -0700
commit13c61d13eadaa1dab6a98385421aa56f4ba362b0 (patch)
tree75484140e22539be2820d0d570d9be3ca78eac35 /indra/newview
parentcf5cf32ebf3a8eccbaa9e8c092fd23b357a68727 (diff)
parent58177c83b0a81aae363bccc0e5ac2312b083341d (diff)
merge
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llpanelsnapshotfacebook.cpp11
-rwxr-xr-xindra/newview/llwebprofile.cpp45
-rwxr-xr-xindra/newview/llwebprofile.h5
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/textures/toolbar_icons/facebook.pngbin1180 -> 2974 bytes
4 files changed, 48 insertions, 13 deletions
diff --git a/indra/newview/llpanelsnapshotfacebook.cpp b/indra/newview/llpanelsnapshotfacebook.cpp
index 200c64f16b..56b1f921b9 100755
--- a/indra/newview/llpanelsnapshotfacebook.cpp
+++ b/indra/newview/llpanelsnapshotfacebook.cpp
@@ -64,6 +64,7 @@ private:
/*virtual*/ void updateControls(const LLSD& info);
void onSend();
+ void onImageUploaded(const std::string& caption, const std::string& image_url);
};
static LLRegisterPanelClassWrapper<LLPanelSnapshotFacebook> panel_class("llpanelsnapshotfacebook");
@@ -98,9 +99,17 @@ void LLPanelSnapshotFacebook::onSend()
std::string caption = getChild<LLUICtrl>("caption")->getValue().asString();
bool add_location = getChild<LLUICtrl>("add_location_cb")->getValue().asBoolean();
- LLWebProfile::uploadImage(LLFloaterSnapshot::getImageData(), caption, add_location);
+ LLWebProfile::uploadImage(LLFloaterSnapshot::getImageData(), caption, add_location, boost::bind(&LLPanelSnapshotFacebook::onImageUploaded, this, caption, _1));
LLFloaterSnapshot::postSave();
// test with a placeholder image, until we can figure out a way to grab the uploaded image url
LLFacebookConnect::instance().sharePhoto("http://fc02.deviantart.net/fs43/i/2009/125/a/9/Future_of_Frog_by_axcho.jpg", caption);
}
+
+void LLPanelSnapshotFacebook::onImageUploaded(const std::string& caption, const std::string& image_url)
+{
+ if (!image_url.empty())
+ {
+ LLFacebookConnect::instance().sharePhoto(image_url, caption);
+ }
+}
diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp
index 641f338f2c..6923724de2 100755
--- a/indra/newview/llwebprofile.cpp
+++ b/indra/newview/llwebprofile.cpp
@@ -62,8 +62,8 @@ class LLWebProfileResponders::ConfigResponder : public LLHTTPClient::Responder
LOG_CLASS(LLWebProfileResponders::ConfigResponder);
public:
- ConfigResponder(LLPointer<LLImageFormatted> imagep)
- : mImagep(imagep)
+ ConfigResponder(LLPointer<LLImageFormatted> imagep, LLWebProfile::image_url_callback_t cb)
+ : mImagep(imagep), mImageCallback(cb)
{
}
@@ -113,11 +113,12 @@ public:
// Do the actual image upload using the configuration.
LL_DEBUGS("Snapshots") << "Got upload config, POSTing image to " << upload_url << ", config=[" << config << "]" << llendl;
- LLWebProfile::post(mImagep, config, upload_url);
+ LLWebProfile::post(mImagep, config, upload_url, mImageCallback);
}
private:
LLPointer<LLImageFormatted> mImagep;
+ LLWebProfile::image_url_callback_t mImageCallback;
};
///////////////////////////////////////////////////////////////////////////////
@@ -127,6 +128,22 @@ class LLWebProfileResponders::PostImageRedirectResponder : public LLHTTPClient::
LOG_CLASS(LLWebProfileResponders::PostImageRedirectResponder);
public:
+ PostImageRedirectResponder(LLWebProfile::image_url_callback_t cb)
+ : mImageCallback(cb)
+ {
+ }
+
+ /*virtual*/ void completedHeader(U32 status, const std::string& reason, const LLSD& content)
+ {
+ if (status == 200)
+ {
+ std::string image_url = content.get("Location");
+ llinfos << "Image uploaded to " << image_url << llendl;
+ if (!mImageCallback.empty() && !image_url.empty())
+ mImageCallback(image_url);
+ }
+ }
+
/*virtual*/ void completedRaw(
U32 status,
const std::string& reason,
@@ -148,9 +165,9 @@ public:
LL_DEBUGS("Snapshots") << "Uploading image succeeded. Response: [" << body << "]" << llendl;
LLWebProfile::reportImageUploadStatus(true);
}
-
+
private:
- LLPointer<LLImageFormatted> mImagep;
+ LLWebProfile::image_url_callback_t mImageCallback;
};
@@ -161,6 +178,11 @@ class LLWebProfileResponders::PostImageResponder : public LLHTTPClient::Responde
LOG_CLASS(LLWebProfileResponders::PostImageResponder);
public:
+ PostImageResponder(LLWebProfile::image_url_callback_t cb)
+ : mImageCallback(cb)
+ {
+ }
+
/*virtual*/ void completedHeader(U32 status, const std::string& reason, const LLSD& content)
{
// Viewer seems to fail to follow a 303 redirect on POST request
@@ -172,7 +194,7 @@ public:
headers["Cookie"] = LLWebProfile::getAuthCookie();
const std::string& redir_url = content["location"];
LL_DEBUGS("Snapshots") << "Got redirection URL: " << redir_url << llendl;
- LLHTTPClient::get(redir_url, new LLWebProfileResponders::PostImageRedirectResponder, headers);
+ LLHTTPClient::get(redir_url, new LLWebProfileResponders::PostImageRedirectResponder(mImageCallback), headers);
}
else
{
@@ -188,6 +210,9 @@ public:
const LLIOPipe::buffer_ptr_t& buffer)
{
}
+
+private:
+ LLWebProfile::image_url_callback_t mImageCallback;
};
///////////////////////////////////////////////////////////////////////////////
@@ -197,7 +222,7 @@ std::string LLWebProfile::sAuthCookie;
LLWebProfile::status_callback_t LLWebProfile::mStatusCallback;
// static
-void LLWebProfile::uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location)
+void LLWebProfile::uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location, LLWebProfile::image_url_callback_t cb)
{
// Get upload configuration data.
std::string config_url(getProfileURL(LLStringUtil::null) + "snapshots/s3_upload_config");
@@ -207,7 +232,7 @@ void LLWebProfile::uploadImage(LLPointer<LLImageFormatted> image, const std::str
LL_DEBUGS("Snapshots") << "Requesting " << config_url << llendl;
LLSD headers = LLViewerMedia::getHeaders();
headers["Cookie"] = getAuthCookie();
- LLHTTPClient::get(config_url, new LLWebProfileResponders::ConfigResponder(image), headers);
+ LLHTTPClient::get(config_url, new LLWebProfileResponders::ConfigResponder(image, cb), headers);
}
// static
@@ -218,7 +243,7 @@ void LLWebProfile::setAuthCookie(const std::string& cookie)
}
// static
-void LLWebProfile::post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url)
+void LLWebProfile::post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url, LLWebProfile::image_url_callback_t cb)
{
if (dynamic_cast<LLImagePNG*>(image.get()) == 0)
{
@@ -284,7 +309,7 @@ void LLWebProfile::post(LLPointer<LLImageFormatted> image, const LLSD& config, c
memcpy(data, body.str().data(), size);
// Send request, successful upload will trigger posting metadata.
- LLHTTPClient::postRaw(url, data, size, new LLWebProfileResponders::PostImageResponder(), headers);
+ LLHTTPClient::postRaw(url, data, size, new LLWebProfileResponders::PostImageResponder(cb), headers);
}
// static
diff --git a/indra/newview/llwebprofile.h b/indra/newview/llwebprofile.h
index 10279bffac..63dccf80af 100755
--- a/indra/newview/llwebprofile.h
+++ b/indra/newview/llwebprofile.h
@@ -48,8 +48,9 @@ class LLWebProfile
public:
typedef boost::function<void(bool ok)> status_callback_t;
+ typedef boost::function<void(const std::string& image_url)> image_url_callback_t;
- static void uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location);
+ static void uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location, image_url_callback_t cb = image_url_callback_t());
static void setAuthCookie(const std::string& cookie);
static void setImageUploadResultCallback(status_callback_t cb) { mStatusCallback = cb; }
@@ -58,7 +59,7 @@ private:
friend class LLWebProfileResponders::PostImageResponder;
friend class LLWebProfileResponders::PostImageRedirectResponder;
- static void post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url);
+ static void post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url, image_url_callback_t cb);
static void reportImageUploadStatus(bool ok);
static std::string getAuthCookie();
diff --git a/indra/newview/skins/default/textures/toolbar_icons/facebook.png b/indra/newview/skins/default/textures/toolbar_icons/facebook.png
index 32fe2bf8ac..b960b834dc 100755..100644
--- a/indra/newview/skins/default/textures/toolbar_icons/facebook.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/facebook.png
Binary files differ