Estou trabalhando em um projeto em que o usuário entra em um "stream". Durante a configuração do stream, a pessoa que está criando o stream (o criador do stream) pode escolher:
No futuro, gostaria de adicionar mais provedores de armazenamento (como Drive, Onesky etc)
Tenho algumas perguntas diferentes a respeito de como resolver isso.
No que diz respeito ao armazenamento do banco de dados, seu aplicativo deve ditar a estrutura com base na interface que você apresenta ao usuário e ao fluxo. Se você tem usuários que carregam uma foto e eles não podem escolher o URI, e você não tem nenhuma hierarquia dentro de um stream, então eu recomendo armazenar apenas um ID e um stream_id em sua tabela de fotos principal.
Portanto, no mínimo, você pode ter algo parecido com
create table photos(id integer primary key, stream_id integer references streams(id) not null);
Mas você provavelmente também deseja uma descrição e outras informações que sejam independentes do armazenamento.
A tabela de fluxos teria todas as informações genéricas sobre um fluxo, mas teria uma associação polimórfica a uma classe dependente do tipo de fluxo. Portanto, você pode usar essa associação para obter uma instância de S3Stream ou DropBoxStream com base em qual fluxo real foi usado. Essa instância (também um recurso ActiveRecord) pode armazenar a chave de acesso e, para coisas como caixa de depósito, o caminho para a pasta etc. Além disso, essa instância pode fornecer métodos para construir um URI dado seu objeto Photo. Se uma tecnologia específica precisar armazenar URIs assinados em cache, digamos que o objeto S3Stream poderia fazer referência a um modelo S3SignedUrl onde os URIs são assinados. Se descobrir que o código de URL assinado é semelhante entre DropBox e S3, então talvez você tenha um único modelo SignedUrl.
Ao projetar os clientes ios e Android, é fundamental que eles não tenham acesso aos tokens de acesso do proprietário do stream. Em vez disso, você precisará fazer toda a assinatura dentro de seu aplicativo de servidor. Você não gostaria que o comprometimento de um dispositivo levasse à exposição do token de acesso, criando problemas de cobrança, bem como exposições de privacidade. Espero que isto ajude.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras