Bläddra i källkod

add credential id

tags/2.0.0-beta.1
jyong 2 månader sedan
förälder
incheckning
fcdbfbda4f

+ 19
- 18
api/core/datasource/entities/datasource_entities.py Visa fil





######################### #########################
# Online driver file
# Online drive file
######################### #########################




class OnlineDriveFile(BaseModel): class OnlineDriveFile(BaseModel):
""" """
Online driver file
Online drive file
""" """


key: str = Field(..., description="The key of the file")
size: int = Field(..., description="The size of the file")
id: str = Field(..., description="The file ID")
name: str = Field(..., description="The file name")
size: int = Field(..., description="The file size")
type: str = Field(..., description="The file type: folder or file")




class OnlineDriveFileBucket(BaseModel): class OnlineDriveFileBucket(BaseModel):
""" """
Online driver file bucket
Online drive file bucket
""" """


bucket: Optional[str] = Field(None, description="The bucket of the file")
files: list[OnlineDriveFile] = Field(..., description="The files of the bucket")
is_truncated: bool = Field(False, description="Whether the bucket has more files")
bucket: Optional[str] = Field(None, description="The file bucket")
files: list[OnlineDriveFile] = Field(..., description="The file list")
is_truncated: bool = Field(False, description="Whether the result is truncated")
next_page_parameters: Optional[dict] = Field(None, description="Parameters for fetching the next page")




class OnlineDriveBrowseFilesRequest(BaseModel): class OnlineDriveBrowseFilesRequest(BaseModel):
""" """
Get online driver file list request
Get online drive file list request
""" """


prefix: Optional[str] = Field(None, description="File path prefix for filtering eg: 'docs/dify/'")
bucket: Optional[str] = Field(None, description="Storage bucket name")
max_keys: int = Field(20, description="Maximum number of files to return")
start_after: Optional[str] = Field(
None, description="Pagination token for continuing from a specific file eg: 'docs/dify/1.txt'"
)
bucket: Optional[str] = Field(None, description="The file bucket")
prefix: str = Field(..., description="The parent folder ID")
max_keys: int = Field(20, description="Page size for pagination")
next_page_parameters: Optional[dict] = Field(None, description="Parameters for fetching the next page")




class OnlineDriveBrowseFilesResponse(BaseModel): class OnlineDriveBrowseFilesResponse(BaseModel):
""" """
Get online driver file list response
Get online drive file list response
""" """


result: list[OnlineDriveFileBucket] = Field(..., description="The bucket of the files")
result: list[OnlineDriveFileBucket] = Field(..., description="The list of file buckets")




class OnlineDriveDownloadFileRequest(BaseModel): class OnlineDriveDownloadFileRequest(BaseModel):
""" """
Get online driver file
Get online drive file
""" """


id: str = Field(..., description="The id of the file") id: str = Field(..., description="The id of the file")

+ 37
- 38
api/services/datasource_provider_service.py Visa fil

# refresh the credentials # refresh the credentials
real_credentials_list = [] real_credentials_list = []
for datasource_provider in datasource_providers: for datasource_provider in datasource_providers:
if datasource_provider.expires_at != -1 and (datasource_provider.expires_at - 60) < int(time.time()):
decrypted_credentials = self.decrypt_datasource_provider_credentials(
tenant_id=tenant_id,
datasource_provider=datasource_provider,
plugin_id=plugin_id,
provider=provider,
)
datasource_provider_id = DatasourceProviderID(f"{plugin_id}/{provider}")
provider_name = datasource_provider_id.provider_name
redirect_uri = (
f"{dify_config.CONSOLE_API_URL}/console/api/oauth/plugin/"
f"{datasource_provider_id}/datasource/callback"
)
system_credentials = self.get_oauth_client(tenant_id, datasource_provider_id)
refreshed_credentials = OAuthHandler().refresh_credentials(
tenant_id=tenant_id,
user_id=current_user.id,
plugin_id=datasource_provider_id.plugin_id,
provider=provider_name,
redirect_uri=redirect_uri,
system_credentials=system_credentials or {},
credentials=decrypted_credentials,
)
datasource_provider.encrypted_credentials = self.encrypt_datasource_provider_credentials(
tenant_id=tenant_id,
raw_credentials=refreshed_credentials.credentials,
provider=provider,
plugin_id=plugin_id,
datasource_provider=datasource_provider,
)
datasource_provider.expires_at = refreshed_credentials.expires_at
real_credentials = self.decrypt_datasource_provider_credentials(
tenant_id=tenant_id,
datasource_provider=datasource_provider,
plugin_id=plugin_id,
provider=provider,
)
real_credentials_list.append(real_credentials)
decrypted_credentials = self.decrypt_datasource_provider_credentials(
tenant_id=tenant_id,
datasource_provider=datasource_provider,
plugin_id=plugin_id,
provider=provider,
)
datasource_provider_id = DatasourceProviderID(f"{plugin_id}/{provider}")
provider_name = datasource_provider_id.provider_name
redirect_uri = (
f"{dify_config.CONSOLE_API_URL}/console/api/oauth/plugin/"
f"{datasource_provider_id}/datasource/callback"
)
system_credentials = self.get_oauth_client(tenant_id, datasource_provider_id)
refreshed_credentials = OAuthHandler().refresh_credentials(
tenant_id=tenant_id,
user_id=current_user.id,
plugin_id=datasource_provider_id.plugin_id,
provider=provider_name,
redirect_uri=redirect_uri,
system_credentials=system_credentials or {},
credentials=decrypted_credentials,
)
datasource_provider.encrypted_credentials = self.encrypt_datasource_provider_credentials(
tenant_id=tenant_id,
raw_credentials=refreshed_credentials.credentials,
provider=provider,
plugin_id=plugin_id,
datasource_provider=datasource_provider,
)
datasource_provider.expires_at = refreshed_credentials.expires_at
real_credentials = self.decrypt_datasource_provider_credentials(
tenant_id=tenant_id,
datasource_provider=datasource_provider,
plugin_id=plugin_id,
provider=provider,
)
real_credentials_list.append(real_credentials)
session.commit() session.commit()


return real_credentials_list return real_credentials_list

Laddar…
Avbryt
Spara