/*
* Copyright (c) 2012 Socialize Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.socialize.demo.snippets;
import android.app.Activity;
import android.net.Uri;
import com.socialize.ShareUtils;
import com.socialize.api.SocializeSession;
import com.socialize.api.action.ShareType;
import com.socialize.api.action.share.ShareOptions;
import com.socialize.api.action.share.SocialNetworkShareListener;
import com.socialize.entity.Entity;
import com.socialize.entity.PropagationInfo;
import com.socialize.entity.PropagationInfoResponse;
import com.socialize.entity.Share;
import com.socialize.error.SocializeException;
import com.socialize.listener.SocializeAuthListener;
import com.socialize.listener.share.ShareAddListener;
import com.socialize.networks.PostData;
import com.socialize.networks.SocialNetwork;
import com.socialize.networks.SocialNetworkListener;
import com.socialize.networks.SocialNetworkPostListener;
import com.socialize.networks.twitter.PhotoTweet;
import com.socialize.networks.twitter.Tweet;
import com.socialize.networks.twitter.TwitterUtils;
import org.json.JSONObject;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* @author Jason Polites
*
*/
public class TwitterSnippets extends Activity{
public void linkFB() {
// begin-snippet-0
// The "this" argument refers to the current Activity
TwitterUtils.link(this, new SocializeAuthListener() {
@Override
public void onCancel() {
// The user cancelled the operation.
}
@Override
public void onAuthSuccess(SocializeSession session) {
// User was authed.
}
@Override
public void onAuthFail(SocializeException error) {
// Handle error
}
@Override
public void onError(SocializeException error) {
// Handle error
}
});
// end-snippet-0
}
public void linkFBWithToken() {
// begin-snippet-1
// The user's Twitter auth token
String twToken = "ABCDEF...GHIJKL";
//The user's Twitter auth token secret
String twSecret = "ABCDEF...GHIJKL";
TwitterUtils.link(this, twToken, twSecret, new SocializeAuthListener() {
@Override
public void onCancel() {
// The user cancelled the operation.
}
@Override
public void onAuthSuccess(SocializeSession session) {
// User was authed.
}
@Override
public void onAuthFail(SocializeException error) {
// Handle error
}
@Override
public void onError(SocializeException error) {
// Handle error
}
});
// end-snippet-1
}
public void unlink() {
// begin-snippet-3
// Disconnect the user from their Twitter account
TwitterUtils.unlink(this);
// end-snippet-3
}
public void postEntity() {
// begin-snippet-4
Entity entity = Entity.newInstance("http://myentity.com", "My Name");
TwitterUtils.tweetEntity(this, entity, "Text to be posted", new SocialNetworkShareListener() {
@Override
public void onNetworkError(Activity context, SocialNetwork network, Exception error) {
// Handle error
}
@Override
public void onCancel() {
// The user cancelled the operation.
}
@Override
public void onAfterPost(Activity parent, SocialNetwork socialNetwork, JSONObject responseObject) {
// Called after the post returned from Twitter.
// responseObject contains the raw JSON response from Twitter.
}
@Override
public boolean onBeforePost(Activity parent, SocialNetwork socialNetwork, PostData postData) {
// Called just prior to the post.
// postData contains the dictionary (map) of data to be posted.
// You can change this here to customize the post.
// Return true to prevent the post from occurring.
return false;
}
});
// end-snippet-4
}
public void tweet() {
// begin-snippet-5
// Create a Tweet object
Tweet tweet = new Tweet();
tweet.setText("Test Message");
// Execute a POST on twitter
// The "this" argument refers to the current Activity
TwitterUtils.tweet(this, tweet, new SocialNetworkListener() {
@Override
public void onNetworkError(Activity context, SocialNetwork network, Exception error) {
// Handle error
}
@Override
public void onCancel() {
// The user cancelled the operation.
}
@Override
public void onAfterPost(Activity parent, SocialNetwork socialNetwork, JSONObject responseObject) {
// Called after the post returned from Twitter.
// responseObject contains the raw JSON response from Twitter.
}
@Override
public boolean onBeforePost(Activity parent, SocialNetwork socialNetwork, PostData postData) {
// Called before the post to the given network is made
// Return true to prevent the post from occurring
return false;
}
});
// end-snippet-5
}
public void post() {
// begin-snippet-6
// The API path to be called
String graphPath = "statuses/update.json";
// The data to be posted. This is based on the API endpoint
// See https://dev.twitter.com/docs/api
Map<String, Object> postData = new HashMap<String, Object>();
postData.put("status", "A message to post");
// Execute a POST on twitter
// The "this" argument refers to the current Activity
TwitterUtils.post(this, graphPath, postData, new SocialNetworkPostListener() {
@Override
public void onNetworkError(Activity context, SocialNetwork network, Exception error) {
// Handle error
}
@Override
public void onCancel() {
// The user cancelled the operation.
}
@Override
public void onAfterPost(Activity parent, SocialNetwork socialNetwork, JSONObject responseObject) {
// Called after the post returned from Twitter.
// responseObject contains the raw JSON response from Twitter.
}
});
// end-snippet-6
}
public void get() {
// begin-snippet-7
// The graph API path to be called
String graphPath = "followers/ids.json";
// Execute a GET on twitter
// The "this" argument refers to the current Activity
TwitterUtils.get(this, graphPath, null, new SocialNetworkPostListener() {
@Override
public void onNetworkError(Activity context, SocialNetwork network, Exception error) {
// Handle error
}
@Override
public void onCancel() {
// The user cancelled the operation.
}
@Override
public void onAfterPost(Activity parent, SocialNetwork socialNetwork, JSONObject responseObject) {
// Called after the post returned from Twitter.
// responseObject contains the raw JSON response from Twitter.
}
});
// end-snippet-7
}
public void postWithUrl() {
final Activity context = this;
// begin-snippet-8
// Create a simple share object to get the propagation data
final Entity entity = Entity.newInstance("http://myentity.com", "My Name");
ShareOptions options = ShareUtils.getUserShareOptions(this);
// The "this" argument refers to the current Activity
ShareUtils.registerShare(this, entity, options, new ShareAddListener() {
@Override
public void onError(SocializeException error) {
// Handle error
}
@Override
public void onCreate(Share share) {
// Get the propagation info from the result
PropagationInfoResponse propagationInfoResponse = share.getPropagationInfoResponse();
PropagationInfo propagationInfo = propagationInfoResponse.getPropagationInfo(SocialNetwork.TWITTER);
// Tweet the link
Tweet tweet = new Tweet();
tweet.setText("A message to post " + propagationInfo.getEntityUrl()); // Use the SmartDownload URL
// Execute a POST on twitter
TwitterUtils.tweet(context, tweet, new SocialNetworkListener() {
@Override
public void onNetworkError(Activity context, SocialNetwork network, Exception error) {
// Handle error
}
@Override
public void onCancel() {
// The user cancelled the operation.
}
@Override
public void onAfterPost(Activity parent, SocialNetwork socialNetwork, JSONObject responseObject) {
// Called after the post returned from Twitter.
// responseObject contains the raw JSON response from Twitter.
}
@Override
public boolean onBeforePost(Activity parent, SocialNetwork socialNetwork, PostData postData) {
// Called before the post to the given network is made
// Return true to prevent the post from occurring
return false;
}
});
}
}, SocialNetwork.TWITTER);
// end-snippet-8
}
public void postPhoto() throws IOException {
// begin-snippet-9
//The "this" argument refers to the current Activity
final Activity context = this;
final Entity entity = Entity.newInstance("http://myentity.com", "My Name");
// First create a Socialize share object so we get the correct URLs
ShareOptions options = ShareUtils.getUserShareOptions(context);
ShareUtils.registerShare(context, entity, options, new ShareAddListener() {
@Override
public void onError(SocializeException error) {
// Handle error
}
@Override
public void onCreate(Share result) {
// We have the result, use the URLs to add to the post
PropagationInfo propagationInfo = result.getPropagationInfoResponse().getPropagationInfo(ShareType.TWITTER);
String link = propagationInfo.getEntityUrl();
// TODO: Get the URI of your image from the local device.
// TODO: ***** DON'T FORGET TO USE YOUR OWN IMAGE HERE (See the sample app for a working example) ****
Uri photoUri = null;
// Format the picture for Twitter
try {
byte[] imageData = TwitterUtils.getImageForPost(context, photoUri);
// Create a photo tweet
PhotoTweet tweet = new PhotoTweet();
// Add the photo to the post
tweet.setImageData(imageData);
// Add the link returned from Socialize to use SmartDownloads
tweet.setText("A test photo of something " + link);
// Post to twitter
TwitterUtils.tweetPhoto(context, tweet, new SocialNetworkPostListener() {
@Override
public void onNetworkError(Activity context, SocialNetwork network, Exception error) {
// Handle error
}
@Override
public void onCancel() {
// The user cancelled the auth process
}
@Override
public void onAfterPost(Activity parent, SocialNetwork socialNetwork, JSONObject responseObject) {
// The post was successful
}
});
}
catch (IOException e) {
// Handle error
}
}
}, SocialNetwork.TWITTER);
//end-snippet-9
}
}