DiscogsAPI 1.8.0

DiscogsAPI 1.8.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2017年10月

Maxime Epain 维护。



Discogs API v2.0 的 Objective-C 接口。

该实现基于 RestKit v0.27.0

功能

  • 支持 OAuth 流程并在密钥链中存储令牌。
  • 支持 Discogs 认证。
  • 数据库支持:发布、主发布、主发布版本、艺术家、艺术家发布、标签、所有标签发布、搜索。
  • 用户支持:识别、个人资料、收藏、愿望清单。
  • 市场:库存、列表。
  • 图像支持。
Podfile
pod 'DiscogsAPI'

用法

如果您想尝试它,只需运行

pod try DiscogsAPI

或者克隆仓库,然后在 Example 目录中运行 pod install

认证

配置您的项目 .plist 文件

右击您的 .plist 文件,选择 "将文件作为源代码打开"。将 XML 片段复制并粘贴到文件的主体中(<dict>...</dict>)。您可以使用键/密钥对或您自己的个人访问令牌(您可以在您的 个人设置 中创建它们)。

密钥/密钥

将 DISCOGS_APP_CONSUMER_KEY 和 DISCOGS_APP_CONSUMER_SECRET 替换为您 Discogs 应用消费者的密钥和密钥。

<key>DiscogsConsumerKey</key>
<string>DISCOGS_APP_CONSUMER_Key</string>
<key>DiscogsConsumerSecret</key>
<string>DISCOGS_APP_CONSUMER_SECRET</string>
个人访问令牌

将 DISCOGS_PERSONAL_ACCESS_TOKEN 替换为您个人访问令牌。

<key>DiscogsAccessToken</key>
<string>DISCOGS_PERSONAL_ACCESS_TOKEN</string>

认证流程

Discogs 支持两种认证方法:Discogs 认证和 OAuth。有关更多详细信息,请参阅 文档

Discogs 认证

键/密钥或您的个人访问令牌将自动从您的项目配置中检索出来并在您的请求头中使用。您不需要做任何事情。

OAuth

OAuth 流程由 'authentication' 端点全部处理。您只需显示 'authView' 视图,让用户输入其凭据并授权应用程序。令牌将自动存储在密钥链中。

    [Discogs.api.authentication authenticateWithPreparedAuthorizationViewHandler:^(UIView *authView) {

        // Show the authView

    } success:^{
        NSLog(@"The user has been successfully authentified");
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];

数据库

以下示例展示了如何通过API访问Discogs数据库对象。

发布
    [Discogs.api.database getRelease:@249504 success:^(DGRelease *release) {
        NSLog(@"Release: %@", release);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
主发布
    [Discogs.api.database getMaster:@1000 success:^(DGMaster *master) {
        NSLog(@"Master: %@", master);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
主发布版本
    DGMasterVersionsRequest *request = [DGMasterVersionsRequest new];
    request.masterID = @1000;
    request.pagination.page = @3;
    request.pagination.perPage = @25;

    [Discogs.api.database getMasterVersion:request success:^(DGMasterVersionsResponse *response) {
        NSLog(@"Versions: %@", response.versions);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
艺术家
    [Discogs.api.database getArtist:@108713 success:^(DGArtist *artist) {
        NSLog(@"Artist: %@", artist);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
艺术家发布
    DGArtistReleasesRequest *request = [DGArtistReleasesRequest new];
    request.artistID = @108713;
    request.pagination.page = @3;
    request.pagination.perPage = @25;

    [Discogs.api.database getArtistReleases:request success:^(DGArtistReleasesResponse *response) {
        NSLog(@"Releases: %@", response.releases);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
厂牌
    [Discogs.api.database getLabel:@1 success:^(DGLabel *label) {
        NSLog(@"Label: %@", label);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
厂牌发布
    DGLabelReleasesRequest *request = [DGLabelReleasesRequest new];
    request.labelID = @1;
    request.pagination.page = @3;
    request.pagination.perPage = @25;

    [Discogs.api.database getLabelReleases:request success:^(DGLabelReleasesResponse *response) {
        NSLog(@"Releases: %@", response.releases);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
搜索
    DGSearchRequest *request = [DGSearchRequest new];
    request.query = @"Cool band";
    request.type = @"artist";
    request.pagination.perPage = @25;

    [Discogs.api.database searchFor:request success:^(DGSearchResponse *response) {
        NSLog(@"Results: %@", response.results);
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];

分页

从分页响应中,通过DGPaginated协议可以轻松加载下一页。

    [response loadNextPageWithSuccess:^{
        // Update UI
    } failure:^(NSError * _Nullable error) {
        NSLog(@"Error : %@", error);
    }];

更多使用方法

详细的用法说明可在Wiki中找到。

文档

文档可通过CocoaDocs获得。

作者

Maxime Epain

许可协议

DiscogsAPI受MIT许可证保护。更多信息请参阅LICENSE