001package com.box.sdk;
002
003/**
004 * This API connection uses a shared link (along with an optional password) to authenticate with the Box API. It wraps a
005 * preexisting BoxAPIConnection in order to provide additional access to items that are accessible with a shared link.
006 */
007public class SharedLinkAPIConnection extends BoxAPIConnection {
008    private final BoxAPIConnection wrappedConnection;
009    private final String sharedLink;
010    private final String sharedLinkPassword;
011
012    SharedLinkAPIConnection(BoxAPIConnection connection, String sharedLink) {
013        this(connection, sharedLink, null);
014    }
015
016    SharedLinkAPIConnection(BoxAPIConnection connection, String sharedLink, String sharedLinkPassword) {
017        //this is a hack to maintain backward compatibility and to prevent confusing the compiler
018        //between two possible BoxApiConnection constructors for super(null)
019        super("");
020
021        this.wrappedConnection = connection;
022        this.sharedLink = sharedLink;
023        this.sharedLinkPassword = sharedLinkPassword;
024    }
025
026    @Override
027    public long getExpires() {
028        return this.wrappedConnection.getExpires();
029    }
030
031    @Override
032    public void setExpires(long milliseconds) {
033        this.wrappedConnection.setExpires(milliseconds);
034    }
035
036    @Override
037    public String getBaseURL() {
038        return this.wrappedConnection.getBaseURL();
039    }
040
041    @Override
042    public void setBaseURL(String baseURL) {
043        this.wrappedConnection.setBaseURL(baseURL);
044    }
045
046    @Override
047    public String getBaseUploadURL() {
048        return this.wrappedConnection.getBaseUploadURL();
049    }
050
051    @Override
052    public void setBaseUploadURL(String baseUploadURL) {
053        this.wrappedConnection.setBaseUploadURL(baseUploadURL);
054    }
055
056    @Override
057    public String getUserAgent() {
058        return this.wrappedConnection.getUserAgent();
059    }
060
061    @Override
062    public void setUserAgent(String userAgent) {
063        this.wrappedConnection.setUserAgent(userAgent);
064    }
065
066    @Override
067    public String getAccessToken() {
068        return this.wrappedConnection.getAccessToken();
069    }
070
071    @Override
072    public void setAccessToken(String accessToken) {
073        this.wrappedConnection.setAccessToken(accessToken);
074    }
075
076    @Override
077    public String getRefreshToken() {
078        return this.wrappedConnection.getRefreshToken();
079    }
080
081    @Override
082    public void setRefreshToken(String refreshToken) {
083        this.wrappedConnection.setRefreshToken(refreshToken);
084    }
085
086    @Override
087    public void setAutoRefresh(boolean autoRefresh) {
088        this.wrappedConnection.setAutoRefresh(autoRefresh);
089    }
090
091    @Override
092    public boolean getAutoRefresh() {
093        return this.wrappedConnection.getAutoRefresh();
094    }
095
096    @Override
097    public int getMaxRequestAttempts() {
098        return this.wrappedConnection.getMaxRequestAttempts();
099    }
100
101    @Override
102    public void setMaxRequestAttempts(int attempts) {
103        this.wrappedConnection.setMaxRequestAttempts(attempts);
104    }
105
106    @Override
107    public boolean canRefresh() {
108        return this.wrappedConnection.canRefresh();
109    }
110
111    @Override
112    public boolean needsRefresh() {
113        return this.wrappedConnection.needsRefresh();
114    }
115
116    @Override
117    public void refresh() {
118        this.wrappedConnection.refresh();
119    }
120
121    @Override
122    String lockAccessToken() {
123        return this.wrappedConnection.lockAccessToken();
124    }
125
126    @Override
127    void unlockAccessToken() {
128        this.wrappedConnection.unlockAccessToken();
129    }
130
131    /**
132     * Gets the shared link used for accessing shared items.
133     * @return the shared link used for accessing shared items.
134     */
135    String getSharedLink() {
136        return this.sharedLink;
137    }
138
139    /**
140     * Gets the shared link password used for accessing shared items.
141     * @return the shared link password used for accessing shared items.
142     */
143    String getSharedLinkPassword() {
144        return this.sharedLinkPassword;
145    }
146}