hey i in the middle of programming, but suddenly i noticed that my variable are not detected. so my syntax refrence became different, like i cant use A.User.Async in other function. this is my code, i want to make variable "A as new dropboxclient (storedaccestoken) " as public variable but when i start it storedaccestoken is null so the flow is broke. this code is the running version from my application, when i try to make variable "A" to become public "storedaccestoken" always come back with null and my application wont start. please help me find the solution
Imports System.IO
Imports System.Text
Imports System.Net
Imports login.Login
Imports Dropbox
Imports Dropbox.Api
Public Class menuutama
Dim IList As Object
Dim sourcepath As String
Dim FILE_NAME As String
Dim storedaccesstoken As String
Dim root
Dim folder
Sub New()
InitializeComponent()
sourcepath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
FILE_NAME = sourcepath & "\myaccestoken.txt"
root = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
folder = root & "\Dropbox"
End Sub
Private Sub menuutama_Load(sender As Object, e As EventArgs) Handles MyBase.Load
storedaccesstoken = My.Computer.FileSystem.ReadAllText(FILE_NAME)
If Not FileLen(FILE_NAME) = 0 Then
Dim A As New DropboxClient(storedaccesstoken)
Dim info = A.Users.GetCurrentAccountAsync
akun.Text = "Name : " & info.Result.Name.DisplayName & vbCrLf
akun.Text += "Email : " & info.Result.Email & vbCrLf
Dim Space = A.Users.GetSpaceUsageAsync
ruangkosong.Text = "Used Spaces : " & filesize(Space.Result.Used) & " From " & filesize(Space.Result.Allocation.AsIndividual.Value.Allocated)
For Each File In A.Files.ListFolderAsync(String.Empty).Result.Entries()
Dim NewItem As New ListViewItem
NewItem.Text = Path.GetFileName(File.Name)
If File.IsFolder Then
NewItem.SubItems.Add("Directory")
NewItem.ImageIndex = 1
Else
NewItem.SubItems.Add("File")
NewItem.SubItems.Add(filesize(File.AsFile.Size))
NewItem.ImageIndex = 2
End If
listfile.Items.Add(NewItem)
Next
End If
End Sub
'membuat fungsi filesize dimana mengambil ukuran dari file yang nanti kita pilih
Private Function filesize(ByVal size As Double) As String
Dim type As String() = {"B", "KB", "MB", "GB"}
Dim sizedouble As Double = size
Dim CSA As Integer = 0
While sizedouble >= 1024 AndAlso CSA + 1 < type.Length
CSA += 1
sizedouble = sizedouble / 1024
End While
Return [String].Format("{0:0.##} {1}", sizedouble, type(CSA))
End Function
Private Sub UploadToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles UploadToolStripMenuItem1.Click
Using FolderBrowserDialog As New FolderBrowserDialog
If FolderBrowserDialog.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
Dim alamat As String = FolderBrowserDialog.SelectedPath
Dim nama As String = New DirectoryInfo(alamat).Name
Dim FileCount As Integer = 0
My.Computer.FileSystem.CopyDirectory(alamat, folder & "/" + nama, True)
MsgBox("Successfully Uploaded")
End Using
listfile.Items.Clear()
For Each File In A.Files.ListFolderAsync(String.Empty).Result.Entries()
Dim NewItem As New ListViewItem
NewItem.Text = Path.GetFileName(File.Name)
If File.IsFolder Then
NewItem.SubItems.Add("Directory")
NewItem.ImageIndex = 1
Else
NewItem.SubItems.Add("File")
NewItem.SubItems.Add(filesize(File.AsFile.Size))
NewItem.ImageIndex = 2
End If
listfile.Items.Add(NewItem)
Next
End Sub
Private Sub listfile_DoubleClick(sender As Object, e As EventArgs) Handles listfile.DoubleClick
For Each C As ListViewItem In listfile.SelectedItems
On Error Resume Next
If C.Text = "..." Then
listfile.Items.Clear()
If Not direktori.Text.Substring(0, direktori.Text.LastIndexOf("/")) = Nothing Then
Dim NewItem As New ListViewItem
NewItem.Text = "..."
NewItem.ImageIndex = 2
listfile.Items.Add(NewItem)
End If
direktori.Text = direktori.Text.Substring(0, direktori.Text.LastIndexOf("/"))
For Each File In A.Files.ListFolderAsync(direktori.Text).Result.Entries
Dim NewItem As New ListViewItem
NewItem.Text = Path.GetFileName(File.Name)
If File.IsFolder Then
NewItem.SubItems.Add("Directory")
NewItem.ImageIndex = 0
Else
NewItem.SubItems.Add("File")
NewItem.SubItems.Add(filesize(File.AsFile.Size))
NewItem.ImageIndex = 1
End If
listfile.Items.Add(NewItem)
Next
Else
listfile.Items.Clear()
Dim back As New ListViewItem
back.Text = "..."
back.ImageIndex = 2
listfile.Items.Add(back)
direktori.Text += "/" & C.Text
For Each File In A.Files.ListFolderAsync(direktori.Text).Result.Entries
Dim NewItem As New ListViewItem
NewItem.Text = Path.GetFileName(File.Name)
If File.IsFolder Then
NewItem.SubItems.Add("Directory")
NewItem.ImageIndex = 0
Else
NewItem.SubItems.Add("File")
NewItem.SubItems.Add(filesize(File.AsFile.Size))
NewItem.ImageIndex = 1
End If
listfile.Items.Add(NewItem)
Next
End If
Next
End Sub
Private Sub LoginToolStripMenuItem_Click(sender As Object, e As EventArgs)
End Sub
Private Sub CountFiles(InFolder As String, ByRef Result As Integer)
Result += IO.Directory.GetFiles(InFolder).Count
For Each f As String In IO.Directory.GetDirectories(InFolder)
CountFiles(f, Result)
Next
End Sub
Private Sub LogoutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LogoutToolStripMenuItem.Click
Dim wHeader As WebHeaderCollection = New WebHeaderCollection()
Dim wProxy As IWebProxy = WebRequest.GetSystemWebProxy()
wProxy.Credentials = System.Net.CredentialCache.DefaultCredentials
wHeader.Clear()
wHeader.Add("Authorization: Bearer " + storedaccesstoken)
Dim sUrl As String = "https://api.dropboxapi.com/2/auth/token/revoke"
Dim wRequest As HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create(sUrl), HttpWebRequest)
wRequest.Headers = wHeader
wRequest.Method = "POST"
wRequest.Proxy = wProxy
Dim wResponse As HttpWebResponse = DirectCast(wRequest.GetResponse(), HttpWebResponse)
Dim sResponse As String = ""
Using srRead As New StreamReader(wResponse.GetResponseStream())
sResponse = srRead.ReadToEnd()
End Using
If System.IO.File.Exists(FILE_NAME) = True Then
System.IO.File.Delete(FILE_NAME)
End If
Dim login As New Login
login.Show()
Me.Close()
End Sub
Private Sub CobaToolStripMenuItem_Click(sender As Object, e As EventArgs)
Using FolderBrowserDialog As New FolderBrowserDialog
If FolderBrowserDialog.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
Dim alamat As String = FolderBrowserDialog.SelectedPath
Dim nama As String = New DirectoryInfo(alamat).Name
Dim FileCount As Integer = 0
My.Computer.FileSystem.CopyDirectory(alamat, folder & "/" + nama, True)
End Using
End Sub
Private Sub GetShareLinkToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GetShareLinkToolStripMenuItem.Click
For Each C As ListViewItem In listfile.SelectedItems
Dim GetLink = A.Sharing.CreateSharedLinkAsync(direktori.Text & "/" & C.Text)
MsgBox(GetLink.Result.Url)
Dim Path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim FILE_NAME = Path & "\link.txt"
If System.IO.File.Exists(FILE_NAME) = False Then
System.IO.File.Create(FILE_NAME).Dispose()
End If
Dim objWriter As New System.IO.StreamWriter(FILE_NAME, False)
objWriter.Write(GetLink.Result.Url.ToString)
objWriter.Close()
Next
End Sub
Private Sub DeleteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DeleteToolStripMenuItem.Click
For Each C As ListViewItem In listfile.SelectedItems
Dim Del = A.Files.DeleteAsync(direktori.Text & "/" & C.Text)
C.Remove()
MsgBox("Successully Deleted")
Next
End Sub
Private Sub UploadToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles UploadToolStripMenuItem2.Click
Dim C As New OpenFileDialog
C.Title = "Choose File"
C.Filter = "All Files (*.*)|*.*"
If C.ShowDialog = Windows.Forms.DialogResult.OK Then
UploadFile(C.FileName)
End If
End Sub
Async Sub UploadFile(Filepath As String)
Dim Up = Await A.Files.UploadAsync(direktori.Text & "/" & Path.GetFileName(Filepath), body:=(New FileStream(Filepath, FileMode.Open, FileAccess.Read)))
Dim NewItem As New ListViewItem
NewItem.Text = Path.GetFileName(Up.Name)
NewItem.SubItems.Add("File")
NewItem.SubItems.Add(filesize(Up.Size))
NewItem.ImageIndex = 1
listfile.Items.Add(NewItem)
MsgBox("Successfully Uploaded")
End Sub
Private Sub DownloadToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles DownloadToolStripMenuItem2.Click
For Each D As ListViewItem In listfile.SelectedItems
Dim C As New SaveFileDialog
C.Title = " Save File To"
C.Filter = "All Files (*.*)|*.*"
C.FileName = Path.GetFileName(D.Text)
If C.ShowDialog = Windows.Forms.DialogResult.OK Then
DownloadFile(D.Text, C.FileName)
End If
Next
End Sub
Async Sub DownloadFile(Filepath As String, Final As String)
Dim Down = Await A.Files.DownloadAsync(direktori.Text & "/" & Path.GetFileName(Filepath))
File.WriteAllBytes(Final, Await Down.GetContentAsByteArrayAsync)
MsgBox("Successfully Downloaded")
End Sub
End Class