// Path: src/main/java/org/springframework/social/bitbucket/api/BitBucket.java
// public interface BitBucket extends ApiBinding {
// 
//     /**
//      * Returns the portion of the BitBucket API that allow interaction with
//      * repositories.
//      */
//     RepoOperations repoOperations();
// 
//     /**
//      * Returns the portion of the BitBucket API that allow interaction with user
//      * accounts.
//      */
//     UserOperations userOperations();
// 
//     /**
//      * Returns the portion of the BitBucket API that allow messing with
//      * privileges.
//      */
//     PrivilegeOperations privelegesOperations();
// }
// 
// Path: src/main/java/org/springframework/social/bitbucket/api/impl/BitBucketTemplate.java
// public class BitBucketTemplate extends AbstractOAuth1ApiBinding implements
//         BitBucket {
// 
//     private UserOperations userOperations;
// 
//     private RepoOperations repoOperations;
// 
//     private PrivilegeOperations privilegeOperations;
// 
//     public BitBucketTemplate(String consumerKey, String consumerSecret,
//             String accessToken, String accessTokenSecret) {
//         super(consumerKey, consumerSecret, accessToken, accessTokenSecret);
//         initSubApis();
//     }
// 
//     public BitBucketTemplate() {
//         super();
//         initSubApis();
//     }
// 
//     private void initSubApis() {
//         userOperations = new UserTemplate(getRestTemplate(), isAuthorized());
//         repoOperations = new RepoTemplate(getRestTemplate(), isAuthorized());
//         privilegeOperations = new PrivilegeTemplate(getRestTemplate(),
//                 isAuthorized());
//     }
// 
//     @Override
//     public RepoOperations repoOperations() {
//         return repoOperations;
//     }
// 
//     @Override
//     public UserOperations userOperations() {
//         return userOperations;
//     }
// 
//     @Override
//     public PrivilegeOperations privelegesOperations() {
//         return privilegeOperations;
//     }
// 
// }


import org.springframework.social.bitbucket.api.BitBucket;
import org.springframework.social.bitbucket.api.impl.BitBucketTemplate;
import org.springframework.social.oauth1.AbstractOAuth1ServiceProvider;
import org.springframework.social.oauth1.OAuth1Template;
/**
 * Copyright 2012 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.springframework.social.bitbucket.connect;


public class BitBucketServiceProvider extends
        AbstractOAuth1ServiceProvider<BitBucket> {

    public BitBucketServiceProvider(String consumerKey, String consumerSecret) {
        super(consumerKey, consumerSecret, new OAuth1Template(consumerKey,
                consumerSecret,
                "https://bitbucket.org/!api/1.0/oauth/request_token",
                "https://bitbucket.org/!api/1.0/oauth/authenticate",
                "https://bitbucket.org/!api/1.0/oauth/access_token"));
    }

    @Override
// Path: src/main/java/org/springframework/social/bitbucket/api/BitBucket.java
// public interface BitBucket extends ApiBinding {
// 
//     /**
//      * Returns the portion of the BitBucket API that allow interaction with
//      * repositories.
//      */
//     RepoOperations repoOperations();
// 
//     /**
//      * Returns the portion of the BitBucket API that allow interaction with user
//      * accounts.
//      */
//     UserOperations userOperations();
// 
//     /**
//      * Returns the portion of the BitBucket API that allow messing with
//      * privileges.
//      */
//     PrivilegeOperations privelegesOperations();
// }
// 
// Path: src/main/java/org/springframework/social/bitbucket/api/impl/BitBucketTemplate.java
// public class BitBucketTemplate extends AbstractOAuth1ApiBinding implements
//         BitBucket {
// 
//     private UserOperations userOperations;
// 
//     private RepoOperations repoOperations;
// 
//     private PrivilegeOperations privilegeOperations;
// 
//     public BitBucketTemplate(String consumerKey, String consumerSecret,
//             String accessToken, String accessTokenSecret) {
//         super(consumerKey, consumerSecret, accessToken, accessTokenSecret);
//         initSubApis();
//     }
// 
//     public BitBucketTemplate() {
//         super();
//         initSubApis();
//     }
// 
//     private void initSubApis() {
//         userOperations = new UserTemplate(getRestTemplate(), isAuthorized());
//         repoOperations = new RepoTemplate(getRestTemplate(), isAuthorized());
//         privilegeOperations = new PrivilegeTemplate(getRestTemplate(),
//                 isAuthorized());
//     }
// 
//     @Override
//     public RepoOperations repoOperations() {
//         return repoOperations;
//     }
// 
//     @Override
//     public UserOperations userOperations() {
//         return userOperations;
//     }
// 
//     @Override
//     public PrivilegeOperations privelegesOperations() {
//         return privilegeOperations;
//     }
// 
// }


// Path: src/main/java/org/springframework/social/bitbucket/connect/BitBucketServiceProvider.java
import org.springframework.social.bitbucket.api.BitBucket;
import org.springframework.social.bitbucket.api.impl.BitBucketTemplate;
import org.springframework.social.oauth1.AbstractOAuth1ServiceProvider;
import org.springframework.social.oauth1.OAuth1Template;

/**
 * Copyright 2012 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.springframework.social.bitbucket.connect;


public class BitBucketServiceProvider extends
        AbstractOAuth1ServiceProvider<BitBucket> {

    public BitBucketServiceProvider(String consumerKey, String consumerSecret) {
        super(consumerKey, consumerSecret, new OAuth1Template(consumerKey,
                consumerSecret,
                "https://bitbucket.org/!api/1.0/oauth/request_token",
                "https://bitbucket.org/!api/1.0/oauth/authenticate",
                "https://bitbucket.org/!api/1.0/oauth/access_token"));
    }

    @Override
    public BitBucket getApi(String accessToken, String secret) {