1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- //
- // QNUpToken.m
- // QiniuSDK
- //
- // Created by bailong on 15/6/7.
- // Copyright (c) 2015年 Qiniu. All rights reserved.
- //
- #import "QNUrlSafeBase64.h"
- #import "QNUpToken.h"
- @interface QNUpToken ()
- - (instancetype)init:(NSDictionary *)policy token:(NSString *)token;
- @end
- @implementation QNUpToken
- - (instancetype)init:(NSDictionary *)policy token:(NSString *)token {
- if (self = [super init]) {
- _token = token;
- _access = [self getAccess];
- _bucket = [self getBucket:policy];
- _hasReturnUrl = (policy[@"returnUrl"] != nil);
- }
- return self;
- }
- - (NSString *)getAccess {
- NSRange range = [_token rangeOfString:@":" options:NSCaseInsensitiveSearch];
- return [_token substringToIndex:range.location];
- }
- - (NSString *)getBucket:(NSDictionary *)info {
- NSString *scope = [info objectForKey:@"scope"];
- if (!scope || [scope isKindOfClass:[NSNull class]]) {
- return @"";
- }
- NSRange range = [scope rangeOfString:@":"];
- if (range.location == NSNotFound) {
- return scope;
- }
- return [scope substringToIndex:range.location];
- }
- + (instancetype)parse:(NSString *)token {
- if (token == nil) {
- return nil;
- }
- NSArray *array = [token componentsSeparatedByString:@":"];
- if (array == nil || array.count != 3) {
- return nil;
- }
- NSData *data = [QNUrlSafeBase64 decodeString:array[2]];
- NSError *tmp = nil;
- NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&tmp];
- if (tmp != nil || dict[@"scope"] == nil || dict[@"deadline"] == nil) {
- return nil;
- }
- return [[QNUpToken alloc] init:dict token:token];
- }
- - (NSString *)index {
- return [NSString stringWithFormat:@"%@:%@", _access, _bucket];
- }
- @end
|