Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Api doesn't work #55

Open
Ozymandy opened this issue Feb 12, 2017 · 1 comment
Open

Api doesn't work #55

Ozymandy opened this issue Feb 12, 2017 · 1 comment

Comments

@Ozymandy
Copy link

I try to create app using your api. Create ApiStorage extended AbsApiState. But when I try to connect I get this
TelegramApi#1001:Phase 0 in 1 ms TelegramApi#1001:Phase 1 in 90 ms TelegramApi#1001:Timeout Iteration TelegramApi#1001:Connection iteration TelegramApi#1001:#1: waitForDc TelegramApi#1001:#1: Creating proto for dc TelegramApi#1001:#1: Creating key TelegramApi#1001:Phase 2 in 4 ms TelegramApi#1001:Sender iteration api#1001#Downloader:DownloadFileThread iteration api#1001#Downloader:DownloadFileThread iteration api#1001#Uploader:UploadFileThread iteration api#1001#Uploader:UploadFileThread iteration api#1001#Uploader:UploadFileThread iteration api#1001#Downloader:DownloadFileThread iteration api#1001#Downloader:DownloadFileThread iteration TransportRate:Transport: #1 149.154.167.91:443 #1.0 api#1001#Uploader:UploadFileThread iteration TelegramApi#1001:Phase 3 in 8 ms TransportRate:tryConnection #1 java.net.BindException: Cannot assign requested address: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.telegram.mtproto.transport.PlainTcpConnection.<init>(PlainTcpConnection.java:32)
Here is the code of AbsApiState
`public class ApiStorage implements AbsApiState, Serializable {

private HashMap<Integer, ConnectionInfo[]> connections = new HashMap<Integer, ConnectionInfo[]>();
private HashMap<Integer, byte[]> keys = new HashMap<Integer, byte[]>();
private HashMap<Integer, Boolean> isAuth = new HashMap<Integer, Boolean>();
private int primaryDc = 1;
private static final String DC1 = "149.154.167.40";
private static final String DC2 = "149.154.167.50";

public ApiStorage() {
    connections.put(1, new ConnectionInfo[]{
        new ConnectionInfo(1, 0, DC2, 443)
    });
}

@Override

public int getPrimaryDc() {
    return primaryDc;
}

@Override
public void setPrimaryDc(int i) {
    primaryDc = i;
}

@Override
public boolean isAuthenticated(int dcId) {
    if (isAuth.containsKey(dcId)) {
        return isAuth.get(dcId);
    }
    return false;
}

@Override
public void setAuthenticated(int dcId, boolean auth) {
    isAuth.put(dcId, auth);
}

@Override
public void updateSettings(TLConfig config) {
    connections.clear();
    HashMap<Integer, ArrayList<ConnectionInfo>> tConnections = new HashMap<Integer, ArrayList<ConnectionInfo>>();
    int id = 0;
    for (TLDcOption option : config.getDcOptions()) {
        if (!tConnections.containsKey(option.getId())) {
            tConnections.put(option.getId(), new ArrayList<ConnectionInfo>());
        }
        tConnections.get(option.getId()).add(new ConnectionInfo(id++, 0, option.getIpAddress(), option.getPort()));
    }

    for (Integer dc : tConnections.keySet()) {
        connections.put(dc, tConnections.get(dc).toArray(new ConnectionInfo[0]));
    }
}

@Override
public byte[] getAuthKey(int dcId) {
    return keys.get(dcId);
}

@Override
public void putAuthKey(int dcId, byte[] key) {
    keys.put(dcId, key);
}

@Override
public ConnectionInfo[] getAvailableConnections(int dcId) {
    if (!connections.containsKey(dcId)) {
        return new ConnectionInfo[0];
    }
    return connections.get(dcId);
}

@Override
public AbsMTProtoState getMtProtoState(int dcId) {
    return new AbsMTProtoState() {
        private KnownSalt[] knownSalts = new KnownSalt[0];

        @Override
        public byte[] getAuthKey() {
            return ApiStorage.this.getAuthKey(dcId);
        }

        @Override
        public ConnectionInfo[] getAvailableConnections() {
            return ApiStorage.this.getAvailableConnections(dcId);
        }

        @Override
        public KnownSalt[] readKnownSalts() {
            return knownSalts;
        }

        @Override
        protected void writeKnownSalts(KnownSalt[] salts) {
            knownSalts = salts;
        }
    };
}

@Override
public void resetAuth() {
    isAuth.clear();
}

@Override
public void reset() {
    isAuth.clear();
    keys.clear();
}

public void saveState(String fileName, ApiStorage mas) {

    try {
        FileOutputStream fileOut = new FileOutputStream(fileName + ".sta");
        ObjectOutputStream out = new ObjectOutputStream(fileOut);
        out.writeObject(mas);
        out.close();
        fileOut.close();
    } catch (IOException i) {
        i.printStackTrace();
    }
}

public ApiStorage loadState(String fileName) {
    try {
        FileInputStream fileIn = new FileInputStream(fileName + ".sta");
        ObjectInputStream in = new ObjectInputStream(fileIn);
        ApiStorage mas = (ApiStorage) in.readObject();
        in.close();
        fileIn.close();

        return mas;
    } catch (IOException i) {
        return null;
    } catch (ClassNotFoundException c) {
        c.printStackTrace();
    }
    return null;
}

}`
What am I doing wrong?

@ghost
Copy link

ghost commented Mar 15, 2017

hi
Why is there any sample code for use ??????
i don't know how can i use from this library.
please !!!!!!!!!
thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant